@@ -312,23 +312,27 @@ impl Adapter {
312312 let mut adapter_addresses = vec ! [ ] ;
313313
314314 util:: get_adapters_addresses ( |adapter| {
315- let name_iter = unsafe { util:: win_pstr_to_string ( adapter. AdapterName ) } ?;
315+ let name_iter = match unsafe { util:: win_pstr_to_string ( adapter. AdapterName ) } {
316+ Ok ( name) => name,
317+ Err ( err) => {
318+ log:: error!( "Failed to parse adapter name: {}" , err) ;
319+ return false ;
320+ }
321+ } ;
316322 if name_iter == name {
317323 let mut current_address = adapter. FirstUnicastAddress ;
318324 while !current_address. is_null ( ) {
319325 let address = unsafe { ( * current_address) . Address } ;
320- let address = util:: retrieve_ipaddr_from_socket_address ( & address) ;
321- if let Err ( err) = address {
322- log:: error!( "Failed to parse address: {}" , err) ;
323- } else {
324- adapter_addresses. push ( address?) ;
325- }
326- unsafe {
327- current_address = ( * current_address) . Next ;
326+ match util:: retrieve_ipaddr_from_socket_address ( & address) {
327+ Ok ( addr) => adapter_addresses. push ( addr) ,
328+ Err ( err) => {
329+ log:: error!( "Failed to parse address: {}" , err) ;
330+ }
328331 }
332+ unsafe { current_address = ( * current_address) . Next } ;
329333 }
330334 }
331- Ok ( ( ) )
335+ true
332336 } ) ?;
333337
334338 Ok ( adapter_addresses)
@@ -339,23 +343,27 @@ impl Adapter {
339343 let name = util:: guid_to_win_style_string ( & GUID :: from_u128 ( self . guid ) ) ?;
340344 let mut gateways = vec ! [ ] ;
341345 util:: get_adapters_addresses ( |adapter| {
342- let name_iter = unsafe { util:: win_pstr_to_string ( adapter. AdapterName ) } ?;
346+ let name_iter = match unsafe { util:: win_pstr_to_string ( adapter. AdapterName ) } {
347+ Ok ( name) => name,
348+ Err ( err) => {
349+ log:: error!( "Failed to parse adapter name: {}" , err) ;
350+ return false ;
351+ }
352+ } ;
343353 if name_iter == name {
344354 let mut current_gateway = adapter. FirstGatewayAddress ;
345355 while !current_gateway. is_null ( ) {
346356 let gateway = unsafe { ( * current_gateway) . Address } ;
347- let gateway = util:: retrieve_ipaddr_from_socket_address ( & gateway) ;
348- if let Err ( err) = gateway {
349- log:: error!( "Failed to parse gateway: {}" , err) ;
350- } else {
351- gateways. push ( gateway?) ;
352- }
353- unsafe {
354- current_gateway = ( * current_gateway) . Next ;
357+ match util:: retrieve_ipaddr_from_socket_address ( & gateway) {
358+ Ok ( addr) => gateways. push ( addr) ,
359+ Err ( err) => {
360+ log:: error!( "Failed to parse gateway: {}" , err) ;
361+ }
355362 }
363+ unsafe { current_gateway = ( * current_gateway) . Next } ;
356364 }
357365 }
358- Ok ( ( ) )
366+ true
359367 } ) ?;
360368 Ok ( gateways)
361369 }
@@ -365,39 +373,55 @@ impl Adapter {
365373 let name = util:: guid_to_win_style_string ( & GUID :: from_u128 ( self . guid ) ) ?;
366374 let mut subnet_mask = None ;
367375 util:: get_adapters_addresses ( |adapter| {
368- let name_iter = unsafe { util:: win_pstr_to_string ( adapter. AdapterName ) } ?;
376+ let name_iter = match unsafe { util:: win_pstr_to_string ( adapter. AdapterName ) } {
377+ Ok ( name) => name,
378+ Err ( err) => {
379+ log:: warn!( "Failed to parse adapter name: {}" , err) ;
380+ return false ;
381+ }
382+ } ;
369383 if name_iter == name {
370384 let mut current_address = adapter. FirstUnicastAddress ;
371385 while !current_address. is_null ( ) {
372386 let address = unsafe { ( * current_address) . Address } ;
373- let address = util:: retrieve_ipaddr_from_socket_address ( & address) ;
374- if let Err ( ref err) = address {
375- log:: warn!( "Failed to parse address: {}" , err) ;
376- }
377- let address = address?;
387+ let address = match util:: retrieve_ipaddr_from_socket_address ( & address) {
388+ Ok ( addr) => addr,
389+ Err ( err) => {
390+ log:: warn!( "Failed to parse address: {}" , err) ;
391+ return false ;
392+ }
393+ } ;
378394 if address == * target_address {
379395 let masklength = unsafe { ( * current_address) . OnLinkPrefixLength } ;
380396 match address {
381397 IpAddr :: V4 ( _) => {
382398 let mut mask = 0_u32 ;
383399 match unsafe { ConvertLengthToIpv4Mask ( masklength as u32 , & mut mask as * mut u32 ) } {
384400 0 => { }
385- err => return Err ( std:: io:: Error :: from_raw_os_error ( err as i32 ) . into ( ) ) ,
401+ err => {
402+ log:: warn!( "Failed to convert length to mask: {}" , err) ;
403+ return false ;
404+ }
386405 }
387406 subnet_mask = Some ( IpAddr :: V4 ( Ipv4Addr :: from ( mask. to_le_bytes ( ) ) ) ) ;
388407 }
389408 IpAddr :: V6 ( _) => {
390- subnet_mask = Some ( IpAddr :: V6 ( util:: ipv6_netmask_for_prefix ( masklength) ?) ) ;
409+ let v = match util:: ipv6_netmask_for_prefix ( masklength) {
410+ Ok ( v) => v,
411+ Err ( err) => {
412+ log:: warn!( "Failed to convert length to mask: {}" , err) ;
413+ return false ;
414+ }
415+ } ;
416+ subnet_mask = Some ( IpAddr :: V6 ( v) ) ;
391417 }
392418 }
393419 break ;
394420 }
395- unsafe {
396- current_address = ( * current_address) . Next ;
397- }
421+ unsafe { current_address = ( * current_address) . Next } ;
398422 }
399423 }
400- Ok ( ( ) )
424+ true
401425 } ) ?;
402426
403427 Ok ( subnet_mask. ok_or ( "Unable to find matching address" ) ?)
0 commit comments