[PATCH 2/3] altair-lte: refactor code for handling 'data' in DetailedConnectContext

Ben Chan benchan at chromium.org
Thu Jan 2 16:00:43 PST 2014


---
 plugins/altair/mm-broadband-bearer-altair-lte.c | 42 ++++++++++++-------------
 1 file changed, 20 insertions(+), 22 deletions(-)

diff --git a/plugins/altair/mm-broadband-bearer-altair-lte.c b/plugins/altair/mm-broadband-bearer-altair-lte.c
index 98c8193..f08517b 100644
--- a/plugins/altair/mm-broadband-bearer-altair-lte.c
+++ b/plugins/altair/mm-broadband-bearer-altair-lte.c
@@ -68,7 +68,7 @@ detailed_connect_context_new (MMBroadbandBearer *self,
     ctx->modem = MM_BASE_MODEM (g_object_ref (modem));
     ctx->primary = g_object_ref (primary);
     ctx->secondary = (secondary ? g_object_ref (secondary) : NULL);
-    ctx->data = data;
+    ctx->data = g_object_ref (data);
     /* NOTE:
      * We don't currently support cancelling AT commands, so we'll just check
      * whether the operation is to be cancelled at each step. */
@@ -86,8 +86,7 @@ detailed_connect_context_complete_and_free (DetailedConnectContext *ctx)
     g_simple_async_result_complete_in_idle (ctx->result);
     g_object_unref (ctx->result);
     g_object_unref (ctx->cancellable);
-    if (ctx->data)
-        g_object_unref (ctx->data);
+    g_object_unref (ctx->data);
     if (ctx->secondary)
         g_object_unref (ctx->secondary);
     g_object_unref (ctx->primary);
@@ -186,6 +185,7 @@ connect_3gpp (MMBroadbandBearer *self,
     gchar *command, *apn;
     MMBearerProperties *config;
     MMModem3gppRegistrationState registration_state;
+    MMPort *data;
 
     /* There is a known firmware bug that can leave the modem unusable if a
      * connect attempt is made when out of coverage. So, fail without trying.
@@ -203,28 +203,26 @@ connect_3gpp (MMBroadbandBearer *self,
         return;
     }
 
-    ctx = detailed_connect_context_new (
-        self,
-        modem,
-        primary,
-        secondary,
-        /* Get a 'net' data port */
-        mm_base_modem_get_best_data_port (MM_BASE_MODEM (modem),
-                                          MM_PORT_TYPE_NET),
-        cancellable,
-        callback,
-        user_data);
-
-    if (!ctx->data) {
-        g_simple_async_result_set_error (
-            ctx->result,
-            MM_CORE_ERROR,
-            MM_CORE_ERROR_CONNECTED,
-            "Couldn't connect: no available net port available");
-        detailed_connect_context_complete_and_free (ctx);
+    data = mm_base_modem_peek_best_data_port (MM_BASE_MODEM (modem), MM_PORT_TYPE_NET);
+    if (!data) {
+        g_simple_async_report_error_in_idle (G_OBJECT (self),
+                                             callback,
+                                             user_data,
+                                             MM_CORE_ERROR,
+                                             MM_CORE_ERROR_CONNECTED,
+                                             "Couldn't connect: no available net port available");
         return;
     }
 
+    ctx = detailed_connect_context_new (self,
+                                        modem,
+                                        primary,
+                                        secondary,
+                                        data,
+                                        cancellable,
+                                        callback,
+                                        user_data);
+
     config = mm_bearer_peek_config (MM_BEARER (self));
     apn = mm_at_serial_port_quote_string (mm_bearer_properties_get_apn (config));
     command = g_strdup_printf ("%%APNN=%s",apn);
-- 
1.8.5.1



More information about the ModemManager-devel mailing list