diff --git a/src/devices/wwan/nm-modem-broadband.c b/src/devices/wwan/nm-modem-broadband.c index 9539fefd3d..717b6e6872 100644 --- a/src/devices/wwan/nm-modem-broadband.c +++ b/src/devices/wwan/nm-modem-broadband.c @@ -310,6 +310,10 @@ connect_ready (MMModemSimple *simple_iface, NMModemIPMethod ip6_method = NM_MODEM_IP_METHOD_UNKNOWN; self->priv->bearer = mm_modem_simple_connect_finish (simple_iface, res, &error); + + if (!ctx) + return; + if (!self->priv->bearer) { if (g_error_matches (error, MM_MOBILE_EQUIPMENT_ERROR, MM_MOBILE_EQUIPMENT_ERROR_SIM_PIN) || (g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_UNAUTHORIZED) && @@ -377,9 +381,14 @@ connect_ready (MMModemSimple *simple_iface, static void send_pin_ready (MMSim *sim, GAsyncResult *result, NMModemBroadband *self) { - GError *error = NULL; + GError *error = NULL; - if (!mm_sim_send_pin_finish (sim, result, &error)) { + mm_sim_send_pin_finish (sim, result, &error); + + if (!self->priv->ctx || self->priv->ctx->step != CONNECT_STEP_UNLOCK) + return; + + if (error) { if (g_error_matches (error, MM_MOBILE_EQUIPMENT_ERROR, MM_MOBILE_EQUIPMENT_ERROR_SIM_PIN) || (g_error_matches (error, MM_CORE_ERROR, MM_CORE_ERROR_UNAUTHORIZED) && mm_modem_get_unlock_required (self->priv->modem_iface) == MM_MODEM_LOCK_SIM_PIN)) { @@ -389,7 +398,7 @@ send_pin_ready (MMSim *sim, GAsyncResult *result, NMModemBroadband *self) } g_error_free (error); return; - } + } self->priv->ctx->step++; connect_context_step (self);