diff options
author | Ben Chan <benchan@chromium.org> | 2012-08-19 23:26:14 -0700 |
---|---|---|
committer | Aleksander Morgado <aleksander@lanedo.com> | 2012-08-20 09:17:34 +0200 |
commit | 7b13b5e1c02bca89a317fce57abc9b5faa115ee7 (patch) | |
tree | 06e50062fcefebb8f6e035c3ed2d96ee72f34783 | |
parent | 2b5fb682c6315d27723137d8c7a7982e198a538a (diff) |
broadband-bearer,icera: fix CID matching for unsolicited IPDPACT responses
-rw-r--r-- | plugins/icera/mm-broadband-modem-icera.c | 2 | ||||
-rw-r--r-- | src/mm-broadband-bearer.c | 7 |
2 files changed, 6 insertions, 3 deletions
diff --git a/plugins/icera/mm-broadband-modem-icera.c b/plugins/icera/mm-broadband-modem-icera.c index 715758a8..9d390d30 100644 --- a/plugins/icera/mm-broadband-modem-icera.c +++ b/plugins/icera/mm-broadband-modem-icera.c @@ -280,7 +280,7 @@ ipdpact_received (MMAtSerialPort *port, return; /* Setup context */ - ctx.cid = 0; + ctx.cid = cid; ctx.status = MM_BROADBAND_BEARER_ICERA_CONNECTION_STATUS_UNKNOWN; switch (status) { diff --git a/src/mm-broadband-bearer.c b/src/mm-broadband-bearer.c index 8d46e318..995d8417 100644 --- a/src/mm-broadband-bearer.c +++ b/src/mm-broadband-bearer.c @@ -670,13 +670,13 @@ dial_3gpp_ready (MMBroadbandModem *modem, if (!MM_BROADBAND_BEARER_GET_CLASS (ctx->self)->dial_3gpp_finish (ctx->self, res, &error)) { + /* Clear CID when it failed to connect. */ + ctx->self->priv->cid = 0; g_simple_async_result_take_error (ctx->result, error); detailed_connect_context_complete_and_free (ctx); return; } - /* Keep CID around while connected */ - ctx->self->priv->cid = ctx->cid; if (MM_BROADBAND_BEARER_GET_CLASS (ctx->self)->get_ip_config_3gpp && MM_BROADBAND_BEARER_GET_CLASS (ctx->self)->get_ip_config_3gpp_finish) { @@ -732,6 +732,9 @@ initialize_pdp_context_ready (MMBaseModem *modem, return; } + /* Keep CID around after initializing the PDP context in order to + * handle corresponding unsolicited PDP activation responses. */ + ctx->self->priv->cid = ctx->cid; MM_BROADBAND_BEARER_GET_CLASS (ctx->self)->dial_3gpp (ctx->self, ctx->modem, ctx->primary, |