@@ -249,14 +249,14 @@ impl DiscoveryConfig {
249249 discovery_only_if_under_num,
250250 mdns : if enable_mdns {
251251 match TokioMdns :: new ( mdns:: Config :: default ( ) , local_peer_id) {
252- Ok ( mdns) => Some ( mdns) ,
252+ Ok ( mdns) => Toggle :: from ( Some ( mdns) ) ,
253253 Err ( err) => {
254254 warn ! ( target: "sub-libp2p" , "Failed to initialize mDNS: {:?}" , err) ;
255- None
255+ Toggle :: from ( None )
256256 } ,
257257 }
258258 } else {
259- None
259+ Toggle :: from ( None )
260260 } ,
261261 allow_non_globals_in_dht,
262262 known_external_addresses : LruHashSet :: new (
@@ -280,7 +280,7 @@ pub struct DiscoveryBehaviour {
280280 /// it's always enabled in `NetworkWorker::new()`.
281281 kademlia : Toggle < Kademlia < MemoryStore > > ,
282282 /// Discovers nodes on the local network.
283- mdns : Option < TokioMdns > ,
283+ mdns : Toggle < TokioMdns > ,
284284 /// Stream that fires when we need to perform the next random Kademlia query. `None` if
285285 /// random walking is disabled.
286286 next_kad_random_query : Option < Delay > ,
@@ -568,14 +568,12 @@ impl NetworkBehaviour for DiscoveryBehaviour {
568568 effective_role,
569569 ) ?;
570570
571- if let Some ( ref mut mdns) = self . mdns {
572- list_to_filter. extend ( mdns. handle_pending_outbound_connection (
573- connection_id,
574- maybe_peer,
575- addresses,
576- effective_role,
577- ) ?) ;
578- }
571+ list_to_filter. extend ( self . mdns . handle_pending_outbound_connection (
572+ connection_id,
573+ maybe_peer,
574+ addresses,
575+ effective_role,
576+ ) ?) ;
579577
580578 if !self . allow_private_ip {
581579 list_to_filter. retain ( |addr| match addr. iter ( ) . next ( ) {
@@ -650,9 +648,7 @@ impl NetworkBehaviour for DiscoveryBehaviour {
650648 FromSwarm :: NewListenAddr ( e) => {
651649 self . kademlia . on_swarm_event ( FromSwarm :: NewListenAddr ( e) ) ;
652650
653- if let Some ( ref mut mdns) = self . mdns {
654- mdns. on_swarm_event ( FromSwarm :: NewListenAddr ( e) ) ;
655- }
651+ self . mdns . on_swarm_event ( FromSwarm :: NewListenAddr ( e) ) ;
656652 } ,
657653 FromSwarm :: ExternalAddrConfirmed ( e @ ExternalAddrConfirmed { addr } ) => {
658654 let new_addr = addr. clone ( ) . with ( Protocol :: P2p ( self . local_peer_id ) ) ;
@@ -913,43 +909,40 @@ impl NetworkBehaviour for DiscoveryBehaviour {
913909 }
914910
915911 // Poll mDNS.
916- if let Some ( ref mut mdns) = self . mdns {
917- while let Poll :: Ready ( ev) = mdns. poll ( cx, params) {
918- match ev {
919- ToSwarm :: GenerateEvent ( event) => match event {
920- mdns:: Event :: Discovered ( list) => {
921- if self . num_connections >= self . discovery_only_if_under_num {
922- continue
923- }
912+ while let Poll :: Ready ( ev) = self . mdns . poll ( cx, params) {
913+ match ev {
914+ ToSwarm :: GenerateEvent ( event) => match event {
915+ mdns:: Event :: Discovered ( list) => {
916+ if self . num_connections >= self . discovery_only_if_under_num {
917+ continue
918+ }
924919
925- self . pending_events . extend (
926- list. into_iter ( )
927- . map ( |( peer_id, _) | DiscoveryOut :: Discovered ( peer_id) ) ,
928- ) ;
929- if let Some ( ev) = self . pending_events . pop_front ( ) {
930- return Poll :: Ready ( ToSwarm :: GenerateEvent ( ev) )
931- }
932- } ,
933- mdns:: Event :: Expired ( _) => { } ,
934- } ,
935- ToSwarm :: Dial { .. } => {
936- unreachable ! ( "mDNS never dials!" ) ;
920+ self . pending_events . extend (
921+ list. into_iter ( ) . map ( |( peer_id, _) | DiscoveryOut :: Discovered ( peer_id) ) ,
922+ ) ;
923+ if let Some ( ev) = self . pending_events . pop_front ( ) {
924+ return Poll :: Ready ( ToSwarm :: GenerateEvent ( ev) )
925+ }
937926 } ,
938- ToSwarm :: NotifyHandler { event, .. } => match event { } , /* `event` is an */
939- // enum with no
940- // variant
941- ToSwarm :: CloseConnection { peer_id, connection } =>
942- return Poll :: Ready ( ToSwarm :: CloseConnection { peer_id, connection } ) ,
943- ToSwarm :: NewExternalAddrCandidate ( observed) =>
944- return Poll :: Ready ( ToSwarm :: NewExternalAddrCandidate ( observed) ) ,
945- ToSwarm :: ExternalAddrConfirmed ( addr) =>
946- return Poll :: Ready ( ToSwarm :: ExternalAddrConfirmed ( addr) ) ,
947- ToSwarm :: ExternalAddrExpired ( addr) =>
948- return Poll :: Ready ( ToSwarm :: ExternalAddrExpired ( addr) ) ,
949- ToSwarm :: ListenOn { opts } => return Poll :: Ready ( ToSwarm :: ListenOn { opts } ) ,
950- ToSwarm :: RemoveListener { id } =>
951- return Poll :: Ready ( ToSwarm :: RemoveListener { id } ) ,
952- }
927+ mdns:: Event :: Expired ( _) => { } ,
928+ } ,
929+ ToSwarm :: Dial { .. } => {
930+ unreachable ! ( "mDNS never dials!" ) ;
931+ } ,
932+ ToSwarm :: NotifyHandler { event, .. } => match event { } , /* `event` is an */
933+ // enum with no
934+ // variant
935+ ToSwarm :: CloseConnection { peer_id, connection } =>
936+ return Poll :: Ready ( ToSwarm :: CloseConnection { peer_id, connection } ) ,
937+ ToSwarm :: NewExternalAddrCandidate ( observed) =>
938+ return Poll :: Ready ( ToSwarm :: NewExternalAddrCandidate ( observed) ) ,
939+ ToSwarm :: ExternalAddrConfirmed ( addr) =>
940+ return Poll :: Ready ( ToSwarm :: ExternalAddrConfirmed ( addr) ) ,
941+ ToSwarm :: ExternalAddrExpired ( addr) =>
942+ return Poll :: Ready ( ToSwarm :: ExternalAddrExpired ( addr) ) ,
943+ ToSwarm :: ListenOn { opts } => return Poll :: Ready ( ToSwarm :: ListenOn { opts } ) ,
944+ ToSwarm :: RemoveListener { id } =>
945+ return Poll :: Ready ( ToSwarm :: RemoveListener { id } ) ,
953946 }
954947 }
955948
0 commit comments