diff options
Diffstat (limited to 'drivers/stemodem')
-rw-r--r-- | drivers/stemodem/gprs-context.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/drivers/stemodem/gprs-context.c b/drivers/stemodem/gprs-context.c index eb378ed3..0e973bee 100644 --- a/drivers/stemodem/gprs-context.c +++ b/drivers/stemodem/gprs-context.c @@ -426,13 +426,6 @@ static void ste_gprs_activate_primary(struct ofono_gprs_context *gc, gcd->active_context = ctx->cid; cbd->user = gc; - /* Set username and password */ - snprintf(buf, sizeof(buf), "AT*EIAAUW=%d,1,\"%s\",\"%s\"", - ctx->cid, ctx->username, ctx->password); - - if (g_at_chat_send(gcd->chat, buf, none_prefix, NULL, NULL, NULL) == 0) - goto error; - len = snprintf(buf, sizeof(buf), "AT+CGDCONT=%u,\"IP\"", ctx->cid); if (ctx->apn) @@ -440,8 +433,20 @@ static void ste_gprs_activate_primary(struct ofono_gprs_context *gc, ctx->apn); if (g_at_chat_send(gcd->chat, buf, none_prefix, - ste_cgdcont_cb, cbd, g_free) > 0) - return; + ste_cgdcont_cb, cbd, g_free) == 0) + goto error; + + /* + * Set username and password, this should be done after CGDCONT + * or an error can occur. We don't bother with error checking + * here + * */ + snprintf(buf, sizeof(buf), "AT*EIAAUW=%d,1,\"%s\",\"%s\"", + ctx->cid, ctx->username, ctx->password); + + g_at_chat_send(gcd->chat, buf, none_prefix, NULL, NULL, NULL); + + return; error: if (cbd) |