stk: Check for USSD atom before others
authorDenis Kenzior <denkenz@gmail.com>
Tue, 5 Apr 2011 05:16:23 +0000 (00:16 -0500)
committerDenis Kenzior <denkenz@gmail.com>
Tue, 5 Apr 2011 05:16:23 +0000 (00:16 -0500)
For efficiency (and consistency) we should check for the USSD atom
before checking CallForwarding, CallBarring, and CallSettings atoms.

src/stk.c

index 01e14db..84198e6 100644 (file)
--- a/src/stk.c
+++ b/src/stk.c
@@ -1966,12 +1966,6 @@ static gboolean handle_command_send_ussd(const struct stk_command *cmd,
        struct ofono_ussd *ussd;
        int err;
 
-       if (ss_is_busy(modem)) {
-               ADD_ERROR_RESULT(rsp->result, STK_RESULT_TYPE_TERMINAL_BUSY,
-                                       busy_on_ss_result);
-               return TRUE;
-       }
-
        atom = __ofono_modem_find_atom(modem, OFONO_ATOM_TYPE_USSD);
        if (atom == NULL || !__ofono_atom_get_registered(atom)) {
                rsp->result.type = STK_RESULT_TYPE_NOT_CAPABLE;
@@ -1985,6 +1979,12 @@ static gboolean handle_command_send_ussd(const struct stk_command *cmd,
                return TRUE;
        }
 
+       if (ss_is_busy(modem)) {
+               ADD_ERROR_RESULT(rsp->result, STK_RESULT_TYPE_TERMINAL_BUSY,
+                                       busy_on_ss_result);
+               return TRUE;
+       }
+
        err = __ofono_ussd_initiate(ussd, cmd->send_ussd.ussd_string.dcs,
                                        cmd->send_ussd.ussd_string.string,
                                        cmd->send_ussd.ussd_string.len,