Linux bluetooth development
 help / color / mirror / Atom feed
* [PATCH bluez] gatt-client: Fix not emitting MTU on reconnection
@ 2026-11-14 15:09 Nebojša Cvetković via B4 Relay
  2026-11-14 17:00 ` [bluez] " bluez.test.bot
  0 siblings, 1 reply; 2+ messages in thread
From: Nebojša Cvetković via B4 Relay @ 2026-11-14 15:09 UTC (permalink / raw)
  To: Linux Bluetooth; +Cc: Nebojša Cvetković

From: Nebojša Cvetković <nebkat@gmail.com>

Characteristics kept across a disconnection have their MTU exchange
callback registered on the bt_att of the connection they were created
on, so no PropertiesChanged is emitted for MTU on later connections. As
MTU is omitted while disconnected, a client that enumerated the objects
in between has no MTU for the whole connection, and one that kept them
has the value of the previous connection.

Register the callback on the bt_att of the new connection, and emit MTU
as it is no longer omitted.

Fixes: 3a6b5f5ec14c ("gatt: Emit PropertiesChanged("MTU") when MTU is exchanged")
Assisted-by: Claude:claude-opus-5-5
---
Signed-off-by: Nebojša Cvetković <nebkat@gmail.com>
---
 src/gatt-client.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/src/gatt-client.c b/src/gatt-client.c
index d94dc9d..2d58ee2 100644
--- a/src/gatt-client.c
+++ b/src/gatt-client.c
@@ -2414,9 +2414,29 @@ void btd_gatt_client_eatt_connect(struct btd_gatt_client *client)
 	}
 }
 
+static void characteristic_attach_att(void *data, void *user_data)
+{
+	struct characteristic *chrc = data;
+	struct bt_att *att = user_data;
+
+	chrc->exchange_id = bt_att_register_exchange(att, att_exchange, chrc,
+									NULL);
+
+	g_dbus_emit_property_changed(btd_get_dbus_connection(), chrc->path,
+					GATT_CHARACTERISTIC_IFACE, "MTU");
+}
+
+static void service_attach_att(void *data, void *user_data)
+{
+	struct service *service = data;
+
+	queue_foreach(service->chrcs, characteristic_attach_att, user_data);
+}
+
 void btd_gatt_client_connected(struct btd_gatt_client *client)
 {
 	struct bt_gatt_client *gatt;
+	struct bt_att *att;
 
 	gatt = btd_device_get_gatt_client(client->device);
 	if (!gatt) {
@@ -2429,6 +2449,15 @@ void btd_gatt_client_connected(struct btd_gatt_client *client)
 	bt_gatt_client_unref(client->gatt);
 	client->gatt = bt_gatt_client_clone(gatt);
 
+	/*
+	 * Characteristics kept from a previous connection have their exchange
+	 * callback registered on its bt_att, and MTU was omitted while
+	 * disconnected, so register them again and emit MTU.
+	 */
+	att = bt_gatt_client_get_att(client->gatt);
+	if (att)
+		queue_foreach(client->services, service_attach_att, att);
+
 	/*
 	 * Services have already been created before. Re-enable notifications
 	 * for any pre-registered notification sessions.

---
base-commit: 20ffd285b58facfd1f2478d159a5f941b09d5be1
change-id: 20261114-gatt-client-mtu-reconnect-125381776960

Best regards,
--  
Nebojša Cvetković <nebkat@gmail.com>



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* RE: [bluez] gatt-client: Fix not emitting MTU on reconnection
  2026-11-14 15:09 [PATCH bluez] gatt-client: Fix not emitting MTU on reconnection Nebojša Cvetković via B4 Relay
@ 2026-11-14 17:00 ` bluez.test.bot
  0 siblings, 0 replies; 2+ messages in thread
From: bluez.test.bot @ 2026-11-14 17:00 UTC (permalink / raw)
  To: linux-bluetooth, nebkat

[-- Attachment #1: Type: text/plain, Size: 1048 bytes --]

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/series/1211415/

---Test result---

Test Summary:
CheckPatch                    PASS      0.52 seconds
GitLint                       FAIL      0.35 seconds
BuildEll                      PASS      20.32 seconds
BluezMake                     PASS      312.39 seconds
CheckSmatch                   PASS      315.19 seconds
bluezmakeextell               PASS      101.22 seconds
TestFunctional                PASS      1191.12 seconds
IncrementalBuild              PASS      313.59 seconds
ScanBuild                     PASS      1185.74 seconds

Details
##############################
Test: GitLint - FAIL
Desc: Run gitlint
Output:
[bluez] gatt-client: Fix not emitting MTU on reconnection

28: B2 Line has trailing whitespace: "--  "


https://github.com/bluez/bluez/pull/2827

---
Regards,
Linux Bluetooth


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-11-14 17:00 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-14 15:09 [PATCH bluez] gatt-client: Fix not emitting MTU on reconnection Nebojša Cvetković via B4 Relay
2026-11-14 17:00 ` [bluez] " bluez.test.bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox