Fix the incorrect Tx / Rx data size issue
[platform/core/connectivity/bluetooth-frwk.git] / bt-service-adaptation / services / bt-request-handler.c
index d36d751..2d7b1dd 100644 (file)
@@ -513,7 +513,7 @@ int __bt_bluez_request(int function_name,
                }
                dbus_data.num_app = n;
                g_array_append_vals(*out_param1, &dbus_data, sizeof(bt_battery_dbus_data_t));
-               g_slist_free(data->atm_list);
+               g_slist_free_full(data->atm_list, g_free);
                g_free(data);
                data = NULL;
                break;
@@ -1542,7 +1542,7 @@ int __bt_bluez_request(int function_name,
                int size;
                __bt_service_get_parameters(in_param1, &uid, sizeof(uid_t));
                __bt_service_get_parameters(in_param2, &pid, sizeof(pid_t));
-               __bt_service_get_parameters(in_param3, &size, sizeof(int));
+               __bt_service_get_parameters(in_param3, &size, sizeof(unsigned int));
                BT_DBG("Sending details to bluetooth battery monitor: %ld, %ld, %d", (long int)uid, (long int)pid, size);
                _bt_bm_add_transaction_details(uid, pid, size, RX_DATA);
                break;
@@ -1553,11 +1553,29 @@ int __bt_bluez_request(int function_name,
                int size;
                __bt_service_get_parameters(in_param1, &uid, sizeof(uid_t));
                __bt_service_get_parameters(in_param2, &pid, sizeof(pid_t));
-               __bt_service_get_parameters(in_param3, &size, sizeof(int));
+               __bt_service_get_parameters(in_param3, &size, sizeof(unsigned int));
                BT_DBG("Sending details to bluetooth battery monitor: %ld, %ld, %d", (long int)uid, (long int)pid, size);
                _bt_bm_add_transaction_details(uid, pid, size, TX_DATA);
                break;
-        }
+       }
+       case BT_RFCOMM_UPDATE_CONNECTION_INFO: {
+               gboolean connected = FALSE;
+               int socket_fd = -1;
+               int role = RFCOMM_ROLE_SERVER;
+
+               sender = (char *)g_dbus_method_invocation_get_sender(context);
+
+               __bt_service_get_parameters(in_param1, &role, sizeof(int));
+               __bt_service_get_parameters(in_param2, &connected, sizeof(gboolean));
+               __bt_service_get_parameters(in_param3, &socket_fd, sizeof(int));
+
+               if (connected == TRUE)
+                       result = _bt_rfcomm_conn_added(sender, role, socket_fd);
+               else
+                       result = _bt_rfcomm_conn_removed(sender, role, socket_fd);
+
+               break;
+       }
        case BT_AUDIO_SELECT_ROLE: {
                bluetooth_audio_role_t role;
 
@@ -3790,13 +3808,15 @@ int __bt_agent_request(int function_name,
                char *uuid;
                char *path;
                int fd;
+               char *sender;
 
+               sender = (char *)g_dbus_method_invocation_get_sender(context);
                __bt_service_get_parameters(in_param1, &type, sizeof(int));
                uuid = (char *)g_variant_get_data(in_param2);
                path = (char *)g_variant_get_data(in_param3);
                __bt_service_get_parameters(in_param4, &fd, sizeof(int));
 
-               result = _bt_register_osp_server_in_agent(type, uuid, path, fd);
+               result = _bt_register_osp_server_in_agent(sender, type, uuid, path, fd);
                break;
        }
        case BT_UNSET_AUTHORIZATION: {
@@ -3992,6 +4012,7 @@ gboolean __bt_service_check_privilege(int function_name,
        case BT_RFCOMM_REMOVE_SOCKET:
        case BT_RFCOMM_SEND_RX_DETAILS:
        case BT_RFCOMM_SEND_TX_DETAILS:
+       case BT_RFCOMM_UPDATE_CONNECTION_INFO:
 
        case BT_OPP_PUSH_FILES:
        case BT_OPP_CANCEL_PUSH:
@@ -4397,6 +4418,9 @@ static void __name_owner_changed(GDBusConnection *connection,
 
        /* Check if le_scanning app is terminated */
        _bt_check_le_scanner_app_termination(name);
+
+       /* Check if RFCOMM app is terminated */
+       _bt_rfcomm_check_termination(name);
 }
 
 static void __bt_service_bus_acquired_handler(GDBusConnection *connection,