diff options
author | Aleksander Morgado <aleksander@lanedo.com> | 2013-04-05 18:22:02 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2013-04-05 19:10:53 +0200 |
commit | a294800c7f6290b49ee5011e0a4e99831a070161 (patch) | |
tree | 2711209e6fd42f30ae8969125680256107f196cd | |
parent | f9105bff875ae0e7263718a317e156948957a6d0 (diff) |
icera: create generic bearer when no net port available
https://bugzilla.gnome.org/show_bug.cgi?id=697374
-rw-r--r-- | plugins/icera/mm-broadband-modem-icera.c | 38 |
1 files 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 @@ -733,6 +733,25 @@ broadband_bearer_icera_new_ready (GObject *source, } 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, GAsyncReadyCallback callback, @@ -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); } |