diff options
-rw-r--r-- | src/mm-broadband-modem.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/src/mm-broadband-modem.c b/src/mm-broadband-modem.c index 6f06b8f3..c4140015 100644 --- a/src/mm-broadband-modem.c +++ b/src/mm-broadband-modem.c @@ -12660,21 +12660,25 @@ enable (MMBaseModem *self, /* Check state before launching modem enabling */ switch (MM_BROADBAND_MODEM (self)->priv->modem_state) { case MM_MODEM_STATE_UNKNOWN: - /* We should never have a UNKNOWN->ENABLED transition */ - g_assert_not_reached (); - break; + /* We may have a UNKNOWN->ENABLED transition here if the request + * comes after having flagged the modem as invalid. Just error out + * gracefully. */ + g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE, + "Cannot enable modem: unknown state"); + g_object_unref (task); + return; case MM_MODEM_STATE_FAILED: g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE, "Cannot enable modem: initialization failed"); g_object_unref (task); - break; + return; case MM_MODEM_STATE_LOCKED: g_task_return_new_error (task, MM_CORE_ERROR, MM_CORE_ERROR_WRONG_STATE, "Cannot enable modem: device locked"); g_object_unref (task); - break; + return; case MM_MODEM_STATE_INITIALIZING: case MM_MODEM_STATE_DISABLED: @@ -12684,7 +12688,7 @@ enable (MMBaseModem *self, case MM_MODEM_STATE_ENABLING: g_assert_not_reached (); - break; + return; case MM_MODEM_STATE_ENABLED: case MM_MODEM_STATE_SEARCHING: @@ -12695,7 +12699,7 @@ enable (MMBaseModem *self, /* Just return success, don't relaunch enabling */ g_task_return_boolean (task, TRUE); g_object_unref (task); - break; + return; default: g_assert_not_reached (); |