From a294800c7f6290b49ee5011e0a4e99831a070161 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Fri, 5 Apr 2013 18:22:02 +0200 Subject: [PATCH] icera: create generic bearer when no net port available https://bugzilla.gnome.org/show_bug.cgi?id=697374 --- plugins/icera/mm-broadband-modem-icera.c | 38 +++++++++++++++++++++--- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/plugins/icera/mm-broadband-modem-icera.c b/plugins/icera/mm-broadband-modem-icera.c index d8877e15..52f157c1 100644 --- a/plugins/icera/mm-broadband-modem-icera.c +++ b/plugins/icera/mm-broadband-modem-icera.c @@ -732,6 +732,25 @@ broadband_bearer_icera_new_ready (GObject *source, g_object_unref (simple); } +static void +broadband_bearer_new_ready (GObject *source, + GAsyncResult *res, + GSimpleAsyncResult *simple) +{ + MMBearer *bearer = NULL; + GError *error = NULL; + + bearer = mm_broadband_bearer_new_finish (res, &error); + if (!bearer) + g_simple_async_result_take_error (simple, error); + else + g_simple_async_result_set_op_res_gpointer (simple, + bearer, + (GDestroyNotify)g_object_unref); + g_simple_async_result_complete (simple); + g_object_unref (simple); +} + static void modem_create_bearer (MMIfaceModem *self, MMBearerProperties *properties, @@ -745,13 +764,24 @@ modem_create_bearer (MMIfaceModem *self, user_data, modem_create_bearer); - /* Otherwise create a Icera bearer */ - mm_broadband_bearer_icera_new ( + /* If we get a NET port, create Icera bearer */ + if (mm_base_modem_peek_best_data_port (MM_BASE_MODEM (self), MM_PORT_TYPE_NET)) { + mm_broadband_bearer_icera_new ( + MM_BROADBAND_MODEM (self), + MM_BROADBAND_MODEM_ICERA (self)->priv->default_ip_method, + properties, + NULL, /* cancellable */ + (GAsyncReadyCallback)broadband_bearer_icera_new_ready, + result); + return; + } + + /* Otherwise, plain generic broadband bearer */ + mm_broadband_bearer_new ( MM_BROADBAND_MODEM (self), - MM_BROADBAND_MODEM_ICERA (self)->priv->default_ip_method, properties, NULL, /* cancellable */ - (GAsyncReadyCallback)broadband_bearer_icera_new_ready, + (GAsyncReadyCallback)broadband_bearer_new_ready, result); }