From 20db7314846909ccbcd35046d4e247a67c86cd36 Mon Sep 17 00:00:00 2001 From: Denis Kenzior Date: Thu, 7 Jan 2010 14:43:21 -0600 Subject: [PATCH] Make primary context ids persistent --- src/gprs.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/gprs.c b/src/gprs.c index 801984ca..4e2f6ac1 100644 --- a/src/gprs.c +++ b/src/gprs.c @@ -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;