Refactor: Move SMS SendMessage to 1 recipient only
authorDenis Kenzior <denkenz@gmail.com>
Thu, 5 Nov 2009 16:27:25 +0000 (10:27 -0600)
committerDenis Kenzior <denkenz@gmail.com>
Thu, 5 Nov 2009 16:27:25 +0000 (10:27 -0600)
src/sms.c

index e02ac85..d9cea8a 100644 (file)
--- a/src/sms.c
+++ b/src/sms.c
@@ -350,52 +350,36 @@ static DBusMessage *sms_send_message(DBusConnection *conn, DBusMessage *msg,
                                        void *data)
 {
        struct ofono_sms *sms = data;
-       char **tos;
-       int num_to;
-       char *text;
-       int i;
+       const char *to;
+       const char *text;
        GSList *msg_list;
        int ref_offset;
 
-       if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_ARRAY, DBUS_TYPE_STRING,
-                                       &tos, &num_to, DBUS_TYPE_STRING, &text,
+       if (!dbus_message_get_args(msg, NULL, DBUS_TYPE_STRING, &to,
+                                       DBUS_TYPE_STRING, &text,
                                        DBUS_TYPE_INVALID))
                return __ofono_error_invalid_args(msg);
 
-       if (num_to == 0) {
-               dbus_free_string_array(tos);
+       if (valid_phone_number_format(to) == FALSE)
                return __ofono_error_invalid_format(msg);
-       }
-
-       ofono_debug("Got %d recipients", num_to);
-
-       for (i = 0; i < num_to; i++) {
-               if (valid_phone_number_format(tos[i]))
-                       continue;
-
-               dbus_free_string_array(tos);
-               return __ofono_error_invalid_format(msg);
-       }
 
        msg_list = sms_text_prepare(text, 0, TRUE, &ref_offset);
 
-       if (!msg_list) {
-               dbus_free_string_array(tos);
+       if (!msg_list)
                return __ofono_error_invalid_format(msg);
-       }
 
-       for (i = 0; i < num_to; i++) {
-               ofono_debug("ref: %d, offset: %d", sms->ref, ref_offset);
-               set_ref_and_to(msg_list, sms->ref, ref_offset, tos[i]);
-               append_tx_queue(sms, msg_list);
+       ofono_debug("ref: %d, offset: %d", sms->ref, ref_offset);
+
+       set_ref_and_to(msg_list, sms->ref, ref_offset, to);
+       append_tx_queue(sms, msg_list);
 
+       if (ref_offset != 0) {
                if (sms->ref == 65536)
                        sms->ref = 1;
                else
                        sms->ref = sms->ref + 1;
        }
 
-       dbus_free_string_array(tos);
        g_slist_foreach(msg_list, (GFunc)g_free, NULL);
        g_slist_free(msg_list);
 
@@ -407,7 +391,7 @@ static GDBusMethodTable sms_manager_methods[] = {
                                                        G_DBUS_METHOD_FLAG_ASYNC },
        { "SetProperty",        "sv",   "",             sms_set_property,
                                                        G_DBUS_METHOD_FLAG_ASYNC },
-       { "SendMessage",        "ass",  "",             sms_send_message },
+       { "SendMessage",        "ss",   "",             sms_send_message },
        { }
 };