Match the correct privilege for RFCOMM listen and accept API
[platform/core/connectivity/bluetooth-frwk.git] / bt-service-adaptation / services / rfcomm / bt-service-rfcomm.c
index 19c1b07..9bfa821 100644 (file)
@@ -86,6 +86,7 @@ static void __bt_rfcomm_reply_pending_request(int result,
                        g_array_free(out_param, TRUE);
                        break;
                }
+               case BT_RFCOMM_LISTEN_AND_ACCEPT:
                case BT_RFCOMM_LISTEN: {
                        GUnixFDList *fd_list = NULL;
                        GError *error = NULL;
@@ -207,7 +208,19 @@ gboolean __bt_send_rfcomm_server_fd(gpointer user_data)
        return FALSE;
 }
 
-int _bt_rfcomm_socket_listen(char *svc_name, char *uuid)
+gboolean __bt_send_rfcomm_server_fd_with_accept(gpointer user_data)
+{
+       BT_DBG("+");
+
+       __bt_rfcomm_reply_pending_request(BLUETOOTH_ERROR_NONE,
+                       BT_RFCOMM_LISTEN_AND_ACCEPT, user_data, sizeof(int));
+
+       g_free(user_data);
+       BT_DBG("-");
+       return FALSE;
+}
+
+int _bt_rfcomm_socket_listen(char *svc_name, char *uuid, bool accept)
 {
        int channel = 0;
        int sock_fd;
@@ -224,7 +237,11 @@ int _bt_rfcomm_socket_listen(char *svc_name, char *uuid)
                return BLUETOOTH_ERROR_INTERNAL;
        }
 
-       g_idle_add(__bt_send_rfcomm_server_fd, g_memdup(&sock_fd, sizeof(int)));
+       if (accept == false)
+               g_idle_add(__bt_send_rfcomm_server_fd, g_memdup(&sock_fd, sizeof(int)));
+       else
+               g_idle_add(__bt_send_rfcomm_server_fd_with_accept, g_memdup(&sock_fd, sizeof(int)));
+
        BT_DBG("-");
        return sock_fd;
 }