If a dbus client calls Connect before service discovery is complete, then attempts to cancel that by calling Disconnect, the original Connect request would never be completed. This fixes the bug by cancelling the Connect call upon cancelling the browse request, which is done when Disconnect is called. --- src/device.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/device.c b/src/device.c index 263f60a..b8247cf 100644 --- a/src/device.c +++ b/src/device.c @@ -626,6 +626,12 @@ static void browse_request_cancel(struct browse_req *req) attio_cleanup(device); + if (req->msg && dbus_message_is_method_call(req->msg, DEVICE_INTERFACE, + "Connect")) { + DBusMessage *reply = btd_error_failed(req->msg, "Cancelled"); + g_dbus_send_message(dbus_conn, reply); + } + browse_request_free(req); } -- 2.7.4