aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2010-03-10 15:56:27 -0800
committerDan Williams <dcbw@redhat.com>2010-03-10 15:56:27 -0800
commit8f50dd319189c0a9aef4d41957450096029f4b60 (patch)
treec39c3ae38bd209cb2162071e175afafb2638a82e /src
parentc0c8954828788033ad43f07d7915101378ee2605 (diff)
gsm: close open ports on Enable errors
Diffstat (limited to 'src')
-rw-r--r--src/mm-generic-gsm.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c
index 3cc0f566..e9100b34 100644
--- a/src/mm-generic-gsm.c
+++ b/src/mm-generic-gsm.c
@@ -665,11 +665,18 @@ mm_generic_gsm_enable_complete (MMGenericGsm *self,
g_return_if_fail (MM_IS_GENERIC_GSM (self));
g_return_if_fail (info != NULL);
+ priv = MM_GENERIC_GSM_GET_PRIVATE (self);
+
if (error) {
mm_modem_set_state (MM_MODEM (self),
MM_MODEM_STATE_DISABLED,
MM_MODEM_STATE_REASON_NONE);
+ if (priv->primary && mm_serial_port_is_open (priv->primary))
+ mm_serial_port_close (priv->primary);
+ if (priv->secondary && mm_serial_port_is_open (priv->secondary))
+ mm_serial_port_close (priv->secondary);
+
info->error = g_error_copy (error);
mm_callback_info_schedule (info);
return;
@@ -678,8 +685,6 @@ mm_generic_gsm_enable_complete (MMGenericGsm *self,
mm_generic_gsm_update_enabled_state (self, FALSE, MM_MODEM_STATE_REASON_NONE);
}
- priv = MM_GENERIC_GSM_GET_PRIVATE (self);
-
/* Open the second port here if the modem has one. We'll use it for
* signal strength and registration updates when the device is connected,
* but also many devices will send unsolicited registration or other