aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2013-04-05 18:22:02 +0200
committerAleksander Morgado <aleksander@lanedo.com>2013-04-05 19:10:53 +0200
commita294800c7f6290b49ee5011e0a4e99831a070161 (patch)
tree2711209e6fd42f30ae8969125680256107f196cd
parentf9105bff875ae0e7263718a317e156948957a6d0 (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.c38
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);
}