Allow zero length for GATT server write request 03/259003/1
authorDoHyun Pyun <dh79.pyun@samsung.com>
Mon, 31 May 2021 01:22:11 +0000 (10:22 +0900)
committerDoHyun Pyun <dh79.pyun@samsung.com>
Mon, 31 May 2021 01:22:11 +0000 (10:22 +0900)
Google's Chromecast app needs to response for zero
length write request in GATT server.

Change-Id: Ie925246c23078c070898f84a5fd8db908d2c854b
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
bt-service/services/gatt/bt-service-gatt.c

index a07b268..a4e312f 100644 (file)
@@ -2011,7 +2011,7 @@ static void __bt_handle_gatt_server_write_requested(event_gatts_srvc_write_attr_
        int result = BLUETOOTH_ERROR_NONE;
        gboolean need_resp;
        gboolean is_prepare_write;
-       char *write_val;
+       char *write_val = NULL;
        GVariant *data = NULL;
        int i;
        struct gatt_server_req_info *req_info = NULL;
@@ -2027,11 +2027,6 @@ static void __bt_handle_gatt_server_write_requested(event_gatts_srvc_write_attr_
        BT_INFO("GATT Server Write Req needs response: [%d]", event->need_rsp);
        BT_INFO("GATT Server Write Req Is Prep: [%d]", event->is_prep);
 
-       if (event->length <= 0) {
-               BT_INFO("GATT Server write requested, but length of attr value is 0");
-               return;
-       }
-
 #ifdef TIZEN_BLUEDROID_PORTING
        if (event->is_prep) {
                BT_INFO("receive prepare_write request");
@@ -2042,7 +2037,8 @@ static void __bt_handle_gatt_server_write_requested(event_gatts_srvc_write_attr_
        need_resp = event->need_rsp;
        is_prepare_write = event->is_prep;
 
-       write_val = g_memdup(&event->value[0], event->length);
+       if (event->length > 0)
+               write_val = g_memdup(&event->value[0], event->length);
 
        address = g_malloc0(BT_ADDRESS_STRING_SIZE);
        _bt_convert_addr_type_to_string(address,