From eed01dd3609e90e3c8cd043656734c500956c793 Mon Sep 17 00:00:00 2001 From: Steven Ceuppens Date: Mon, 1 Jun 2026 23:06:43 -0600 Subject: [PATCH] fix(bluez): forward display_passkey, display_pin_code, and request_authorization agent messages These three Agent1 D-Bus methods were stubs that returned Ok(()) without forwarding events through the message channel. This prevented consumers from receiving passkey/PIN display requests during Bluetooth keyboard pairing. Now all three methods send their respective Message variants through the channel, matching the existing pattern used by request_confirmation, request_passkey, and request_pin_code. --- bluez/src/agent1.rs | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/bluez/src/agent1.rs b/bluez/src/agent1.rs index de5b4e4..f3ddb2b 100644 --- a/bluez/src/agent1.rs +++ b/bluez/src/agent1.rs @@ -122,6 +122,15 @@ impl Agent { ) -> zbus::fdo::Result<()> { tracing::debug!(?device, passkey, entered, "display_passkey"); + _ = self + .message_sender + .send(Message::DisplayPasskey { + device, + passkey, + entered, + }) + .await; + Ok(()) } @@ -150,6 +159,14 @@ impl Agent { ) -> zbus::fdo::Result<()> { tracing::debug!(?device, pin_code, "display_pin_code"); + _ = self + .message_sender + .send(Message::DisplayPinCode { + device, + pincode: pin_code, + }) + .await; + Ok(()) } @@ -173,7 +190,18 @@ impl Agent { async fn request_authorization(&mut self, device: OwnedObjectPath) -> zbus::fdo::Result<()> { tracing::debug!(?device, "request_authorization"); - Ok(()) + let (response, response_rx) = oneshot::channel::(); + + _ = self + .message_sender + .send(Message::RequestAuthorization { device, response }) + .await; + + match response_rx.await { + Ok(true) => Ok(()), + Ok(false) => Err(zbus::fdo::Error::Failed("cancelled".to_string())), + Err(why) => Err(zbus::fdo::Error::Failed(why.to_string())), + } } /// This method gets called when the service daemon