diff options
author | Aleksander Morgado <aleksander@aleksander.es> | 2023-04-18 13:33:56 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksandermj@chromium.org> | 2023-05-03 12:38:43 +0000 |
commit | 8198a04f1a7b8cf1b13368e230810692026a256b (patch) | |
tree | 8b5a2e57ea735391b383e69f6dfc707ed229689e | |
parent | ef1887df058f27db19ef5cc6ed7da296aee5c624 (diff) | |
download | ModemManager-8198a04f1a7b8cf1b13368e230810692026a256b.tar.gz |
iface-modem-simple: improve logging and cancellability in network registration sequence
-rw-r--r-- | src/mm-iface-modem-simple.c | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/src/mm-iface-modem-simple.c b/src/mm-iface-modem-simple.c index 86ed625bc..56d9cff40 100644 --- a/src/mm-iface-modem-simple.c +++ b/src/mm-iface-modem-simple.c @@ -93,7 +93,7 @@ static void register_in_network_context_free (RegisterInNetworkContext *ctx) { g_free (ctx->operator_id); - g_free (ctx); + g_slice_free (RegisterInNetworkContext, ctx); } static gboolean @@ -123,6 +123,7 @@ register_in_cdma_network_ready (MMIfaceModemCdma *self, } /* Registered we are! */ + mm_obj_dbg (self, "registration in network: successful (cdma)"); g_task_return_boolean (task, TRUE); g_object_unref (task); } @@ -144,6 +145,7 @@ register_in_3gpp_network_ready (MMIfaceModem3gpp *self, } /* Registered we are! */ + mm_obj_dbg (self, "registration in network: successful (3gpp)"); g_task_return_boolean (task, TRUE); g_object_unref (task); } @@ -152,11 +154,17 @@ static void check_next_registration (GTask *task) { RegisterInNetworkContext *ctx; - MMIfaceModemSimple *self; + MMIfaceModemSimple *self; self = MM_IFACE_MODEM_SIMPLE (g_task_get_source_object (task)); ctx = g_task_get_task_data (task); + if (g_task_return_error_if_cancelled (task)) { + mm_obj_dbg (self, "registration in network: cancelled"); + g_object_unref (task); + return; + } + if (ctx->remaining_tries_cdma > ctx->remaining_tries_3gpp && ctx->remaining_tries_cdma > 0) { mm_iface_modem_cdma_register_in_network ( @@ -179,6 +187,7 @@ check_next_registration (GTask *task) } /* No more tries of anything */ + mm_obj_dbg (self, "registration in network: timed out"); g_task_return_error ( task, mm_mobile_equipment_error_for_code (MM_MOBILE_EQUIPMENT_ERROR_NETWORK_TIMEOUT, self)); @@ -186,15 +195,16 @@ check_next_registration (GTask *task) } static void -register_in_3gpp_or_cdma_network (MMIfaceModemSimple *self, - const gchar *operator_id, - GAsyncReadyCallback callback, - gpointer user_data) +register_in_3gpp_or_cdma_network (MMIfaceModemSimple *self, + const gchar *operator_id, + GCancellable *cancellable, + GAsyncReadyCallback callback, + gpointer user_data) { RegisterInNetworkContext *ctx; - GTask *task; + GTask *task; - ctx = g_new0 (RegisterInNetworkContext, 1); + ctx = g_slice_new0 (RegisterInNetworkContext); ctx->operator_id = g_strdup (operator_id); /* 3GPP-only modems... */ @@ -216,10 +226,8 @@ register_in_3gpp_or_cdma_network (MMIfaceModemSimple *self, ctx->remaining_tries_3gpp = 6; } - task = g_task_new (self, NULL, callback, user_data); - g_task_set_task_data (task, - ctx, - (GDestroyNotify)register_in_network_context_free); + task = g_task_new (self, cancellable, callback, user_data); + g_task_set_task_data (task, ctx, (GDestroyNotify)register_in_network_context_free); check_next_registration (task); } @@ -312,6 +320,7 @@ packet_service_attach_in_3gpp_network_step (GTask *task) ctx = g_task_get_task_data (task); if (g_task_return_error_if_cancelled (task)) { + mm_obj_dbg (self, "packet service attach in 3gpp network: cancelled"); g_object_unref (task); return; } @@ -349,10 +358,13 @@ packet_service_attach_in_3gpp_network_step (GTask *task) return; case PACKET_SERVICE_ATTACH_IN_3GPP_NETWORK_STEP_LAST: - if (ctx->error) + if (ctx->error) { + mm_obj_dbg (self, "packet service attach in 3gpp network: failed: %s", ctx->error->message); g_task_return_error (task, g_steal_pointer (&ctx->error)); - else + } else { + mm_obj_dbg (self, "packet service attach in 3gpp network: finished"); g_task_return_boolean (task, TRUE); + } g_object_unref (task); return; @@ -784,6 +796,7 @@ connection_step (ConnectionContext *ctx) register_in_3gpp_or_cdma_network ( ctx->self, mm_simple_connect_properties_get_operator_id (ctx->properties), + ctx->cancellable, (GAsyncReadyCallback)register_in_3gpp_or_cdma_network_ready, ctx); return; |