Try this patch instead...

Dan

---
 src/mm-iface-modem-3gpp.c | 28 +++++++++++++++-------------
 1 file changed, 15 insertions(+), 13 deletions(-)

diff --git a/src/mm-iface-modem-3gpp.c b/src/mm-iface-modem-3gpp.c
index baf743fb..77b502c0 100644
--- a/src/mm-iface-modem-3gpp.c
+++ b/src/mm-iface-modem-3gpp.c
@@ -119,6 +119,13 @@ get_registration_state_context (MMIfaceModem3gpp *self)
     return ctx;
 }
 
+static gboolean
+reg_state_is_registered (MMModem3gppRegistrationState state)
+{
+    return state == MM_MODEM_3GPP_REGISTRATION_STATE_HOME ||
+        state == MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING;
+}
+
 static MMModem3gppRegistrationState
 get_consolidated_reg_state (RegistrationStateContext *ctx)
 {
@@ -268,8 +275,7 @@ run_registration_checks_ready (MMIfaceModem3gpp *self,
     }
 
     /* If we got registered, end registration checks */
-    if (current_registration_state == MM_MODEM_3GPP_REGISTRATION_STATE_HOME ||
-        current_registration_state == 
MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING) {
+    if (reg_state_is_registered (current_registration_state)) {
         /* Request immediate access tech update */
         mm_iface_modem_refresh_access_technologies (MM_IFACE_MODEM 
(ctx->self));
         mm_dbg ("Modem is currently registered in a 3GPP network");
@@ -391,9 +397,11 @@ mm_iface_modem_3gpp_register_in_network (MMIfaceModem3gpp 
*self,
     }
     /* Automatic registration requested? */
     else {
+        MMModem3gppRegistrationState reg_state = 
mm_gdbus_modem3gpp_get_registration_state (ctx->skeleton);
+
         /* If the modem is already registered and the last time it was asked
          * automatic registration, we're done */
-        if (current_operator_code &&
+        if ((current_operator_code || reg_state_is_registered (reg_state)) &&
             !registration_state_context->manual_registration) {
             mm_dbg ("Already registered in network '%s',"
                     " automatic registration not launched...",
@@ -1033,9 +1041,7 @@ mm_iface_modem_3gpp_update_access_technologies 
(MMIfaceModem3gpp *self,
 
     /* Even if registration state didn't change, report access technology,
      * but only if something valid to report */
-    if (state == MM_MODEM_3GPP_REGISTRATION_STATE_HOME ||
-        state == MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING ||
-        ctx->reloading_registration_info) {
+    if (reg_state_is_registered (state) || ctx->reloading_registration_info) {
         if (access_tech != MM_MODEM_ACCESS_TECHNOLOGY_UNKNOWN)
             mm_iface_modem_update_access_technologies (MM_IFACE_MODEM (self),
                                                        access_tech,
@@ -1068,9 +1074,7 @@ mm_iface_modem_3gpp_update_location (MMIfaceModem3gpp 
*self,
      * location updates, but only if something valid to report. For the case
      * where we're registering (loading current registration info after a state
      * change to registered), we also allow LAC/CID updates. */
-    if (ctx->reloading_registration_info ||
-        state == MM_MODEM_3GPP_REGISTRATION_STATE_HOME ||
-        state == MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING) {
+    if (reg_state_is_registered (state) || ctx->reloading_registration_info) {
         if (location_area_code > 0 && cell_id > 0)
             mm_iface_modem_location_3gpp_update_lac_ci 
(MM_IFACE_MODEM_LOCATION (self),
                                                         location_area_code,
@@ -1122,8 +1126,7 @@ update_non_registered_state (MMIfaceModem3gpp *self,
      * sent by the carrier during registration or b) by looking at the
      * registration reject error code.  If b), we want to make sure we
      * preserve the subscription state */
-    if (old_state == MM_MODEM_3GPP_REGISTRATION_STATE_HOME ||
-        old_state == MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING)
+    if (reg_state_is_registered (old_state))
         clear_subscription_state (self);
 
     /* The property in the interface is bound to the property
@@ -1160,8 +1163,7 @@ update_registration_state (MMIfaceModem3gpp *self,
     if (new_state == old_state)
         return;
 
-    if (new_state == MM_MODEM_3GPP_REGISTRATION_STATE_HOME ||
-        new_state == MM_MODEM_3GPP_REGISTRATION_STATE_ROAMING) {
+    if (reg_state_is_registered (new_state)) {
         /* If already reloading registration info, skip it */
         if (ctx->reloading_registration_info)
             return;
-- 
2.14.3
_______________________________________________
ModemManager-devel mailing list
ModemManager-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/modemmanager-devel

Reply via email to