diff --git a/drivers/atmodem/gprs.c b/drivers/atmodem/gprs.c index d3fd893c..dd734585 100644 --- a/drivers/atmodem/gprs.c +++ b/drivers/atmodem/gprs.c @@ -161,6 +161,11 @@ static void at_cgdcont_read_cb(gboolean ok, GAtResult *result, return; } + if (gd->last_auto_context_id == 0) { + DBG("Context got deactivated while calling CGDCONT"); + return; + } + g_at_result_iter_init(&iter, result); while (g_at_result_iter_next(&iter, "+CGDCONT:")) { @@ -251,6 +256,12 @@ static void cgev_notify(GAtResult *result, gpointer user_data) g_at_chat_send(gd->chat, "AT+CGDCONT?", cgdcont_prefix, at_cgdcont_read_cb, gprs, NULL); + } else if (g_str_has_prefix(event, "ME PDN DEACT")) { + unsigned int context_id; + sscanf(event, "%*s %*s %*s %u", &context_id); + /* Indicate that this cid is not activated anymore */ + if (gd->last_auto_context_id == context_id) + gd->last_auto_context_id = 0; } }