Fix logic flow in SS parser
authorDenis Kenzior <denkenz@gmail.com>
Thu, 18 Jun 2009 21:39:55 +0000 (16:39 -0500)
committerDenis Kenzior <denkenz@gmail.com>
Thu, 18 Jun 2009 21:58:03 +0000 (16:58 -0500)
src/ussd.c

index d2251c8..0691986 100644 (file)
@@ -308,6 +308,18 @@ static gboolean recognized_control_string(struct ofono_modem *modem,
                ofono_debug("Got parse result: %d, %s, %s, %s, %s, %s, %s",
                                type, sc, sia, sib, sic, sid, dn);
 
+               /* A password change string needs to be treated separately
+                * because it uses a fourth SI and is thus not a valid
+                * control string.  */
+               if (recognized_passwd_change_string(modem, type, sc,
+                                       sia, sib, sic, sid, dn, msg)) {
+                       ret = TRUE;
+                       goto out;
+               }
+
+               if (*sid != '\0');
+                       goto out;
+
                while ((l = g_slist_find_custom(l, sc,
                                ss_control_entry_find_by_service)) != NULL) {
                        struct ss_control_entry *entry = l->data;
@@ -320,12 +332,6 @@ static gboolean recognized_control_string(struct ofono_modem *modem,
                        l = l->next;
                }
 
-               /* A password change string needs to be treated separately
-                * because it uses a fourth SI and is thus not a valid
-                * control string.  */
-               if (recognized_passwd_change_string(modem, type, sc,
-                                       sia, sib, sic, sid, dn, msg))
-                       goto out;
        }
 
        /* TODO: Handle all strings that control voice calls */