File tree Expand file tree Collapse file tree 2 files changed +12
-12
lines changed
libwebauthn/src/transport Expand file tree Collapse file tree 2 files changed +12
-12
lines changed Original file line number Diff line number Diff 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
8282pub 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 {
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments