diff options
-rw-r--r-- | drivers/atmodem/gprs.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/atmodem/gprs.c b/drivers/atmodem/gprs.c index d60fbca1..27a3f569 100644 --- a/drivers/atmodem/gprs.c +++ b/drivers/atmodem/gprs.c @@ -232,6 +232,8 @@ static void at_cgdcont_test_cb(gboolean ok, GAtResult *result, g_at_result_iter_init(&iter, result); while (!found && g_at_result_iter_next(&iter, "+CGDCONT:")) { + gboolean in_list = FALSE; + if (!g_at_result_iter_open_list(&iter)) continue; @@ -241,11 +243,17 @@ static void at_cgdcont_test_cb(gboolean ok, GAtResult *result, if (!g_at_result_iter_close_list(&iter)) continue; + if (g_at_result_iter_open_list(&iter)) + in_list = TRUE; + if (!g_at_result_iter_next_string(&iter, &pdp_type)) continue; + if (in_list && !g_at_result_iter_close_list(&iter)) + continue; + /* We look for IP PDPs */ - if (!strcmp(pdp_type, "IP")) + if (g_str_equal(pdp_type, "IP")) found = TRUE; } |