adding freedesktop DBus error handling 40/187040/1 accepted/tizen/5.0/unified/20181102.012952 accepted/tizen/unified/20180820.060105 submit/tizen/20180817.114430 submit/tizen_5.0/20181101.000001
authorAbhishek Vijay <abhishek.v@samsung.com>
Fri, 17 Aug 2018 10:53:12 +0000 (16:23 +0530)
committerAbhishek Vijay <abhishek.v@samsung.com>
Fri, 17 Aug 2018 10:53:12 +0000 (16:23 +0530)
Change-Id: I1f76e2067b7cf68050515cf0265ffcc643d5d49e
Signed-off-by: Abhishek Vijay <abhishek.v@samsung.com>
src/sync-client/sync_manager.c

index 2523f837de90a831936fcf1f1b251e8597544006..0c3102cb482bcfb29583a112da5ddaf8b9f41fb8 100644 (file)
@@ -36,6 +36,7 @@
 #define SYNC_MANAGER_DBUS_PATH "/org/tizen/sync/manager"
 #define SYNC_ADAPTER_DBUS_PATH "/org/tizen/sync/adapter"
 #define SYNC_ERROR_PREFIX "org.tizen.sync.Error"
+#define FREEDEKTOP_ERROR_PREFIX "org.freedesktop.DBus.Error"
 
 
 #include <system_info.h>
@@ -161,14 +162,23 @@ static int _sync_get_error_code(bool is_success, GError *error)
                        gchar *remote_error = g_dbus_error_get_remote_error(error);
                        if (remote_error) {
                                LOG_LOGD("Remote error [%s]", remote_error);
-                               int error_enum_count = G_N_ELEMENTS(_sync_errors);
-                               int i = 0;
-                               for (i = 0; i < error_enum_count; i++) {
-                                       if (g_strcmp0(_sync_errors[i].dbus_error_name, remote_error) == 0) {
-                                               LOG_LOGD("Remote error code matched [%d]", _sync_errors[i].error_code);
+                               if (g_str_has_prefix(remote_error, SYNC_ERROR_PREFIX) == true) {
+                                       int error_enum_count = G_N_ELEMENTS(_sync_errors);
+                                       for (int i = 0; i < error_enum_count; i++) {
+                                               if (g_strcmp0(_sync_errors[i].dbus_error_name, remote_error) == 0) {
+                                                       LOG_LOGD("Remote error code matched [%d]", _sync_errors[i].error_code);
+                                                       g_free(remote_error);
+                                                       remote_error = NULL;
+                                                       return _sync_errors[i].error_code;
+                                               }
+                                       }
+                               } else if (g_str_has_prefix(remote_error, FREEDEKTOP_ERROR_PREFIX) == true) {
+                                       const char* error_name = FREEDEKTOP_ERROR_PREFIX".AccessDenied";
+                                       if (g_strcmp0(error_name, remote_error) == 0) {
+                                               LOG_LOGD("Error code matched with freedesktop error");
                                                g_free(remote_error);
                                                remote_error = NULL;
-                                               return _sync_errors[i].error_code;
+                                               return SYNC_ERROR_PERMISSION_DENIED;
                                        }
                                }
                        }