Message ID | 20200328003318.13937-1-sonnysasaka@chromium.org (mailing list archive) |
---|---|
State | Accepted |
Headers | show |
Series | core/device: Handle Just-Works auto-accept | expand |
Hi Sonny, On Fri, Mar 27, 2020 at 5:36 PM Sonny Sasaka <sonnysasaka@chromium.org> wrote: > > The kernel starts to always request confirmation to BlueZ daemon for > Just-Works pairing. In this patch the daemon does auto-accept if the > client has clearly indicated a pairing intent by calling the Pair() > D-Bus API. > --- > src/device.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/src/device.c b/src/device.c > index 69f98e488..db14cc129 100644 > --- a/src/device.c > +++ b/src/device.c > @@ -6168,12 +6168,22 @@ int device_confirm_passkey(struct btd_device *device, uint8_t type, > > auth->passkey = passkey; > > - if (confirm_hint) > + if (confirm_hint) { > + if (device->bonding != NULL) { > + /* We know the client has indicated the intent to pair > + * with the peer device, so we can auto-accept. */ > + btd_adapter_confirm_reply(device->adapter, > + &device->bdaddr, > + type, TRUE); > + return 0; > + } > + > err = agent_request_authorization(auth->agent, device, > confirm_cb, auth, NULL); > - else > + } else { > err = agent_request_confirmation(auth->agent, device, passkey, > confirm_cb, auth, NULL); > + } > > if (err < 0) { > if (err == -EINPROGRESS) { > -- > 2.17.1 > Applied.
Thanks, Luiz. On Mon, Mar 30, 2020 at 11:30 PM Luiz Augusto von Dentz <luiz.dentz@gmail.com> wrote: > > Hi Sonny, > > On Fri, Mar 27, 2020 at 5:36 PM Sonny Sasaka <sonnysasaka@chromium.org> wrote: > > > > The kernel starts to always request confirmation to BlueZ daemon for > > Just-Works pairing. In this patch the daemon does auto-accept if the > > client has clearly indicated a pairing intent by calling the Pair() > > D-Bus API. > > --- > > src/device.c | 14 ++++++++++++-- > > 1 file changed, 12 insertions(+), 2 deletions(-) > > > > diff --git a/src/device.c b/src/device.c > > index 69f98e488..db14cc129 100644 > > --- a/src/device.c > > +++ b/src/device.c > > @@ -6168,12 +6168,22 @@ int device_confirm_passkey(struct btd_device *device, uint8_t type, > > > > auth->passkey = passkey; > > > > - if (confirm_hint) > > + if (confirm_hint) { > > + if (device->bonding != NULL) { > > + /* We know the client has indicated the intent to pair > > + * with the peer device, so we can auto-accept. */ > > + btd_adapter_confirm_reply(device->adapter, > > + &device->bdaddr, > > + type, TRUE); > > + return 0; > > + } > > + > > err = agent_request_authorization(auth->agent, device, > > confirm_cb, auth, NULL); > > - else > > + } else { > > err = agent_request_confirmation(auth->agent, device, passkey, > > confirm_cb, auth, NULL); > > + } > > > > if (err < 0) { > > if (err == -EINPROGRESS) { > > -- > > 2.17.1 > > > Applied. > > -- > Luiz Augusto von Dentz
diff --git a/src/device.c b/src/device.c index 69f98e488..db14cc129 100644 --- a/src/device.c +++ b/src/device.c @@ -6168,12 +6168,22 @@ int device_confirm_passkey(struct btd_device *device, uint8_t type, auth->passkey = passkey; - if (confirm_hint) + if (confirm_hint) { + if (device->bonding != NULL) { + /* We know the client has indicated the intent to pair + * with the peer device, so we can auto-accept. */ + btd_adapter_confirm_reply(device->adapter, + &device->bdaddr, + type, TRUE); + return 0; + } + err = agent_request_authorization(auth->agent, device, confirm_cb, auth, NULL); - else + } else { err = agent_request_confirmation(auth->agent, device, passkey, confirm_cb, auth, NULL); + } if (err < 0) { if (err == -EINPROGRESS) {