@@ -181,6 +181,13 @@ struct Peer<TransportImpl: ITransport> {
181
181
}
182
182
183
183
impl < TransportImpl : ITransport > Peer < TransportImpl > {
184
+
185
+ /// Returns true if an INIT message has been received from this peer. Implies that this node
186
+ /// can send and receive encrypted messages.
187
+ fn is_initialized ( & self ) -> bool {
188
+ self . their_features . is_some ( )
189
+ }
190
+
184
191
/// Returns true if the channel announcements/updates for the given channel should be
185
192
/// forwarded to this peer.
186
193
/// If we are sending our routing table to this peer and we have not yet sent channel
@@ -214,6 +221,30 @@ struct PeerHolder<Descriptor: SocketDescriptor, TransportImpl: ITransport> {
214
221
node_id_to_descriptor : HashMap < PublicKey , Descriptor > ,
215
222
}
216
223
224
+ impl < Descriptor : SocketDescriptor , TransportImpl : ITransport > PeerHolder < Descriptor , TransportImpl > {
225
+ fn initialized_peer_by_node_id ( & mut self , node_id : & PublicKey ) -> Option < ( Descriptor , & mut Peer < TransportImpl > ) > {
226
+ match self . node_id_to_descriptor . get_mut ( node_id) {
227
+ None => None ,
228
+ Some ( descriptor) => {
229
+ assert ! ( self . peers. contains_key( descriptor) , "Invalid PeerHolder state" ) ;
230
+
231
+ match self . peers . get_mut ( & descriptor) {
232
+ None => panic ! ( "Invalid PeerHolder state!" ) ,
233
+ Some ( peer) => {
234
+
235
+ // their_features is set after receiving an Init message
236
+ if !peer. is_initialized ( ) {
237
+ None
238
+ } else {
239
+ Some ( ( descriptor. clone ( ) , peer) )
240
+ }
241
+ }
242
+ }
243
+ }
244
+ }
245
+ }
246
+ }
247
+
217
248
#[ cfg( not( any( target_pointer_width = "32" , target_pointer_width = "64" ) ) ) ]
218
249
fn _check_usize_is_32_or_64 ( ) {
219
250
// See below, less than 32 bit pointers may be unsafe here!
@@ -425,7 +456,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref, TransportImpl
425
456
fn get_peer_node_ids ( & self ) -> Vec < PublicKey > {
426
457
let peers = self . peers . lock ( ) . unwrap ( ) ;
427
458
peers. peers . values ( ) . filter_map ( |p| {
428
- if !p. transport . is_connected ( ) || p . their_features . is_none ( ) {
459
+ if !p. is_initialized ( ) {
429
460
return None ;
430
461
}
431
462
Some ( p. transport . get_their_node_id ( ) )
@@ -904,105 +935,76 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref, TransportImpl
904
935
let mut peers_lock = self . peers . lock ( ) . unwrap ( ) ;
905
936
let peers = & mut * peers_lock;
906
937
for event in events_generated. drain ( ..) {
907
- macro_rules! get_peer_for_forwarding {
908
- ( $node_id: expr, $handle_no_such_peer: block) => {
909
- {
910
- let descriptor = match peers. node_id_to_descriptor. get( $node_id) {
911
- Some ( descriptor) => descriptor. clone( ) ,
912
- None => {
913
- $handle_no_such_peer;
914
- continue ;
915
- } ,
916
- } ;
917
- match peers. peers. get_mut( & descriptor) {
918
- Some ( peer) => {
919
- if peer. their_features. is_none( ) {
920
- $handle_no_such_peer;
921
- continue ;
922
- }
923
- ( descriptor, peer)
924
- } ,
925
- None => panic!( "Inconsistent peers set state!" ) ,
926
- }
927
- }
928
- }
929
- }
930
938
match event {
931
939
MessageSendEvent :: SendAcceptChannel { ref node_id, ref msg } => {
932
940
log_trace ! ( self . logger, "Handling SendAcceptChannel event in peer_handler for node {} for channel {}" ,
933
941
log_pubkey!( node_id) ,
934
942
log_bytes!( msg. temporary_channel_id) ) ;
935
- let ( mut descriptor, peer) = get_peer_for_forwarding ! ( node_id, {
936
- //TODO: Drop the pending channel? (or just let it timeout, but that sucks)
937
- } ) ;
938
- if peer. transport . is_connected ( ) {
943
+ if let Some ( ( mut descriptor, peer) ) = peers. initialized_peer_by_node_id ( node_id) {
939
944
peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
945
+ self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
946
+ } else {
947
+ //TODO: Drop the pending channel? (or just let it timeout, but that sucks)
940
948
}
941
- self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
942
949
} ,
943
950
MessageSendEvent :: SendOpenChannel { ref node_id, ref msg } => {
944
951
log_trace ! ( self . logger, "Handling SendOpenChannel event in peer_handler for node {} for channel {}" ,
945
952
log_pubkey!( node_id) ,
946
953
log_bytes!( msg. temporary_channel_id) ) ;
947
- let ( mut descriptor, peer) = get_peer_for_forwarding ! ( node_id, {
948
- //TODO: Drop the pending channel? (or just let it timeout, but that sucks)
949
- } ) ;
950
- if peer. transport . is_connected ( ) {
954
+ if let Some ( ( mut descriptor, peer) ) = peers. initialized_peer_by_node_id ( node_id) {
951
955
peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
956
+ self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
957
+ } else {
958
+ //TODO: Drop the pending channel? (or just let it timeout, but that sucks)
952
959
}
953
- self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
954
960
} ,
955
961
MessageSendEvent :: SendFundingCreated { ref node_id, ref msg } => {
956
962
log_trace ! ( self . logger, "Handling SendFundingCreated event in peer_handler for node {} for channel {} (which becomes {})" ,
957
963
log_pubkey!( node_id) ,
958
964
log_bytes!( msg. temporary_channel_id) ,
959
965
log_funding_channel_id!( msg. funding_txid, msg. funding_output_index) ) ;
960
- let ( mut descriptor, peer) = get_peer_for_forwarding ! ( node_id, {
961
- //TODO: generate a DiscardFunding event indicating to the wallet that
962
- //they should just throw away this funding transaction
963
- } ) ;
964
- if peer. transport . is_connected ( ) {
966
+ if let Some ( ( mut descriptor, peer) ) = peers. initialized_peer_by_node_id ( node_id) {
965
967
peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
968
+ self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
969
+ } else {
970
+ //TODO: generate a DiscardFunding event indicating to the wallet that
971
+ //they should just throw away this funding transaction
966
972
}
967
- self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
968
973
} ,
969
974
MessageSendEvent :: SendFundingSigned { ref node_id, ref msg } => {
970
975
log_trace ! ( self . logger, "Handling SendFundingSigned event in peer_handler for node {} for channel {}" ,
971
976
log_pubkey!( node_id) ,
972
977
log_bytes!( msg. channel_id) ) ;
973
- let ( mut descriptor, peer) = get_peer_for_forwarding ! ( node_id, {
974
- //TODO: generate a DiscardFunding event indicating to the wallet that
975
- //they should just throw away this funding transaction
976
- } ) ;
977
- if peer. transport . is_connected ( ) {
978
+ if let Some ( ( mut descriptor, peer) ) = peers. initialized_peer_by_node_id ( node_id) {
978
979
peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
980
+ self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
981
+ } else {
982
+ //TODO: generate a DiscardFunding event indicating to the wallet that
983
+ //they should just throw away this funding transaction
979
984
}
980
- self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
981
985
} ,
982
986
MessageSendEvent :: SendFundingLocked { ref node_id, ref msg } => {
983
987
log_trace ! ( self . logger, "Handling SendFundingLocked event in peer_handler for node {} for channel {}" ,
984
988
log_pubkey!( node_id) ,
985
989
log_bytes!( msg. channel_id) ) ;
986
- let ( mut descriptor, peer) = get_peer_for_forwarding ! ( node_id, {
987
- //TODO: Do whatever we're gonna do for handling dropped messages
988
- } ) ;
989
- if peer. transport . is_connected ( ) {
990
+ if let Some ( ( mut descriptor, peer) ) = peers. initialized_peer_by_node_id ( node_id) {
990
991
peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
992
+ self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
993
+ } else {
994
+ //TODO: Do whatever we're gonna do for handling dropped messages
991
995
}
992
- self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
993
996
} ,
994
997
MessageSendEvent :: SendAnnouncementSignatures { ref node_id, ref msg } => {
995
998
log_trace ! ( self . logger, "Handling SendAnnouncementSignatures event in peer_handler for node {} for channel {})" ,
996
999
log_pubkey!( node_id) ,
997
1000
log_bytes!( msg. channel_id) ) ;
998
- let ( mut descriptor, peer) = get_peer_for_forwarding ! ( node_id, {
999
- //TODO: generate a DiscardFunding event indicating to the wallet that
1000
- //they should just throw away this funding transaction
1001
- } ) ;
1002
- if peer. transport . is_connected ( ) {
1001
+ if let Some ( ( mut descriptor, peer) ) = peers. initialized_peer_by_node_id ( node_id) {
1003
1002
peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1003
+ self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1004
+ } else {
1005
+ //TODO: generate a DiscardFunding event indicating to the wallet that
1006
+ //they should just throw away this funding transaction
1004
1007
}
1005
- self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1006
1008
} ,
1007
1009
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 } } => {
1008
1010
log_trace ! ( self . logger, "Handling UpdateHTLCs event in peer_handler for node {} with {} adds, {} fulfills, {} fails for channel {}" ,
@@ -1011,10 +1013,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref, TransportImpl
1011
1013
update_fulfill_htlcs. len( ) ,
1012
1014
update_fail_htlcs. len( ) ,
1013
1015
log_bytes!( commitment_signed. channel_id) ) ;
1014
- let ( mut descriptor, peer) = get_peer_for_forwarding ! ( node_id, {
1015
- //TODO: Do whatever we're gonna do for handling dropped messages
1016
- } ) ;
1017
- if peer. transport . is_connected ( ) {
1016
+ if let Some ( ( mut descriptor, peer) ) = peers. initialized_peer_by_node_id ( node_id) {
1018
1017
for msg in update_add_htlcs {
1019
1018
peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1020
1019
}
@@ -1031,62 +1030,60 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref, TransportImpl
1031
1030
peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1032
1031
}
1033
1032
peer. transport . enqueue_message ( commitment_signed, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1033
+ self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1034
+ } else {
1035
+ //TODO: Do whatever we're gonna do for handling dropped messages
1034
1036
}
1035
- self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1036
1037
} ,
1037
1038
MessageSendEvent :: SendRevokeAndACK { ref node_id, ref msg } => {
1038
1039
log_trace ! ( self . logger, "Handling SendRevokeAndACK event in peer_handler for node {} for channel {}" ,
1039
1040
log_pubkey!( node_id) ,
1040
1041
log_bytes!( msg. channel_id) ) ;
1041
- let ( mut descriptor, peer) = get_peer_for_forwarding ! ( node_id, {
1042
- //TODO: Do whatever we're gonna do for handling dropped messages
1043
- } ) ;
1044
- if peer. transport . is_connected ( ) {
1042
+ if let Some ( ( mut descriptor, peer) ) = peers. initialized_peer_by_node_id ( node_id) {
1045
1043
peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1044
+ self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1045
+ } else {
1046
+ //TODO: Do whatever we're gonna do for handling dropped messages
1046
1047
}
1047
- self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1048
1048
} ,
1049
1049
MessageSendEvent :: SendClosingSigned { ref node_id, ref msg } => {
1050
1050
log_trace ! ( self . logger, "Handling SendClosingSigned event in peer_handler for node {} for channel {}" ,
1051
1051
log_pubkey!( node_id) ,
1052
1052
log_bytes!( msg. channel_id) ) ;
1053
- let ( mut descriptor, peer) = get_peer_for_forwarding ! ( node_id, {
1054
- //TODO: Do whatever we're gonna do for handling dropped messages
1055
- } ) ;
1056
- if peer. transport . is_connected ( ) {
1053
+ if let Some ( ( mut descriptor, peer) ) = peers. initialized_peer_by_node_id ( node_id) {
1057
1054
peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1055
+ self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1056
+ } else {
1057
+ //TODO: Do whatever we're gonna do for handling dropped messages
1058
1058
}
1059
- self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1060
1059
} ,
1061
1060
MessageSendEvent :: SendShutdown { ref node_id, ref msg } => {
1062
1061
log_trace ! ( self . logger, "Handling Shutdown event in peer_handler for node {} for channel {}" ,
1063
1062
log_pubkey!( node_id) ,
1064
1063
log_bytes!( msg. channel_id) ) ;
1065
- let ( mut descriptor, peer) = get_peer_for_forwarding ! ( node_id, {
1066
- //TODO: Do whatever we're gonna do for handling dropped messages
1067
- } ) ;
1068
- if peer. transport . is_connected ( ) {
1064
+ if let Some ( ( mut descriptor, peer) ) = peers. initialized_peer_by_node_id ( node_id) {
1069
1065
peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1066
+ self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1067
+ } else {
1068
+ //TODO: Do whatever we're gonna do for handling dropped messages
1070
1069
}
1071
- self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1072
1070
} ,
1073
1071
MessageSendEvent :: SendChannelReestablish { ref node_id, ref msg } => {
1074
1072
log_trace ! ( self . logger, "Handling SendChannelReestablish event in peer_handler for node {} for channel {}" ,
1075
1073
log_pubkey!( node_id) ,
1076
1074
log_bytes!( msg. channel_id) ) ;
1077
- let ( mut descriptor, peer) = get_peer_for_forwarding ! ( node_id, {
1078
- //TODO: Do whatever we're gonna do for handling dropped messages
1079
- } ) ;
1080
- if peer. transport . is_connected ( ) {
1075
+ if let Some ( ( mut descriptor, peer) ) = peers. initialized_peer_by_node_id ( node_id) {
1081
1076
peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1077
+ self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1078
+ } else {
1079
+ //TODO: Do whatever we're gonna do for handling dropped messages
1082
1080
}
1083
- self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1084
1081
} ,
1085
1082
MessageSendEvent :: BroadcastChannelAnnouncement { ref msg, ref update_msg } => {
1086
1083
log_trace ! ( self . logger, "Handling BroadcastChannelAnnouncement event in peer_handler for short channel id {}" , msg. contents. short_channel_id) ;
1087
1084
if self . message_handler . route_handler . handle_channel_announcement ( msg) . is_ok ( ) && self . message_handler . route_handler . handle_channel_update ( update_msg) . is_ok ( ) {
1088
1085
for ( ref descriptor, ref mut peer) in peers. peers . iter_mut ( ) {
1089
- if !peer. transport . is_connected ( ) || peer . their_features . is_none ( ) ||
1086
+ if !peer. is_initialized ( ) ||
1090
1087
!peer. should_forward_channel_announcement ( msg. contents . short_channel_id ) {
1091
1088
continue
1092
1089
}
@@ -1095,10 +1092,8 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref, TransportImpl
1095
1092
if their_node_id == msg. contents . node_id_1 || their_node_id == msg. contents . node_id_2 {
1096
1093
continue
1097
1094
}
1098
- if peer. transport . is_connected ( ) {
1099
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1100
- peer. transport . enqueue_message ( update_msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1101
- }
1095
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1096
+ peer. transport . enqueue_message ( update_msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1102
1097
self . do_attempt_write_data ( & mut ( * descriptor) . clone ( ) , & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1103
1098
}
1104
1099
}
@@ -1107,13 +1102,11 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref, TransportImpl
1107
1102
log_trace ! ( self . logger, "Handling BroadcastNodeAnnouncement event in peer_handler" ) ;
1108
1103
if self . message_handler . route_handler . handle_node_announcement ( msg) . is_ok ( ) {
1109
1104
for ( ref descriptor, ref mut peer) in peers. peers . iter_mut ( ) {
1110
- if !peer. transport . is_connected ( ) || peer . their_features . is_none ( ) ||
1105
+ if !peer. is_initialized ( ) ||
1111
1106
!peer. should_forward_node_announcement ( msg. contents . node_id ) {
1112
1107
continue
1113
1108
}
1114
- if peer. transport . is_connected ( ) {
1115
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1116
- }
1109
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1117
1110
self . do_attempt_write_data ( & mut ( * descriptor) . clone ( ) , & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1118
1111
}
1119
1112
}
@@ -1122,13 +1115,11 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref, TransportImpl
1122
1115
log_trace ! ( self . logger, "Handling BroadcastChannelUpdate event in peer_handler for short channel id {}" , msg. contents. short_channel_id) ;
1123
1116
if self . message_handler . route_handler . handle_channel_update ( msg) . is_ok ( ) {
1124
1117
for ( ref descriptor, ref mut peer) in peers. peers . iter_mut ( ) {
1125
- if !peer. transport . is_connected ( ) || peer . their_features . is_none ( ) ||
1118
+ if !peer. is_initialized ( ) ||
1126
1119
!peer. should_forward_channel_announcement ( msg. contents . short_channel_id ) {
1127
1120
continue
1128
1121
}
1129
- if peer. transport . is_connected ( ) {
1130
- peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1131
- }
1122
+ peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1132
1123
self . do_attempt_write_data ( & mut ( * descriptor) . clone ( ) , & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1133
1124
}
1134
1125
}
@@ -1165,13 +1156,12 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, L: Deref, TransportImpl
1165
1156
log_trace ! ( self . logger, "Handling SendErrorMessage HandleError event in peer_handler for node {} with message {}" ,
1166
1157
log_pubkey!( node_id) ,
1167
1158
msg. data) ;
1168
- let ( mut descriptor, peer) = get_peer_for_forwarding ! ( node_id, {
1169
- //TODO: Do whatever we're gonna do for handling dropped messages
1170
- } ) ;
1171
- if peer. transport . is_connected ( ) {
1159
+ if let Some ( ( mut descriptor, peer) ) = peers. initialized_peer_by_node_id ( node_id) {
1172
1160
peer. transport . enqueue_message ( msg, & mut peer. pending_outbound_buffer , & * self . logger ) ;
1161
+ self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1162
+ } else {
1163
+ //TODO: Do whatever we're gonna do for handling dropped messages
1173
1164
}
1174
- self . do_attempt_write_data ( & mut descriptor, & mut peer. sync_status , & mut peer. transport , & mut peer. pending_outbound_buffer ) ;
1175
1165
} ,
1176
1166
}
1177
1167
}
0 commit comments