Invoke error result when PBAP request fails 30/223930/2
authorDeokhyun Kim <dukan.kim@samsung.com>
Wed, 5 Feb 2020 06:02:37 +0000 (15:02 +0900)
committerDeokhyun Kim <dukan.kim@samsung.com>
Wed, 5 Feb 2020 06:02:51 +0000 (15:02 +0900)
Change-Id: Ieeb75fe23ac206ad207e93674c01bc1bb172e8c8
Signed-off-by: Deokhyun Kim <dukan.kim@samsung.com>
bt-service-adaptation/services/obex/bt-service-pbap.c

index 1db84e8..c5341f5 100644 (file)
@@ -450,16 +450,35 @@ void __bt_pbap_select_cb(GDBusProxy *proxy,
        value = g_dbus_proxy_call_finish(proxy, res, &error);
        if (value == NULL) {
                BT_ERR("g_dbus_proxy_call_finish failed");
+               g_object_unref(proxy);
                if (error) {
                        BT_ERR("errCode[%x], message[%s]\n",
                                        error->code, error->message);
+
+                       if (pbap_data->operation == PULL_ALL ||
+                               pbap_data->operation == GET_VCARD) {
+                               GVariant *signal = NULL;
+                               int result = BLUETOOTH_ERROR_INTERNAL;
+                               int event;
+
+                               if (pbap_data->operation == PULL_ALL)
+                                       event = BLUETOOTH_PBAP_PHONEBOOK_PULL;
+                               else
+                                       event = BLUETOOTH_PBAP_VCARD_PULL;
+                               if (strstr(error->message, "Not Found") != NULL)
+                                       result = BLUETOOTH_ERROR_NO_DATA;
+                               signal = g_variant_new("(issi)", result,
+                                               address_string, "", FALSE);
+
+                               _bt_send_event(BT_PBAP_CLIENT_EVENT,
+                                                       event, signal);
+                       }
                        g_clear_error(&error);
                }
 
                selected_path.folder = -1;
                selected_path.type = -1;
 
-               g_object_unref(proxy);
                __bt_pbap_free_data(pbap_data);
                return;
        }