aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2010-03-09 11:43:30 -0800
committerDan Williams <dcbw@redhat.com>2010-03-09 11:43:30 -0800
commitfbf3efc1e3feac3acb340bbd70617a702b33a42c (patch)
tree0178d28a4e046c65feac2f65fcbef6761b48877b
parent076b5df1bcc880555606375ac2af9db488bfda3d (diff)
gsm: only use CREG responses for authoritative registration state
For now...
-rw-r--r--src/mm-generic-gsm.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/src/mm-generic-gsm.c b/src/mm-generic-gsm.c
index d1de512c..9b693096 100644
--- a/src/mm-generic-gsm.c
+++ b/src/mm-generic-gsm.c
@@ -1475,14 +1475,21 @@ reg_state_changed (MMSerialPort *port,
return;
}
- if (reg_status_updated (self, state, NULL)) {
- /* If registration is finished (either registered or failed) but the
- * registration query hasn't completed yet, just remove the timeout and
- * let the registration query complete.
- */
- if (priv->pending_reg_id) {
- g_source_remove (priv->pending_reg_id);
- priv->pending_reg_id = 0;
+ /* Don't update reg state on CGREG responses since for many devices it's
+ * unclear what that registration state that actually reflects. We'll
+ * take CGREG registration state into account later when we have a more
+ * consistent way of handling it.
+ */
+ if (cgreg == FALSE) {
+ if (reg_status_updated (self, state, NULL)) {
+ /* If registration is finished (either registered or failed) but the
+ * registration query hasn't completed yet, just remove the timeout and
+ * let the registration query complete.
+ */
+ if (priv->pending_reg_id) {
+ g_source_remove (priv->pending_reg_id);
+ priv->pending_reg_id = 0;
+ }
}
}