summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDenis Kenzior <denkenz@gmail.com>2009-12-08 17:19:40 -0600
committerDenis Kenzior <denkenz@gmail.com>2009-12-08 17:19:40 -0600
commit58c8a33adfac432867230aa6ff0cb6f9e2afa680 (patch)
treea9c10b8c32836492a6e35816fc868d9cd8c6d636 /src
parent2ac70c7f278814991374ed87549a6cc3136989ff (diff)
downloadofono-58c8a33adfac432867230aa6ff0cb6f9e2afa680.tar.bz2
Fix: Reset active contexts if gprs is detached
When we lose network registration or are forcefully detached from the network we must reset all active contexts to inactive.
Diffstat (limited to 'src')
-rw-r--r--src/gprs.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/gprs.c b/src/gprs.c
index 142b819f..8819ba4d 100644
--- a/src/gprs.c
+++ b/src/gprs.c
@@ -901,6 +901,27 @@ static void gprs_attached_update(struct ofono_gprs *gprs)
gprs->attached = attached;
+ if (gprs->attached == FALSE) {
+ GSList *l;
+ struct pri_context *ctx;
+
+ for (l = gprs->contexts; l; l = l->next) {
+ ctx = l->data;
+
+ if (ctx->active == FALSE)
+ continue;
+
+ ctx->active = FALSE;
+ pri_reset_context_settings(ctx);
+
+ value = FALSE;
+ ofono_dbus_signal_property_changed(conn, ctx->path,
+ DATA_CONTEXT_INTERFACE,
+ "Active", DBUS_TYPE_BOOLEAN,
+ &value);
+ }
+ }
+
path = __ofono_atom_get_path(gprs->atom);
value = attached;
ofono_dbus_signal_property_changed(conn, path,