From fba79d573c21aba871a5ce337cd98e0f1b7b448f Mon Sep 17 00:00:00 2001 From: Miao-chen Chou Date: Mon, 19 Apr 2021 16:36:02 -0700 Subject: [PATCH] device: Reply to connect request if SDP search failed SDP request can be initiated during BR/EDR connection. This fixes a missing reply to the method call to prevent generic error message for no reply. The following test steps were performed: (1) Put Bose QC35 into pairing mode, start scanning on bluetoothctl (2) Turn off the headphones and connect to the headphones (3) Verify that error should returns immediately to bluetoothctl --- src/device.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/device.c b/src/device.c index 7a6f7643a..65838f59f 100644 --- a/src/device.c +++ b/src/device.c @@ -4981,6 +4981,7 @@ static void search_cb(sdp_list_t *recs, int err, gpointer user_data) { struct browse_req *req = user_data; struct btd_device *device = req->device; + DBusMessage *reply; GSList *primaries; char addr[18]; @@ -5024,6 +5025,17 @@ static void search_cb(sdp_list_t *recs, int err, gpointer user_data) DEVICE_INTERFACE, "UUIDs"); send_reply: + /* If SDP search failed during an ongoing connection request, we should + * reply to D-Bus method call. + */ + if (err < 0 && device->connect) { + DBG("SDP failed during connection"); + reply = btd_error_failed(device->connect, strerror(-err)); + g_dbus_send_message(dbus_conn, reply); + dbus_message_unref(device->connect); + device->connect = NULL; + } + device_svc_resolved(device, BROWSE_SDP, BDADDR_BREDR, err); } -- 2.47.3