Skip to content

Commit 7b65d70

Browse files
Address PR feedback
1 parent 26cf39f commit 7b65d70

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

libwebauthn/src/transport/ble/btleplug/manager.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,10 @@ async fn on_peripheral_service_data(
7878
}
7979

8080
#[instrument(level = Level::DEBUG, skip_all)]
81-
/// Starts a discovery for devices with specific service data
81+
/// Starts a discovery for devices advertising service data on any of the provided UUIDs
8282
pub async fn start_discovery_for_service_data(
83-
uuids: Vec<Uuid>,
84-
) -> Result<impl Stream<Item = (Peripheral, Vec<u8>)>, Error> {
83+
uuids: &[Uuid],
84+
) -> Result<impl Stream<Item = (Peripheral, Vec<u8>)> + use<'_>, Error> {
8585
let adapter = get_adapter().await?;
8686
let scan_filter = ScanFilter::default();
8787

@@ -93,11 +93,9 @@ pub async fn start_discovery_for_service_data(
9393
.or(Err(Error::ConnectionFailed))?;
9494

9595
let stream = events.filter_map({
96-
let adapter = adapter.clone();
97-
let uuids = uuids.clone();
9896
move |event| {
9997
let adapter = adapter.clone();
100-
let uuids = uuids.clone();
98+
let uuids = uuids.to_vec();
10199
async move {
102100
// trace!(?event);
103101
match event {

libwebauthn/src/transport/cable/qr_code_device.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -184,12 +184,13 @@ impl CableQrCodeDevice<'_> {
184184
}
185185

186186
async fn await_advertisement(&self) -> Result<(FidoDevice, DecryptedAdvert), Error> {
187-
let stream = btleplug::manager::start_discovery_for_service_data(vec![
188-
Uuid::parse_str(CABLE_UUID_GOOGLE).unwrap(),
187+
let uuids = &[
189188
Uuid::parse_str(CABLE_UUID_FIDO).unwrap(),
190-
])
191-
.await
192-
.or(Err(Error::Transport(TransportError::TransportUnavailable)))?;
189+
Uuid::parse_str(CABLE_UUID_GOOGLE).unwrap(), // Deprecated, but may still be in use.
190+
];
191+
let stream = btleplug::manager::start_discovery_for_service_data(uuids)
192+
.await
193+
.or(Err(Error::Transport(TransportError::TransportUnavailable)))?;
193194

194195
let mut stream = pin!(stream);
195196
while let Some((peripheral, data)) = stream.as_mut().next().await {
@@ -225,7 +226,8 @@ impl CableQrCodeDevice<'_> {
225226
return Ok((device, advert));
226227
}
227228

228-
unreachable!()
229+
warn!("BLE advertisement discovery stream terminated");
230+
Err(Error::Transport(TransportError::TransportUnavailable))
229231
}
230232
}
231233

0 commit comments

Comments
 (0)