diff options
| author | Michael Biebl <biebl@debian.org> | 2016-05-11 17:08:25 +0200 |
|---|---|---|
| committer | Michael Biebl <biebl@debian.org> | 2016-05-11 17:08:25 +0200 |
| commit | 73e152af6e3fb4f5848bfb8394484026ff119003 (patch) | |
| tree | d5a8b37778d3a95c51511451b38b6a329b94cb41 /src/devices/wwan | |
| parent | 78c3b8801ecf4975e5da1af3b10ae20dd2d876de (diff) | |
Imported Upstream version 1.2.2 upstream/1.2.2
Diffstat (limited to 'src/devices/wwan')
| -rw-r--r-- | src/devices/wwan/nm-modem-broadband.c | 23 | ||||
| -rw-r--r-- | src/devices/wwan/nm-modem.c | 3 |
2 files changed, 20 insertions, 6 deletions
diff --git a/src/devices/wwan/nm-modem-broadband.c b/src/devices/wwan/nm-modem-broadband.c index 9539fefd..1a6e6b25 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,17 @@ connect_ready (MMModemSimple *simple_iface, static void send_pin_ready (MMSim *sim, GAsyncResult *result, NMModemBroadband *self) { - GError *error = NULL; + gs_free_error GError *error = NULL; + + mm_sim_send_pin_finish (sim, result, &error); + + if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) + return; + + if (!self->priv->ctx || self->priv->ctx->step != CONNECT_STEP_UNLOCK) + return; - if (!mm_sim_send_pin_finish (sim, result, &error)) { + 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)) { @@ -387,9 +399,8 @@ send_pin_ready (MMSim *sim, GAsyncResult *result, NMModemBroadband *self) } else { g_signal_emit_by_name (self, NM_MODEM_PREPARE_RESULT, FALSE, translate_mm_error (error)); } - g_error_free (error); return; - } + } self->priv->ctx->step++; connect_context_step (self); @@ -1079,14 +1090,16 @@ simple_disconnect_ready (MMModemSimple *modem_iface, } static void -disconnect (NMModem *self, +disconnect (NMModem *modem, gboolean warn, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { + NMModemBroadband *self = NM_MODEM_BROADBAND (modem); DisconnectContext *ctx; + connect_context_clear (self); ctx = g_slice_new (DisconnectContext); ctx->self = g_object_ref (self); ctx->result = g_simple_async_result_new (G_OBJECT (self), diff --git a/src/devices/wwan/nm-modem.c b/src/devices/wwan/nm-modem.c index 804a6d9c..a6c77007 100644 --- a/src/devices/wwan/nm-modem.c +++ b/src/devices/wwan/nm-modem.c @@ -1187,6 +1187,7 @@ nm_modem_device_state_changed (NMModem *self, case NM_DEVICE_STATE_UNMANAGED: case NM_DEVICE_STATE_UNAVAILABLE: case NM_DEVICE_STATE_FAILED: + case NM_DEVICE_STATE_DISCONNECTED: if (priv->act_request) { cancel_get_secrets (self); g_object_unref (priv->act_request); @@ -1195,7 +1196,7 @@ nm_modem_device_state_changed (NMModem *self, if (was_connected) { /* Don't bother warning on FAILED since the modem is already gone */ - if (new_state == NM_DEVICE_STATE_FAILED) + if (new_state == NM_DEVICE_STATE_FAILED || new_state == NM_DEVICE_STATE_DISCONNECTED) warn = FALSE; /* First cleanup */ NM_MODEM_GET_CLASS (self)->deactivate_cleanup (self, NULL); |