diff options
-rw-r--r-- | src/mm-iface-modem.c | 31 |
1 files changed, 20 insertions, 11 deletions
diff --git a/src/mm-iface-modem.c b/src/mm-iface-modem.c index 2067c7468..587afc27b 100644 --- a/src/mm-iface-modem.c +++ b/src/mm-iface-modem.c @@ -2185,6 +2185,7 @@ set_modes_ready (MMIfaceModem *self, GAsyncResult *res, SetModesContext *ctx) { + MMModemState modem_state; GError *error = NULL; if (!MM_IFACE_MODEM_GET_INTERFACE (self)->set_modes_finish (self, res, &error)) { @@ -2193,19 +2194,27 @@ set_modes_ready (MMIfaceModem *self, return; } - if (MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_current_modes && - MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_current_modes_finish) { - MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_current_modes ( - ctx->self, - (GAsyncReadyCallback)after_set_load_current_modes_ready, - ctx); - return; + /* If modem is not enabled, avoid updating the current modes */ + modem_state = MM_MODEM_STATE_UNKNOWN; + g_object_get (ctx->self, + MM_IFACE_MODEM_STATE, &modem_state, + NULL); + if (modem_state >= MM_MODEM_STATE_ENABLING) { + if (MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_current_modes && + MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_current_modes_finish) { + MM_IFACE_MODEM_GET_INTERFACE (ctx->self)->load_current_modes ( + ctx->self, + (GAsyncReadyCallback)after_set_load_current_modes_ready, + ctx); + return; + } + + mm_gdbus_modem_set_modes (ctx->skeleton, + g_variant_new ("(uu)", + ctx->allowed, + ctx->preferred)); } - mm_gdbus_modem_set_modes (ctx->skeleton, - g_variant_new ("(uu)", - ctx->allowed, - ctx->preferred)); g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE); set_modes_context_complete_and_free (ctx); } |