diff --git a/gobi_gsm_modem.cc b/gobi_gsm_modem.cc
index a75d0d5..e6772f9 100644
--- a/gobi_gsm_modem.cc
+++ b/gobi_gsm_modem.cc
@@ -63,10 +63,24 @@
         break;
       case MM_MODEM_GSM_NETWORK_REG_STATUS_HOME:
       case MM_MODEM_GSM_NETWORK_REG_STATUS_ROAMING:
-        mm_modem_state = MM_MODEM_STATE_REGISTERED;
+        // The modem may reregister with the network when starting the data
+        // session.  Ignore the state changes associated with the
+        // reregistration.
+        if ((mm_state() == MM_MODEM_STATE_REGISTERED ||
+             mm_state() == MM_MODEM_STATE_CONNECTING) &&
+            session_starter_in_flight_)
+          mm_modem_state = MM_MODEM_STATE_CONNECTING;
+        else
+          mm_modem_state = MM_MODEM_STATE_REGISTERED;
         break;
       case MM_MODEM_GSM_NETWORK_REG_STATUS_SEARCHING:
-        mm_modem_state = MM_MODEM_STATE_SEARCHING;
+        // The modem may reregister with the network when starting the data
+        // session.  Ignore the state changes associated with the
+        // reregistration.
+        if (session_starter_in_flight_)
+          mm_modem_state = MM_MODEM_STATE_CONNECTING;
+        else
+          mm_modem_state = MM_MODEM_STATE_SEARCHING;
         break;
       case MM_MODEM_GSM_NETWORK_REG_STATUS_UNKNOWN:
         mm_modem_state = MM_MODEM_STATE_ENABLED; // ???
@@ -145,19 +159,35 @@
   // a DataCapabilitiesHandler callback!
   GetGsmRegistrationInfo(&registration_status,
                          &operator_code, &operator_name, error);
+  // The modem may reregister with the network when starting the data
+  // session.  Ignore the state changes associated with the reregistration.
+  if (registration_status == MM_MODEM_GSM_NETWORK_REG_STATUS_SEARCHING &&
+      session_starter_in_flight_)
+    return;
   switch(registration_status) {
     case MM_MODEM_GSM_NETWORK_REG_STATUS_IDLE:
-    case MM_MODEM_GSM_NETWORK_REG_STATUS_SEARCHING:
     case MM_MODEM_GSM_NETWORK_REG_STATUS_DENIED:
       RegistrationInfo(registration_status, operator_code, operator_name);
       SetMmState(MM_MODEM_STATE_ENABLED, MM_MODEM_STATE_CHANGED_REASON_UNKNOWN);
       break;
+    case MM_MODEM_GSM_NETWORK_REG_STATUS_SEARCHING:
+      RegistrationInfo(registration_status, operator_code, operator_name);
+      SetMmState(MM_MODEM_STATE_SEARCHING,
+                 MM_MODEM_STATE_CHANGED_REASON_UNKNOWN);
+      break;
     case MM_MODEM_GSM_NETWORK_REG_STATUS_UNKNOWN:
       // Ignore the unknown state.  The registration state will
       // eventually be reported as IDLE, SEACHING, DENIED, etc...
       break;
     case MM_MODEM_GSM_NETWORK_REG_STATUS_ROAMING:
     case MM_MODEM_GSM_NETWORK_REG_STATUS_HOME:
+      // The modem may reregister with the network when starting the data
+      // session.  Ignore the state changes associated with the
+      // reregistration.
+      if (mm_state() == MM_MODEM_STATE_REGISTERED &&
+          session_starter_in_flight_)
+        SetMmState(MM_MODEM_STATE_CONNECTING,
+                   MM_MODEM_STATE_CHANGED_REASON_UNKNOWN);
       SendNetworkTechnologySignal(
           DataCapabilitiesToMmAccessTechnology(num_data_caps, data_caps));
       break;
diff --git a/gobi_modem.cc b/gobi_modem.cc
index c3a0d9e..d2c7eb7 100644
--- a/gobi_modem.cc
+++ b/gobi_modem.cc
@@ -715,7 +715,9 @@
                                                username,
                                                password);
   session_starter_in_flight_ = true;
-  SetMmState(MM_MODEM_STATE_CONNECTING, MM_MODEM_STATE_CHANGED_REASON_UNKNOWN);
+  if (mm_state_ == MM_MODEM_STATE_REGISTERED)
+    SetMmState(MM_MODEM_STATE_CONNECTING,
+               MM_MODEM_STATE_CHANGED_REASON_UNKNOWN);
   starter->StartDataSession(error);
 
   return_later(&starter->continuation_tag_);
