Make primary context ids persistent

This commit is contained in:
Denis Kenzior 2010-01-07 14:43:21 -06:00
parent 230bddf30e
commit 20db731484
1 changed files with 11 additions and 0 deletions

View File

@ -1740,6 +1740,13 @@ static gboolean load_context(struct ofono_gprs *gprs, const char *group)
gboolean ret = FALSE;
struct pri_context *context;
enum gprs_context_type type;
unsigned int id;
if (sscanf(group, "primarycontext%d", &id) != 1)
goto error;
if (id < 1 || id > MAX_CONTEXTS)
goto error;
if ((name = g_key_file_get_string(gprs->settings, group,
"Name", NULL)) == NULL)
@ -1787,6 +1794,8 @@ static gboolean load_context(struct ofono_gprs *gprs, const char *group)
if ((context = pri_context_create(gprs, name, type)) == NULL)
goto error;
idmap_take(gprs->pid_map, id);
context->id = id;
strcpy(context->context.username, username);
strcpy(context->context.password, password);
strcpy(context->context.apn, apn);
@ -1794,6 +1803,8 @@ static gboolean load_context(struct ofono_gprs *gprs, const char *group)
if (context_dbus_register(context) == FALSE)
goto error;
gprs->last_context_id = id;
gprs->contexts = g_slist_append(gprs->contexts, context);
ret = TRUE;