aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--plugins/icera/mm-broadband-bearer-icera.c19
-rw-r--r--plugins/icera/mm-broadband-bearer-icera.h2
-rw-r--r--plugins/icera/mm-broadband-modem-icera.c13
3 files changed, 32 insertions, 2 deletions
diff --git a/plugins/icera/mm-broadband-bearer-icera.c b/plugins/icera/mm-broadband-bearer-icera.c
index 22dbf271..87038223 100644
--- a/plugins/icera/mm-broadband-bearer-icera.c
+++ b/plugins/icera/mm-broadband-bearer-icera.c
@@ -395,6 +395,15 @@ dial_3gpp_context_free (Dial3gppContext *ctx)
g_slice_free (Dial3gppContext, ctx);
}
+static guint
+dial_3gpp_get_connecting_cid (GTask *task)
+{
+ Dial3gppContext *ctx;
+
+ ctx = g_task_get_task_data (task);
+ return ctx->cid;
+}
+
static MMPort *
dial_3gpp_finish (MMBroadbandBearer *self,
GAsyncResult *res,
@@ -698,6 +707,16 @@ dial_3gpp (MMBroadbandBearer *_self,
/*****************************************************************************/
+gint
+mm_broadband_bearer_icera_get_connecting_profile_id (MMBroadbandBearerIcera *self)
+{
+ return (self->priv->connect_pending ?
+ (gint)dial_3gpp_get_connecting_cid (self->priv->connect_pending) :
+ MM_3GPP_PROFILE_ID_UNKNOWN);
+}
+
+/*****************************************************************************/
+
static void
report_connection_status (MMBaseBearer *_self,
MMBearerConnectionStatus status,
diff --git a/plugins/icera/mm-broadband-bearer-icera.h b/plugins/icera/mm-broadband-bearer-icera.h
index 8061e216..e169cb7c 100644
--- a/plugins/icera/mm-broadband-bearer-icera.h
+++ b/plugins/icera/mm-broadband-bearer-icera.h
@@ -61,4 +61,6 @@ void mm_broadband_bearer_icera_new (MMBroadbandModem *modem,
MMBaseBearer *mm_broadband_bearer_icera_new_finish (GAsyncResult *res,
GError **error);
+gint mm_broadband_bearer_icera_get_connecting_profile_id (MMBroadbandBearerIcera *self);
+
#endif /* MM_BROADBAND_BEARER_ICERA_H */
diff --git a/plugins/icera/mm-broadband-modem-icera.c b/plugins/icera/mm-broadband-modem-icera.c
index e7bc2dc7..23f8b058 100644
--- a/plugins/icera/mm-broadband-modem-icera.c
+++ b/plugins/icera/mm-broadband-modem-icera.c
@@ -404,12 +404,21 @@ static void
bearer_list_report_status_foreach (MMBaseBearer *bearer,
BearerListReportStatusForeachContext *ctx)
{
- if (mm_base_bearer_get_profile_id (bearer) != (gint)ctx->cid)
- return;
+ gint profile_id;
+ gint connecting_profile_id;
if (!MM_IS_BROADBAND_BEARER_ICERA (bearer))
return;
+ /* The profile ID in the base bearer is set only once the modem is connected */
+ profile_id = mm_base_bearer_get_profile_id (bearer);
+
+ /* The profile ID in the icera bearer is available during the connecting phase */
+ connecting_profile_id = mm_broadband_bearer_icera_get_connecting_profile_id (MM_BROADBAND_BEARER_ICERA (bearer));
+
+ if ((profile_id != (gint)ctx->cid) && (connecting_profile_id != (gint)ctx->cid))
+ return;
+
mm_base_bearer_report_connection_status (bearer, ctx->status);
}