Check permission denied error for gdbus
authorSeonah Moon <seonah1.moon@samsung.com>
Mon, 13 Apr 2020 10:13:51 +0000 (19:13 +0900)
committerSeonah Moon <seonah1.moon@samsung.com>
Mon, 13 Apr 2020 10:13:51 +0000 (19:13 +0900)
include/wifi-aware.h
src/include/wifi-aware-private.h
src/wifi-aware-gdbus.c
src/wifi-aware-private.c

index 87715e0..a1ee315 100644 (file)
@@ -444,6 +444,7 @@ int wifi_aware_enable(wifi_aware_enabled_cb callback, void *user_data);
  * @retval #WIFI_AWARE_ERROR_NOT_INITIALIZED
  * @retval #WIFI_AWARE_ERROR_INVALID_OPERATION
  * @retval #WIFI_AWARE_ERROR_OPERATION_FAILED
+ * @retval #WIFI_AWARE_ERROR_PERMISSION_DENIED
  * @see wifi_aware_enable()
  */
 int wifi_aware_disable();
@@ -524,6 +525,7 @@ int wifi_aware_session_unset_terminated_cb(wifi_aware_session_h session);
  * @retval #WIFI_AWARE_ERROR_INVALID_PARAMETER
  * @retval #WIFI_AWARE_ERROR_INVALID_OPERATION
  * @retval #WIFI_AWARE_ERROR_OPERATION_FAILED
+ * @retval #WIFI_AWARE_ERROR_PERMISSION_DENIED
  * @see wifi_aware_session_publish()
  * @see wifi_aware_session_subscribe()
  */
@@ -907,6 +909,7 @@ typedef void(*wifi_aware_data_path_open_cb)(wifi_aware_data_path_h data_path, wi
  * @retval #WIFI_AWARE_ERROR_INVALID_OPERATION
  * @retval #WIFI_AWARE_ERROR_INVALID_PARAMETER
  * @retval #WIFI_AWARE_ERROR_OPERATION_FAILED
+ * @retval #WIFI_AWARE_ERROR_PERMISSION_DENIED
  * @see wifi_aware_data_path_close()
  */
 int wifi_aware_data_path_open(wifi_aware_data_path_h data_path,
@@ -921,6 +924,7 @@ int wifi_aware_data_path_open(wifi_aware_data_path_h data_path,
  * @retval #WIFI_AWARE_ERROR_INVALID_OPERATION
  * @retval #WIFI_AWARE_ERROR_INVALID_PARAMETER
  * @retval #WIFI_AWARE_ERROR_OPERATION_FAILED
+ * @retval #WIFI_AWARE_ERROR_PERMISSION_DENIED
  * @see wifi_aware_data_path_open()
  */
 int wifi_aware_data_path_close(wifi_aware_data_path_h data_path);
index 75e330e..d9c562d 100644 (file)
@@ -29,6 +29,7 @@ extern "C" {
 
 const char *_wifi_aware_convert_error_type_to_string(wifi_aware_error_e err);
 wifi_aware_error_e _wifi_aware_convert_error_string_to_enum(const char *error);
+wifi_aware_error_e _wifi_aware_convert_gdbus_error(GDBusError error);
 wifi_aware_error_e _wifi_aware_convert_nan_manager_error(int error);
 
 bool _wifi_aware_is_initialized();
index 194649c..9771cb3 100644 (file)
@@ -195,13 +195,14 @@ static int __wifi_aware_dbus_method_call_sync(const char *interface_name,
                        NULL,
                        &error);
 
-       if (*reply == NULL) {
-               if (error == NULL)
-                       WIFI_AWARE_LOGE("g_dbus_connection_call_sync failed: unknown error");
-               else
-                       WIFI_AWARE_LOGE("g_dbus_connection_call_sync failed: [%d:%s]",
-                                       error->code, error->message);
+       if (error) {
+               WIFI_AWARE_LOGE("g_dbus_connection_call_sync failed: [%d:%s]",
+                               error->code, error->message);
+               return _wifi_aware_convert_gdbus_error(error->code);
+       }
 
+       if (*reply == NULL) {
+               WIFI_AWARE_LOGE("g_dbus_connection_call_sync failed: unknown error");
                return WIFI_AWARE_ERROR_OPERATION_FAILED;
        }
        return WIFI_AWARE_ERROR_NONE;
index 41071b4..553aa41 100644 (file)
@@ -157,6 +157,27 @@ wifi_aware_error_e _wifi_aware_convert_error_string_to_enum(const char *error)
        return WIFI_AWARE_ERROR_OPERATION_FAILED;
 }
 
+wifi_aware_error_e _wifi_aware_convert_gdbus_error(GDBusError error)
+{
+       switch(error) {
+       case G_DBUS_ERROR_NO_REPLY:
+               return WIFI_AWARE_ERROR_INVALID_OPERATION;
+       case G_DBUS_ERROR_UNKNOWN_METHOD:
+        return WIFI_AWARE_ERROR_INVALID_OPERATION;
+       case G_DBUS_ERROR_INVALID_ARGS:
+        return WIFI_AWARE_ERROR_INVALID_PARAMETER;
+       case G_DBUS_ERROR_ACCESS_DENIED:
+               return WIFI_AWARE_ERROR_PERMISSION_DENIED;
+       case G_DBUS_ERROR_NOT_SUPPORTED:
+               return WIFI_AWARE_ERROR_NOT_SUPPORTED;
+       default:
+               WIFI_AWARE_LOGI("Unknown Error %d", error);
+               break;
+       }
+       
+       return WIFI_AWARE_ERROR_OPERATION_FAILED;
+}
+
 wifi_aware_error_e _wifi_aware_convert_nan_manager_error(int error)
 {
        switch (error) {