From 418b83c3629cf40eaa45ab6fcf152fcb8ed0b02f Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Mon, 13 Jun 2022 12:24:43 +0200 Subject: [PATCH] modemmanager: explicitly disconnect even if no bearers found A network restart where netifd is cleanly restarted involves bringing the network interfaces down. The 'modemmanager' protocol handler will run a mmcli --simple-disconnect in this case, but only if there are bearer objects found. If the network restart happened *during* the connection attempt procedure, while the modem is e.g. being registered in the network, no bearer objects exist yet, and so, we would skip doing anything during the interface teardown operation. This would lead to the original connection attempt succeeding, so leaving the modem in ModemManager in connected state, while the associated interface in netifd is reported down. Signed-off-by: Aleksander Morgado --- net/modemmanager/files/modemmanager.proto | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/modemmanager/files/modemmanager.proto b/net/modemmanager/files/modemmanager.proto index d24910b9..855060f0 100755 --- a/net/modemmanager/files/modemmanager.proto +++ b/net/modemmanager/files/modemmanager.proto @@ -515,7 +515,8 @@ proto_modemmanager_teardown() { modemstatus=$(mmcli --modem="${device}" --output-keyvalue) bearerpath=$(modemmanager_get_field "${modemstatus}" "modem.generic.bearers.value\[1\]") [ -n "${bearerpath}" ] || { - echo "couldn't load bearer path" + echo "couldn't load bearer path: disconnecting anyway" + mmcli --modem="${device}" --simple-disconnect >/dev/null 2>&1 return }