aboutsummaryrefslogtreecommitdiff
path: root/plugins/mm-modem-icera.c
diff options
context:
space:
mode:
authorMichael Biebl <biebl@debian.org>2011-06-16 17:12:41 +0200
committerGuido Günther <agx@sigxcpu.org>2014-02-05 08:38:26 +0100
commit59ed3390b9a798ff8bf9133cbc28c4539ad99f42 (patch)
tree2009d57abbd0061b4ee230516e004eb83509aac5 /plugins/mm-modem-icera.c
parentbbf8a053e07c66f336ed46a7fb6105dc30645596 (diff)
parent3dbe8df8bfe8741e1b9a48b56e41517816f17dc1 (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.c59
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);
}