aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mm-broadband-bearer.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/mm-broadband-bearer.c b/src/mm-broadband-bearer.c
index 6d66ebcc..79854b7f 100644
--- a/src/mm-broadband-bearer.c
+++ b/src/mm-broadband-bearer.c
@@ -284,7 +284,6 @@ dial_cdma_ready (MMBaseModem *modem,
}
/* else... Yuhu! */
- ctx->self->priv->connection_type = CONNECTION_TYPE_CDMA;
detailed_connect_context_complete_and_free_successful (ctx);
}
@@ -511,10 +510,8 @@ dial_3gpp_ready (MMBaseModem *modem,
return;
}
- /* Keep data port and CID around while connected */
- ctx->self->priv->connection_type = CONNECTION_TYPE_3GPP;
+ /* Keep CID around while connected */
ctx->self->priv->cid = ctx->cid;
- ctx->self->priv->port = g_object_ref (ctx->data);
/* Yuhu! */
detailed_connect_context_complete_and_free_successful (ctx);
@@ -854,6 +851,7 @@ connect_finish (MMBearer *self,
static void
connect_succeeded (ConnectContext *ctx,
+ ConnectionType connection_type,
MMCommonBearerIpConfig *ipv4_config,
MMCommonBearerIpConfig *ipv6_config)
{
@@ -862,6 +860,10 @@ connect_succeeded (ConnectContext *ctx,
/* Port is connected; update the state */
mm_port_set_connected (ctx->data, TRUE);
+ /* Keep connected port and type of connection */
+ ctx->self->priv->port = g_object_ref (ctx->data);
+ ctx->self->priv->connection_type = connection_type;
+
/* Build result */
result = g_new0 (ConnectResult, 1);
result->data = g_object_ref (ctx->data);
@@ -904,7 +906,7 @@ connect_cdma_ready (MMBroadbandBearer *self,
&error))
connect_failed (ctx, error);
else
- connect_succeeded (ctx, ipv4_config, ipv6_config);
+ connect_succeeded (ctx, CONNECTION_TYPE_CDMA, ipv4_config, ipv6_config);
}
static void
@@ -923,7 +925,7 @@ connect_3gpp_ready (MMBroadbandBearer *self,
&error))
connect_failed (ctx, error);
else
- connect_succeeded (ctx, ipv4_config, ipv6_config);
+ connect_succeeded (ctx, CONNECTION_TYPE_3GPP, ipv4_config, ipv6_config);
}
static void
@@ -1199,6 +1201,9 @@ cgact_primary_ready (MMBaseModem *modem,
g_error_free (error);
}
+ /* Clear CID if we got any set */
+ if (ctx->self->priv->cid)
+ ctx->self->priv->cid = 0;
g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
detailed_disconnect_context_complete_and_free (ctx);
}
@@ -1230,6 +1235,9 @@ primary_flash_3gpp_ready (MMSerialPort *port,
/* Don't bother doing the CGACT again if it was done on a secondary port
* or if not needed */
if (ctx->cgact_sent) {
+ /* Clear CID if we got any set */
+ if (ctx->self->priv->cid)
+ ctx->self->priv->cid = 0;
g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
detailed_disconnect_context_complete_and_free (ctx);
return;
@@ -1363,11 +1371,12 @@ disconnect_succeeded (DisconnectContext *ctx)
* already have set the port as disconnected (e.g the 3GPP one) */
mm_port_set_connected (ctx->data, FALSE);
- /* Clear data port and CID (if any) */
- if (ctx->self->priv->cid)
- ctx->self->priv->cid = 0;
+ /* Clear data port */
g_clear_object (&ctx->self->priv->port);
+ /* Reset current connection type */
+ ctx->self->priv->connection_type = CONNECTION_TYPE_NONE;
+
/* Set operation result */
g_simple_async_result_set_op_res_gboolean (ctx->result, TRUE);
disconnect_context_complete_and_free (ctx);