diff options
author | Michael Biebl <biebl@debian.org> | 2011-06-16 17:12:41 +0200 |
---|---|---|
committer | Guido Günther <agx@sigxcpu.org> | 2014-02-05 08:38:26 +0100 |
commit | 59ed3390b9a798ff8bf9133cbc28c4539ad99f42 (patch) | |
tree | 2009d57abbd0061b4ee230516e004eb83509aac5 /plugins/mm-modem-icera.c | |
parent | bbf8a053e07c66f336ed46a7fb6105dc30645596 (diff) | |
parent | 3dbe8df8bfe8741e1b9a48b56e41517816f17dc1 (diff) |
Imported Debian patch 0.4.997-1debian/0.4.997-1
Diffstat (limited to 'plugins/mm-modem-icera.c')
-rw-r--r-- | plugins/mm-modem-icera.c | 59 |
1 files changed, 54 insertions, 5 deletions
diff --git a/plugins/mm-modem-icera.c b/plugins/mm-modem-icera.c index d34e71e..b093b34 100644 --- a/plugins/mm-modem-icera.c +++ b/plugins/mm-modem-icera.c @@ -56,6 +56,11 @@ get_allowed_mode_done (MMAtSerialPort *port, MMCallbackInfo *info = (MMCallbackInfo *) user_data; gboolean parsed = FALSE; + /* If the modem has already been removed, return without + * scheduling callback */ + if (mm_callback_info_check_modem_removed (info)) + return; + if (error) info->error = g_error_copy (error); else if (!g_str_has_prefix (response->str, "%IPSYS: ")) { @@ -119,6 +124,11 @@ set_allowed_mode_done (MMAtSerialPort *port, { MMCallbackInfo *info = (MMCallbackInfo *) user_data; + /* If the modem has already been removed, return without + * scheduling callback */ + if (mm_callback_info_check_modem_removed (info)) + return; + if (error) info->error = g_error_copy (error); @@ -235,8 +245,14 @@ get_nwstate_done (MMAtSerialPort *port, { MMCallbackInfo *info = user_data; - info->error = mm_modem_check_removed (info->modem, error); - if (!info->error) { + /* If the modem has already been removed, return without + * scheduling callback */ + if (mm_callback_info_check_modem_removed (info)) + return; + + if (error) + info->error = g_error_copy (error); + else { MMModemIcera *self = MM_MODEM_ICERA (info->modem); MMModemIceraPrivate *priv = MM_MODEM_ICERA_GET_PRIVATE (self); @@ -277,7 +293,14 @@ disconnect_ipdpact_done (MMAtSerialPort *port, GError *error, gpointer user_data) { - mm_callback_info_schedule ((MMCallbackInfo *) user_data); + MMCallbackInfo *info = (MMCallbackInfo *) user_data; + + /* If the modem has already been removed, return without + * scheduling callback */ + if (mm_callback_info_check_modem_removed (info)) + return; + + mm_callback_info_schedule (info); } void @@ -458,6 +481,11 @@ icera_connected (MMAtSerialPort *port, { MMCallbackInfo *info = (MMCallbackInfo *) user_data; + /* If the modem has already been removed, return without + * scheduling callback */ + if (mm_callback_info_check_modem_removed (info)) + return; + if (error) { mm_generic_gsm_connect_complete (MM_GENERIC_GSM (info->modem), error, info); } else { @@ -481,6 +509,11 @@ old_context_clear_done (MMAtSerialPort *port, { MMCallbackInfo *info = (MMCallbackInfo *) user_data; + /* If the modem has already been removed, return without + * scheduling callback */ + if (mm_callback_info_check_modem_removed (info)) + return; + /* Activate the PDP context and start the data session */ icera_call_control (MM_MODEM_ICERA (info->modem), TRUE, icera_connected, info); } @@ -493,6 +526,11 @@ auth_done (MMAtSerialPort *port, { MMCallbackInfo *info = (MMCallbackInfo *) user_data; + /* If the modem has already been removed, return without + * scheduling callback */ + if (mm_callback_info_check_modem_removed (info)) + return; + if (error) mm_generic_gsm_connect_complete (MM_GENERIC_GSM (info->modem), error, info); else { @@ -574,6 +612,11 @@ get_ip4_config_done (MMAtSerialPort *port, guint32 tmp; gint cid; + /* If the modem has already been removed, return without + * scheduling callback */ + if (mm_callback_info_check_modem_removed (info)) + return; + if (error) { info->error = g_error_copy (error); goto out; @@ -710,8 +753,14 @@ is_icera_done (MMAtSerialPort *port, { MMCallbackInfo *info = user_data; - info->error = mm_modem_check_removed (info->modem, error); - if (!info->error) + /* If the modem has already been removed, return without + * scheduling callback */ + if (mm_callback_info_check_modem_removed (info)) + return; + + if (error) + info->error = g_error_copy (error); + else mm_callback_info_set_result (info, GUINT_TO_POINTER (TRUE), NULL); mm_callback_info_schedule (info); } |