modify error return of crud/observe cb 03/63603/3
authoryoungman <yman.jung@samsung.com>
Fri, 25 Mar 2016 00:27:27 +0000 (09:27 +0900)
committeryoungman <yman.jung@samsung.com>
Fri, 25 Mar 2016 02:22:15 +0000 (11:22 +0900)
Change-Id: I66481a24670a22bce066597b38f635cf558622fb
Signed-off-by: youngman <yman.jung@samsung.com>
daemon/icd-ioty-ocprocess.c
lib/icl-remote-resource-crud.c
test/iotcon-test-basic-client.c

index eb1dc9559a3a461c5862d82a2ec72e3b5c98b6f2..66e3766403f280ae05c8d716db002ad9abf2ee55 100644 (file)
@@ -771,7 +771,7 @@ static void _observe_cb_response_error(const char *dest,
        g_variant_builder_init(&options, G_VARIANT_TYPE("a(qs)"));
        payload = icd_payload_representation_empty_gvariant();
 
-       value = g_variant_new("(a(qs)vii)", &options, payload, ret_val, 0);
+       value = g_variant_new("(a(qs)vii)", &options, payload, ret_val, -1);
 
        ret = _ocprocess_response_signal(dest, IC_DBUS_SIGNAL_OBSERVE, signal_number, value);
        if (IOTCON_ERROR_NONE != ret)
index 620b10e6ce4cc9bcc2c036bf3877a1158cf8b245..6d91ef9df87746d35a85010ddf6825234534a9c9 100644 (file)
@@ -99,6 +99,9 @@ static int _icl_parse_crud_gvariant(iotcon_request_type_e request_type,
        else
                g_variant_get(gvar, "(a(qs)vi)", &options_iter, &repr_gvar, &res);
 
+       if (res < IOTCON_ERROR_NONE)
+               return icl_dbus_convert_daemon_error(res);
+
        if (options_iter) {
                options = _icl_parse_options_iter(options_iter);
                g_variant_iter_free(options_iter);
@@ -114,8 +117,6 @@ static int _icl_parse_crud_gvariant(iotcon_request_type_e request_type,
                }
        }
 
-       res = icl_dbus_convert_daemon_error(res);
-
        resp = calloc(1, sizeof(struct icl_resource_response));
        if (NULL == resp) {
                ERR("calloc() Fail(%d)", errno);
@@ -186,9 +187,10 @@ static void _icl_on_crud_cb(iotcon_request_type_e request_type,
                free(cb_container);
                return;
        }
-       if (cb_container->cb)
+       if (cb_container->cb) {
                cb_container->cb(cb_container->resource, IOTCON_ERROR_NONE, request_type,
                                response, cb_container->user_data);
+       }
 
        if (response)
                iotcon_response_destroy(response);
@@ -403,6 +405,11 @@ static void _icl_on_observe_cb(GDBusConnection *connection,
 
        g_variant_get(parameters, "(a(qs)vii)", &options_iter, &repr_gvar, &res, &seq_number);
 
+       if (res < IOTCON_ERROR_NONE && cb_container->cb) {
+               cb_container->cb(cb_container->resource, icl_dbus_convert_daemon_error(res),
+                               seq_number, NULL, cb_container->user_data);
+       }
+
        if (options_iter) {
                options = _icl_parse_options_iter(options_iter);
                g_variant_iter_free(options_iter);
@@ -415,15 +422,14 @@ static void _icl_on_observe_cb(GDBusConnection *connection,
                        if (options)
                                iotcon_options_destroy(options);
 
-                       if (cb_container->cb)
+                       if (cb_container->cb) {
                                cb_container->cb(cb_container->resource, IOTCON_ERROR_SYSTEM, -1,
                                                NULL, cb_container->user_data);
+                       }
                        return;
                }
        }
 
-       res = icl_dbus_convert_daemon_error(res);
-
        response = calloc(1, sizeof(struct icl_resource_response));
        if (NULL == response) {
                ERR("calloc() Fail(%d)", errno);
@@ -432,18 +438,20 @@ static void _icl_on_observe_cb(GDBusConnection *connection,
                if (options)
                        iotcon_options_destroy(options);
 
-               if (cb_container->cb)
+               if (cb_container->cb) {
                        cb_container->cb(cb_container->resource, IOTCON_ERROR_OUT_OF_MEMORY, -1,
                                        NULL, cb_container->user_data);
+               }
                return;
        }
        response->result = res;
        response->repr = repr;
        response->header_options = options;
 
-       if (cb_container->cb)
+       if (cb_container->cb) {
                cb_container->cb(cb_container->resource, IOTCON_ERROR_NONE, seq_number,
                                response, cb_container->user_data);
+       }
 
        if (response)
                iotcon_response_destroy(response);
index e2eb5aebaf29ea07d3606a749e980829d830f295..a45a303eb77d7643e39eb7acae0047f1ad309b8f 100644 (file)
@@ -39,6 +39,8 @@ static void _on_observe(iotcon_remote_resource_h resource, iotcon_error_e err,
        iotcon_representation_h repr;
        iotcon_response_result_e response_result;
 
+       RETM_IF(IOTCON_ERROR_NONE != err, "_on_observe error(%d)", err);
+
        ret = iotcon_response_get_result(response, &response_result);
        if (IOTCON_ERROR_NONE != ret) {
                ERR("iotcon_response_get_result() Fail(%d)", ret);