diff mbox series

[BlueZ,3/5] device: Fix returning discovery error for Device.Pair

Message ID 20230728053153.584222-4-simon.mikuda@streamunlimited.com (mailing list archive)
State New, archived
Headers show
Series Device pairing and discovery fixes | expand

Checks

Context Check Description
tedd_an/pre-ci_am success Success
tedd_an/CheckPatch warning WARNING:TYPO_SPELLING: 'successfull' may be misspelled - perhaps 'successful'? #80: If discovery was requesed from pair request we will report successfull ^^^^^^^^^^^ WARNING:LONG_LINE: line length of 82 exceeds 80 columns #104: FILE: src/device.c:6355: + err = device_discover_services(device, bdaddr_type, bonding->msg); WARNING:LONG_LINE: line length of 85 exceeds 80 columns #107: FILE: src/device.c:6358: + g_dbus_emit_property_changed(dbus_conn, device->path, WARNING:LONG_LINE: line length of 86 exceeds 80 columns #112: FILE: src/device.c:6363: + g_dbus_send_reply(dbus_conn, bonding->msg, DBUS_TYPE_INVALID); /github/workspace/src/src/13331216.patch total: 0 errors, 4 warnings, 25 lines checked NOTE: For some of the reported defects, checkpatch may be able to mechanically convert to the typical style using --fix or --fix-inplace. /github/workspace/src/src/13331216.patch has style problems, please review. NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO NOTE: If any of the errors are false positives, please report them to the maintainer, see CHECKPATCH in MAINTAINERS.
tedd_an/GitLint success Gitlint PASS
tedd_an/IncrementalBuild success Incremental Build PASS

Commit Message

Simon Mikuda July 28, 2023, 5:31 a.m. UTC
If discovery was requesed from pair request we will report successfull
pairing even if there was an error during discovery.
---
 src/device.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/src/device.c b/src/device.c
index 6f28e261e..5a39a6f83 100644
--- a/src/device.c
+++ b/src/device.c
@@ -6302,6 +6302,7 @@  void device_bonding_complete(struct btd_device *device, uint8_t bdaddr_type,
 	struct bonding_req *bonding = device->bonding;
 	struct authentication_req *auth = device->authr;
 	struct bearer_state *state = get_state(device, bdaddr_type);
+	int err;
 
 	DBG("bonding %p status 0x%02x", bonding, status);
 
@@ -6351,8 +6352,16 @@  void device_bonding_complete(struct btd_device *device, uint8_t bdaddr_type,
 		DBG("Proceeding with service discovery");
 		/* If we are initiators remove any discovery timer and just
 		 * start discovering services directly */
-		device_discover_services(device, bdaddr_type, bonding->msg);
-
+		err = device_discover_services(device, bdaddr_type, bonding->msg);
+		if (err) {
+			if (device->pending_paired) {
+				g_dbus_emit_property_changed(dbus_conn, device->path,
+						DEVICE_INTERFACE, "Paired");
+				device->pending_paired = false;
+			}
+			/* Disregard browse errors in case of Pair */
+			g_dbus_send_reply(dbus_conn, bonding->msg, DBUS_TYPE_INVALID);
+		}
 		bonding_request_free(bonding);
 	} else if (!state->svc_resolved) {
 		if (!device->browse && !device->discov_timer &&