fix messages_set_message_incoming_cb() issue 09/118809/2
authorKyeonghun Lee <kh9090.lee@samsung.com>
Tue, 14 Mar 2017 06:40:24 +0000 (15:40 +0900)
committerKyeonghun Lee <kh9090.lee@samsung.com>
Tue, 14 Mar 2017 06:43:04 +0000 (15:43 +0900)
Change-Id: Iba203fd190e8fb8590ddffc1d020019ddd31cde5
Signed-off-by: Kyeonghun Lee <kh9090.lee@samsung.com>
src/messages.c

index 3832426f0a85fba7a9c49649819e4f8447023844..ee16cacb0bf7e6665384c2973102a6b5c970a424 100644 (file)
@@ -40,6 +40,8 @@ int _messages_load_mms_data(messages_message_s * msg, msg_handle_t handle);
 int _messages_save_textfile(const char *text, char **filepath);
 int _messages_load_textfile(const char *filepath, char **text);
 void _messages_sent_mediator_cb(msg_handle_t handle, msg_struct_t pStatus, void *user_param);
+void _messages_incoming_mediator_cb(msg_handle_t handle, msg_struct_t msg, void *user_param);
+void _messages_incoming_cb_mediator_cb(msg_handle_t handle, msg_struct_t msg, void *user_param);
 int _messages_check_feature(char *feature_name);
 
 int messages_open_service(messages_service_h * svc)
@@ -74,6 +76,26 @@ int messages_open_service(messages_service_h * svc)
                return ERROR_CONVERT(ret);
        }
 
+       ret = msg_reg_sms_message_callback(_svc->service_h, &_messages_incoming_mediator_cb, 0, (void *)_svc);
+       if (MSG_SUCCESS != ret) {
+               free(_svc);
+               return ERROR_CONVERT(ret);
+       }
+
+       ret = msg_reg_cb_message_callback(_svc->service_h, &_messages_incoming_cb_mediator_cb, true, (void *)_svc);
+       if (MSG_SUCCESS != ret) {
+               free(_svc);
+               return ERROR_CONVERT(ret);
+       }
+
+       if (MESSAGES_ERROR_NONE == _messages_check_feature(MESSAGES_TELEPHONY_MMS_FEATURE)) {
+               ret = msg_reg_mms_conf_message_callback(_svc->service_h, &_messages_incoming_mediator_cb, NULL, (void *)_svc);
+               if (MSG_SUCCESS != ret) {
+                       free(_svc);
+                       return ERROR_CONVERT(ret);
+               }
+       }
+
        *svc = (messages_service_h) _svc;
 
        return MESSAGES_ERROR_NONE;
@@ -836,32 +858,11 @@ int messages_set_message_incoming_cb(messages_service_h svc, messages_incoming_c
 {
        CHECK_MESSAGES_SUPPORTED(MESSAGES_TELEPHONY_SMS_FEATURE);
 
-       int ret;
-
        messages_service_s *_svc = (messages_service_s *) svc;
 
        CHECK_NULL(_svc);
        CHECK_NULL(callback);
 
-       if (NULL == _svc->incoming_cb) {
-               ret = ERROR_CONVERT(msg_reg_sms_message_callback(_svc->service_h, &_messages_incoming_mediator_cb, 0, (void *)_svc)
-                       );
-               if (MESSAGES_ERROR_NONE != ret)
-                       return ret;
-
-               ret = ERROR_CONVERT(msg_reg_cb_message_callback(_svc->service_h, &_messages_incoming_cb_mediator_cb, true, (void *)_svc)
-                       );
-               if (MESSAGES_ERROR_NONE != ret)
-                       return ret;
-
-               if (MESSAGES_ERROR_NONE == _messages_check_feature(MESSAGES_TELEPHONY_MMS_FEATURE)) {
-                       ret = ERROR_CONVERT(msg_reg_mms_conf_message_callback(_svc->service_h, &_messages_incoming_mediator_cb, NULL, (void *)_svc)
-                               );
-                       if (MESSAGES_ERROR_NONE != ret)
-                               return ret;
-               }
-       }
-
        _svc->incoming_cb = (void *)callback;
        _svc->incoming_cb_user_data = (void *)user_data;
        _svc->incoming_cb_enabled = true;