@@ -32,7 +32,7 @@ use routing::network_graph::NetGraphMsgHandler;
3232
3333use prelude:: * ;
3434use alloc:: collections:: LinkedList ;
35- use std:: collections:: { HashMap , hash_map, HashSet } ;
35+ use std:: collections:: { HashMap , hash_map} ;
3636use std:: sync:: { Arc , Mutex } ;
3737use core:: sync:: atomic:: { AtomicUsize , Ordering } ;
3838use core:: { cmp, hash, fmt, mem} ;
@@ -286,9 +286,6 @@ impl Peer {
286286
287287struct PeerHolder < Descriptor : SocketDescriptor > {
288288 peers : HashMap < Descriptor , Peer > ,
289- /// Added to by do_read_event for cases where we pushed a message onto the send buffer but
290- /// didn't call do_attempt_write_data to avoid reentrancy. Cleared in process_events()
291- peers_needing_send : HashSet < Descriptor > ,
292289 /// Only add to this set when noise completes:
293290 node_id_to_descriptor : HashMap < PublicKey , Descriptor > ,
294291}
@@ -419,7 +416,6 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
419416 message_handler,
420417 peers : Mutex :: new ( PeerHolder {
421418 peers : HashMap :: new ( ) ,
422- peers_needing_send : HashSet :: new ( ) ,
423419 node_id_to_descriptor : HashMap :: new ( )
424420 } ) ,
425421 our_node_secret,
@@ -651,14 +647,13 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
651647 }
652648
653649 /// Append a message to a peer's pending outbound/write buffer, and update the map of peers needing sends accordingly.
654- fn enqueue_message < M : Encode + Writeable > ( & self , peers_needing_send : & mut HashSet < Descriptor > , peer : & mut Peer , descriptor : Descriptor , message : & M ) {
650+ fn enqueue_message < M : Encode + Writeable > ( & self , peer : & mut Peer , message : & M ) {
655651 let mut buffer = VecWriter ( Vec :: new ( ) ) ;
656652 wire:: write ( message, & mut buffer) . unwrap ( ) ; // crash if the write failed
657653 let encoded_message = buffer. 0 ;
658654
659655 log_trace ! ( self . logger, "Enqueueing message of type {} to {}" , message. type_id( ) , log_pubkey!( peer. their_node_id. unwrap( ) ) ) ;
660656 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encoded_message[ ..] ) ) ;
661- peers_needing_send. insert ( descriptor) ;
662657 }
663658
664659 fn do_read_event ( & self , peer_descriptor : & mut Descriptor , data : & [ u8 ] ) -> Result < bool , PeerHandleError > {
@@ -702,7 +697,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
702697 } ,
703698 msgs:: ErrorAction :: SendErrorMessage { msg } => {
704699 log_trace!( self . logger, "Got Err handling message, sending Error message because {}" , e. err) ;
705- self . enqueue_message( & mut peers . peers_needing_send , peer, peer_descriptor . clone ( ) , & msg) ;
700+ self . enqueue_message( peer, & msg) ;
706701 continue ;
707702 } ,
708703 }
@@ -744,7 +739,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
744739 insert_node_id ! ( ) ;
745740 let features = InitFeatures :: known ( ) ;
746741 let resp = msgs:: Init { features } ;
747- self . enqueue_message ( & mut peers . peers_needing_send , peer, peer_descriptor . clone ( ) , & resp) ;
742+ self . enqueue_message ( peer, & resp) ;
748743 } ,
749744 NextNoiseStep :: ActThree => {
750745 let their_node_id = try_potential_handleerror ! ( peer. channel_encryptor. process_act_three( & peer. pending_read_buffer[ ..] ) ) ;
@@ -754,7 +749,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
754749 insert_node_id ! ( ) ;
755750 let features = InitFeatures :: known ( ) ;
756751 let resp = msgs:: Init { features } ;
757- self . enqueue_message ( & mut peers . peers_needing_send , peer, peer_descriptor . clone ( ) , & resp) ;
752+ self . enqueue_message ( peer, & resp) ;
758753 } ,
759754 NextNoiseStep :: NoiseComplete => {
760755 if peer. pending_read_is_header {
@@ -802,7 +797,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
802797 }
803798 } ;
804799
805- match self . handle_message ( & mut peers . peers_needing_send , peer, peer_descriptor . clone ( ) , message) {
800+ match self . handle_message ( peer, message) {
806801 Err ( handling_error) => match handling_error {
807802 MessageHandlingError :: PeerHandleError ( e) => { return Err ( e) } ,
808803 MessageHandlingError :: LightningError ( e) => {
@@ -837,7 +832,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
837832
838833 /// Process an incoming message and return a decision (ok, lightning error, peer handling error) regarding the next action with the peer
839834 /// Returns the message back if it needs to be broadcasted to all other peers.
840- fn handle_message ( & self , peers_needing_send : & mut HashSet < Descriptor > , peer : & mut Peer , peer_descriptor : Descriptor , message : wire:: Message ) -> Result < Option < wire:: Message > , MessageHandlingError > {
835+ fn handle_message ( & self , peer : & mut Peer , message : wire:: Message ) -> Result < Option < wire:: Message > , MessageHandlingError > {
841836 log_trace ! ( self . logger, "Received message of type {} from {}" , message. type_id( ) , log_pubkey!( peer. their_node_id. unwrap( ) ) ) ;
842837
843838 // Need an Init as first message
@@ -872,7 +867,6 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
872867
873868 if msg. features . initial_routing_sync ( ) {
874869 peer. sync_status = InitSyncTracker :: ChannelsSyncing ( 0 ) ;
875- peers_needing_send. insert ( peer_descriptor. clone ( ) ) ;
876870 }
877871 if !msg. features . supports_static_remote_key ( ) {
878872 log_debug ! ( self . logger, "Peer {} does not support static remote key, disconnecting with no_connection_possible" , log_pubkey!( peer. their_node_id. unwrap( ) ) ) ;
@@ -907,7 +901,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
907901 wire:: Message :: Ping ( msg) => {
908902 if msg. ponglen < 65532 {
909903 let resp = msgs:: Pong { byteslen : msg. ponglen } ;
910- self . enqueue_message ( peers_needing_send , peer, peer_descriptor . clone ( ) , & resp) ;
904+ self . enqueue_message ( peer, & resp) ;
911905 }
912906 } ,
913907 wire:: Message :: Pong ( _msg) => {
@@ -1029,7 +1023,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
10291023 wire:: Message :: ChannelAnnouncement ( ref msg) => {
10301024 let encoded_msg = encode_msg ! ( msg) ;
10311025
1032- for ( ref descriptor , ref mut peer) in peers. peers . iter_mut ( ) {
1026+ for ( _ , ref mut peer) in peers. peers . iter_mut ( ) {
10331027 if !peer. channel_encryptor . is_ready_for_encryption ( ) || peer. their_features . is_none ( ) ||
10341028 !peer. should_forward_channel_announcement ( msg. contents . short_channel_id ) {
10351029 continue
@@ -1045,13 +1039,12 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
10451039 continue ;
10461040 }
10471041 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encoded_msg[ ..] ) ) ;
1048- peers. peers_needing_send . insert ( ( * descriptor) . clone ( ) ) ;
10491042 }
10501043 } ,
10511044 wire:: Message :: NodeAnnouncement ( ref msg) => {
10521045 let encoded_msg = encode_msg ! ( msg) ;
10531046
1054- for ( ref descriptor , ref mut peer) in peers. peers . iter_mut ( ) {
1047+ for ( _ , ref mut peer) in peers. peers . iter_mut ( ) {
10551048 if !peer. channel_encryptor . is_ready_for_encryption ( ) || peer. their_features . is_none ( ) ||
10561049 !peer. should_forward_node_announcement ( msg. contents . node_id ) {
10571050 continue
@@ -1066,13 +1059,12 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
10661059 continue ;
10671060 }
10681061 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encoded_msg[ ..] ) ) ;
1069- peers. peers_needing_send . insert ( ( * descriptor) . clone ( ) ) ;
10701062 }
10711063 } ,
10721064 wire:: Message :: ChannelUpdate ( ref msg) => {
10731065 let encoded_msg = encode_msg ! ( msg) ;
10741066
1075- for ( ref descriptor , ref mut peer) in peers. peers . iter_mut ( ) {
1067+ for ( _ , ref mut peer) in peers. peers . iter_mut ( ) {
10761068 if !peer. channel_encryptor . is_ready_for_encryption ( ) || peer. their_features . is_none ( ) ||
10771069 !peer. should_forward_channel_announcement ( msg. contents . short_channel_id ) {
10781070 continue
@@ -1084,7 +1076,6 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
10841076 continue ;
10851077 }
10861078 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encoded_msg[ ..] ) ) ;
1087- peers. peers_needing_send . insert ( ( * descriptor) . clone ( ) ) ;
10881079 }
10891080 } ,
10901081 _ => debug_assert ! ( false , "We shouldn't attempt to forward anything but gossip messages" ) ,
@@ -1131,17 +1122,15 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
11311122 log_trace ! ( self . logger, "Handling SendAcceptChannel event in peer_handler for node {} for channel {}" ,
11321123 log_pubkey!( node_id) ,
11331124 log_bytes!( msg. temporary_channel_id) ) ;
1134- let ( mut descriptor , peer) = get_peer_for_forwarding ! ( node_id) ;
1125+ let ( _ , peer) = get_peer_for_forwarding ! ( node_id) ;
11351126 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1136- self . do_attempt_write_data ( & mut descriptor, peer) ;
11371127 } ,
11381128 MessageSendEvent :: SendOpenChannel { ref node_id, ref msg } => {
11391129 log_trace ! ( self . logger, "Handling SendOpenChannel event in peer_handler for node {} for channel {}" ,
11401130 log_pubkey!( node_id) ,
11411131 log_bytes!( msg. temporary_channel_id) ) ;
1142- let ( mut descriptor , peer) = get_peer_for_forwarding ! ( node_id) ;
1132+ let ( _ , peer) = get_peer_for_forwarding ! ( node_id) ;
11431133 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1144- self . do_attempt_write_data ( & mut descriptor, peer) ;
11451134 } ,
11461135 MessageSendEvent :: SendFundingCreated { ref node_id, ref msg } => {
11471136 log_trace ! ( self . logger, "Handling SendFundingCreated event in peer_handler for node {} for channel {} (which becomes {})" ,
@@ -1150,35 +1139,31 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
11501139 log_funding_channel_id!( msg. funding_txid, msg. funding_output_index) ) ;
11511140 // TODO: If the peer is gone we should generate a DiscardFunding event
11521141 // indicating to the wallet that they should just throw away this funding transaction
1153- let ( mut descriptor , peer) = get_peer_for_forwarding ! ( node_id) ;
1142+ let ( _ , peer) = get_peer_for_forwarding ! ( node_id) ;
11541143 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1155- self . do_attempt_write_data ( & mut descriptor, peer) ;
11561144 } ,
11571145 MessageSendEvent :: SendFundingSigned { ref node_id, ref msg } => {
11581146 log_trace ! ( self . logger, "Handling SendFundingSigned event in peer_handler for node {} for channel {}" ,
11591147 log_pubkey!( node_id) ,
11601148 log_bytes!( msg. channel_id) ) ;
11611149 // TODO: If the peer is gone we should generate a DiscardFunding event
11621150 // indicating to the wallet that they should just throw away this funding transaction
1163- let ( mut descriptor , peer) = get_peer_for_forwarding ! ( node_id) ;
1151+ let ( _ , peer) = get_peer_for_forwarding ! ( node_id) ;
11641152 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1165- self . do_attempt_write_data ( & mut descriptor, peer) ;
11661153 } ,
11671154 MessageSendEvent :: SendFundingLocked { ref node_id, ref msg } => {
11681155 log_trace ! ( self . logger, "Handling SendFundingLocked event in peer_handler for node {} for channel {}" ,
11691156 log_pubkey!( node_id) ,
11701157 log_bytes!( msg. channel_id) ) ;
1171- let ( mut descriptor , peer) = get_peer_for_forwarding ! ( node_id) ;
1158+ let ( _ , peer) = get_peer_for_forwarding ! ( node_id) ;
11721159 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1173- self . do_attempt_write_data ( & mut descriptor, peer) ;
11741160 } ,
11751161 MessageSendEvent :: SendAnnouncementSignatures { ref node_id, ref msg } => {
11761162 log_trace ! ( self . logger, "Handling SendAnnouncementSignatures event in peer_handler for node {} for channel {})" ,
11771163 log_pubkey!( node_id) ,
11781164 log_bytes!( msg. channel_id) ) ;
1179- let ( mut descriptor , peer) = get_peer_for_forwarding ! ( node_id) ;
1165+ let ( _ , peer) = get_peer_for_forwarding ! ( node_id) ;
11801166 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1181- self . do_attempt_write_data ( & mut descriptor, peer) ;
11821167 } ,
11831168 MessageSendEvent :: UpdateHTLCs { ref node_id, updates : msgs:: CommitmentUpdate { ref update_add_htlcs, ref update_fulfill_htlcs, ref update_fail_htlcs, ref update_fail_malformed_htlcs, ref update_fee, ref commitment_signed } } => {
11841169 log_trace ! ( self . logger, "Handling UpdateHTLCs event in peer_handler for node {} with {} adds, {} fulfills, {} fails for channel {}" ,
@@ -1187,7 +1172,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
11871172 update_fulfill_htlcs. len( ) ,
11881173 update_fail_htlcs. len( ) ,
11891174 log_bytes!( commitment_signed. channel_id) ) ;
1190- let ( mut descriptor , peer) = get_peer_for_forwarding ! ( node_id) ;
1175+ let ( _ , peer) = get_peer_for_forwarding ! ( node_id) ;
11911176 for msg in update_add_htlcs {
11921177 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
11931178 }
@@ -1204,39 +1189,34 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
12041189 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
12051190 }
12061191 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( commitment_signed) ) ) ;
1207- self . do_attempt_write_data ( & mut descriptor, peer) ;
12081192 } ,
12091193 MessageSendEvent :: SendRevokeAndACK { ref node_id, ref msg } => {
12101194 log_trace ! ( self . logger, "Handling SendRevokeAndACK event in peer_handler for node {} for channel {}" ,
12111195 log_pubkey!( node_id) ,
12121196 log_bytes!( msg. channel_id) ) ;
1213- let ( mut descriptor , peer) = get_peer_for_forwarding ! ( node_id) ;
1197+ let ( _ , peer) = get_peer_for_forwarding ! ( node_id) ;
12141198 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1215- self . do_attempt_write_data ( & mut descriptor, peer) ;
12161199 } ,
12171200 MessageSendEvent :: SendClosingSigned { ref node_id, ref msg } => {
12181201 log_trace ! ( self . logger, "Handling SendClosingSigned event in peer_handler for node {} for channel {}" ,
12191202 log_pubkey!( node_id) ,
12201203 log_bytes!( msg. channel_id) ) ;
1221- let ( mut descriptor , peer) = get_peer_for_forwarding ! ( node_id) ;
1204+ let ( _ , peer) = get_peer_for_forwarding ! ( node_id) ;
12221205 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1223- self . do_attempt_write_data ( & mut descriptor, peer) ;
12241206 } ,
12251207 MessageSendEvent :: SendShutdown { ref node_id, ref msg } => {
12261208 log_trace ! ( self . logger, "Handling Shutdown event in peer_handler for node {} for channel {}" ,
12271209 log_pubkey!( node_id) ,
12281210 log_bytes!( msg. channel_id) ) ;
1229- let ( mut descriptor , peer) = get_peer_for_forwarding ! ( node_id) ;
1211+ let ( _ , peer) = get_peer_for_forwarding ! ( node_id) ;
12301212 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1231- self . do_attempt_write_data ( & mut descriptor, peer) ;
12321213 } ,
12331214 MessageSendEvent :: SendChannelReestablish { ref node_id, ref msg } => {
12341215 log_trace ! ( self . logger, "Handling SendChannelReestablish event in peer_handler for node {} for channel {}" ,
12351216 log_pubkey!( node_id) ,
12361217 log_bytes!( msg. channel_id) ) ;
1237- let ( mut descriptor , peer) = get_peer_for_forwarding ! ( node_id) ;
1218+ let ( _ , peer) = get_peer_for_forwarding ! ( node_id) ;
12381219 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1239- self . do_attempt_write_data ( & mut descriptor, peer) ;
12401220 } ,
12411221 MessageSendEvent :: BroadcastChannelAnnouncement { msg, update_msg } => {
12421222 log_trace ! ( self . logger, "Handling BroadcastChannelAnnouncement event in peer_handler for short channel id {}" , msg. contents. short_channel_id) ;
@@ -1264,7 +1244,6 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
12641244 match * action {
12651245 msgs:: ErrorAction :: DisconnectPeer { ref msg } => {
12661246 if let Some ( mut descriptor) = peers. node_id_to_descriptor . remove ( node_id) {
1267- peers. peers_needing_send . remove ( & descriptor) ;
12681247 if let Some ( mut peer) = peers. peers . remove ( & descriptor) {
12691248 if let Some ( ref msg) = * msg {
12701249 log_trace ! ( self . logger, "Handling DisconnectPeer HandleError event in peer_handler for node {} with message {}" ,
@@ -1287,21 +1266,18 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
12871266 log_trace ! ( self . logger, "Handling SendErrorMessage HandleError event in peer_handler for node {} with message {}" ,
12881267 log_pubkey!( node_id) ,
12891268 msg. data) ;
1290- let ( mut descriptor , peer) = get_peer_for_forwarding ! ( node_id) ;
1269+ let ( _ , peer) = get_peer_for_forwarding ! ( node_id) ;
12911270 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1292- self . do_attempt_write_data ( & mut descriptor, peer) ;
12931271 } ,
12941272 }
12951273 } ,
12961274 MessageSendEvent :: SendChannelRangeQuery { ref node_id, ref msg } => {
1297- let ( mut descriptor , peer) = get_peer_for_forwarding ! ( node_id) ;
1275+ let ( _ , peer) = get_peer_for_forwarding ! ( node_id) ;
12981276 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1299- self . do_attempt_write_data ( & mut descriptor, peer) ;
13001277 } ,
13011278 MessageSendEvent :: SendShortIdsQuery { ref node_id, ref msg } => {
1302- let ( mut descriptor , peer) = get_peer_for_forwarding ! ( node_id) ;
1279+ let ( _ , peer) = get_peer_for_forwarding ! ( node_id) ;
13031280 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1304- self . do_attempt_write_data ( & mut descriptor, peer) ;
13051281 }
13061282 MessageSendEvent :: SendReplyChannelRange { ref node_id, ref msg } => {
13071283 log_trace ! ( self . logger, "Handling SendReplyChannelRange event in peer_handler for node {} with num_scids={} first_blocknum={} number_of_blocks={}, sync_complete={}" ,
@@ -1310,18 +1286,14 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
13101286 msg. first_blocknum,
13111287 msg. number_of_blocks,
13121288 msg. sync_complete) ;
1313- let ( mut descriptor , peer) = get_peer_for_forwarding ! ( node_id) ;
1289+ let ( _ , peer) = get_peer_for_forwarding ! ( node_id) ;
13141290 peer. pending_outbound_buffer . push_back ( peer. channel_encryptor . encrypt_message ( & encode_msg ! ( msg) ) ) ;
1315- self . do_attempt_write_data ( & mut descriptor, peer) ;
13161291 }
13171292 }
13181293 }
13191294
1320- for mut descriptor in peers. peers_needing_send . drain ( ) {
1321- match peers. peers . get_mut ( & descriptor) {
1322- Some ( peer) => self . do_attempt_write_data ( & mut descriptor, peer) ,
1323- None => panic ! ( "Inconsistent peers set state!" ) ,
1324- }
1295+ for ( descriptor, ref mut peer) in peers. peers . iter_mut ( ) {
1296+ self . do_attempt_write_data ( & mut ( * descriptor) . clone ( ) , peer) ;
13251297 }
13261298 }
13271299 }
@@ -1340,7 +1312,6 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
13401312
13411313 fn disconnect_event_internal ( & self , descriptor : & Descriptor , no_connection_possible : bool ) {
13421314 let mut peers = self . peers . lock ( ) . unwrap ( ) ;
1343- peers. peers_needing_send . remove ( descriptor) ;
13441315 let peer_option = peers. peers . remove ( descriptor) ;
13451316 match peer_option {
13461317 None => panic ! ( "Descriptor for disconnect_event is not already known to PeerManager" ) ,
@@ -1368,7 +1339,6 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
13681339 if let Some ( mut descriptor) = peers_lock. node_id_to_descriptor . remove ( & node_id) {
13691340 log_trace ! ( self . logger, "Disconnecting peer with id {} due to client request" , node_id) ;
13701341 peers_lock. peers . remove ( & descriptor) ;
1371- peers_lock. peers_needing_send . remove ( & descriptor) ;
13721342 self . message_handler . chan_handler . peer_disconnected ( & node_id, no_connection_possible) ;
13731343 descriptor. disconnect_socket ( ) ;
13741344 }
@@ -1382,14 +1352,12 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref> PeerManager<D
13821352 let mut peers_lock = self . peers . lock ( ) . unwrap ( ) ;
13831353 {
13841354 let peers = & mut * peers_lock;
1385- let peers_needing_send = & mut peers. peers_needing_send ;
13861355 let node_id_to_descriptor = & mut peers. node_id_to_descriptor ;
13871356 let peers = & mut peers. peers ;
13881357 let mut descriptors_needing_disconnect = Vec :: new ( ) ;
13891358
13901359 peers. retain ( |descriptor, peer| {
13911360 if peer. awaiting_pong {
1392- peers_needing_send. remove ( descriptor) ;
13931361 descriptors_needing_disconnect. push ( descriptor. clone ( ) ) ;
13941362 match peer. their_node_id {
13951363 Some ( node_id) => {
0 commit comments