@@ -2064,64 +2064,66 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
2064
2064
{
2065
2065
let peers_lock = self . peers . read ( ) . unwrap ( ) ;
2066
2066
2067
- let mut events_generated = self . message_handler . chan_handler . get_and_clear_pending_msg_events ( ) ;
2068
- events_generated . append ( & mut self . message_handler . route_handler . get_and_clear_pending_msg_events ( ) ) ;
2067
+ let chan_events = self . message_handler . chan_handler . get_and_clear_pending_msg_events ( ) ;
2068
+ let route_events = self . message_handler . route_handler . get_and_clear_pending_msg_events ( ) ;
2069
2069
2070
2070
let peers = & * peers_lock;
2071
2071
macro_rules! get_peer_for_forwarding {
2072
2072
( $node_id: expr) => {
2073
2073
{
2074
2074
if peers_to_disconnect. get( $node_id) . is_some( ) {
2075
2075
// If we've "disconnected" this peer, do not send to it.
2076
- continue ;
2077
- }
2078
- let descriptor_opt = self . node_id_to_descriptor. lock( ) . unwrap( ) . get( $node_id) . cloned( ) ;
2079
- match descriptor_opt {
2080
- Some ( descriptor) => match peers. get( & descriptor) {
2081
- Some ( peer_mutex) => {
2082
- let peer_lock = peer_mutex. lock( ) . unwrap( ) ;
2083
- if !peer_lock. handshake_complete( ) {
2084
- continue ;
2076
+ None
2077
+ } else {
2078
+ let descriptor_opt = self . node_id_to_descriptor. lock( ) . unwrap( ) . get( $node_id) . cloned( ) ;
2079
+ match descriptor_opt {
2080
+ Some ( descriptor) => match peers. get( & descriptor) {
2081
+ Some ( peer_mutex) => {
2082
+ let peer_lock = peer_mutex. lock( ) . unwrap( ) ;
2083
+ if !peer_lock. handshake_complete( ) {
2084
+ None
2085
+ } else {
2086
+ Some ( peer_lock)
2087
+ }
2088
+ } ,
2089
+ None => {
2090
+ debug_assert!( false , "Inconsistent peers set state!" ) ;
2091
+ None
2085
2092
}
2086
- peer_lock
2087
2093
} ,
2088
2094
None => {
2089
- debug_assert!( false , "Inconsistent peers set state!" ) ;
2090
- continue ;
2091
- }
2092
- } ,
2093
- None => {
2094
- continue ;
2095
- } ,
2095
+ None
2096
+ } ,
2097
+ }
2096
2098
}
2097
2099
}
2098
2100
}
2099
2101
}
2100
- for event in events_generated . drain ( .. ) {
2102
+ let mut handle_event = |event , from_chan_handler| {
2101
2103
match event {
2102
2104
MessageSendEvent :: SendAcceptChannel { ref node_id, ref msg } => {
2103
2105
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. common_fields. temporary_channel_id) , None ) , "Handling SendAcceptChannel event in peer_handler for node {} for channel {}" ,
2104
2106
log_pubkey!( node_id) ,
2105
2107
& msg. common_fields. temporary_channel_id) ;
2106
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2108
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2107
2109
} ,
2108
2110
MessageSendEvent :: SendAcceptChannelV2 { ref node_id, ref msg } => {
2109
2111
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. common_fields. temporary_channel_id) , None ) , "Handling SendAcceptChannelV2 event in peer_handler for node {} for channel {}" ,
2110
2112
log_pubkey!( node_id) ,
2111
2113
& msg. common_fields. temporary_channel_id) ;
2112
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2114
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2113
2115
} ,
2114
2116
MessageSendEvent :: SendOpenChannel { ref node_id, ref msg } => {
2115
2117
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. common_fields. temporary_channel_id) , None ) , "Handling SendOpenChannel event in peer_handler for node {} for channel {}" ,
2116
2118
log_pubkey!( node_id) ,
2117
2119
& msg. common_fields. temporary_channel_id) ;
2118
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2120
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2119
2121
} ,
2120
2122
MessageSendEvent :: SendOpenChannelV2 { ref node_id, ref msg } => {
2121
2123
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. common_fields. temporary_channel_id) , None ) , "Handling SendOpenChannelV2 event in peer_handler for node {} for channel {}" ,
2122
2124
log_pubkey!( node_id) ,
2123
2125
& msg. common_fields. temporary_channel_id) ;
2124
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2126
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2125
2127
} ,
2126
2128
MessageSendEvent :: SendFundingCreated { ref node_id, ref msg } => {
2127
2129
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. temporary_channel_id) , None ) , "Handling SendFundingCreated event in peer_handler for node {} for channel {} (which becomes {})" ,
@@ -2130,107 +2132,107 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
2130
2132
ChannelId :: v1_from_funding_txid( msg. funding_txid. as_byte_array( ) , msg. funding_output_index) ) ;
2131
2133
// TODO: If the peer is gone we should generate a DiscardFunding event
2132
2134
// indicating to the wallet that they should just throw away this funding transaction
2133
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2135
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2134
2136
} ,
2135
2137
MessageSendEvent :: SendFundingSigned { ref node_id, ref msg } => {
2136
2138
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling SendFundingSigned event in peer_handler for node {} for channel {}" ,
2137
2139
log_pubkey!( node_id) ,
2138
2140
& msg. channel_id) ;
2139
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2141
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2140
2142
} ,
2141
2143
MessageSendEvent :: SendChannelReady { ref node_id, ref msg } => {
2142
2144
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling SendChannelReady event in peer_handler for node {} for channel {}" ,
2143
2145
log_pubkey!( node_id) ,
2144
2146
& msg. channel_id) ;
2145
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2147
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2146
2148
} ,
2147
2149
MessageSendEvent :: SendStfu { ref node_id, ref msg} => {
2148
2150
let logger = WithContext :: from ( & self . logger , Some ( * node_id) , Some ( msg. channel_id ) , None ) ;
2149
2151
log_debug ! ( logger, "Handling SendStfu event in peer_handler for node {} for channel {}" ,
2150
2152
log_pubkey!( node_id) ,
2151
2153
& msg. channel_id) ;
2152
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2154
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2153
2155
}
2154
2156
MessageSendEvent :: SendSpliceInit { ref node_id, ref msg} => {
2155
2157
let logger = WithContext :: from ( & self . logger , Some ( * node_id) , Some ( msg. channel_id ) , None ) ;
2156
2158
log_debug ! ( logger, "Handling SendSpliceInit event in peer_handler for node {} for channel {}" ,
2157
2159
log_pubkey!( node_id) ,
2158
2160
& msg. channel_id) ;
2159
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2161
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2160
2162
}
2161
2163
MessageSendEvent :: SendSpliceAck { ref node_id, ref msg} => {
2162
2164
let logger = WithContext :: from ( & self . logger , Some ( * node_id) , Some ( msg. channel_id ) , None ) ;
2163
2165
log_debug ! ( logger, "Handling SendSpliceAck event in peer_handler for node {} for channel {}" ,
2164
2166
log_pubkey!( node_id) ,
2165
2167
& msg. channel_id) ;
2166
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2168
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2167
2169
}
2168
2170
MessageSendEvent :: SendSpliceLocked { ref node_id, ref msg} => {
2169
2171
let logger = WithContext :: from ( & self . logger , Some ( * node_id) , Some ( msg. channel_id ) , None ) ;
2170
2172
log_debug ! ( logger, "Handling SendSpliceLocked event in peer_handler for node {} for channel {}" ,
2171
2173
log_pubkey!( node_id) ,
2172
2174
& msg. channel_id) ;
2173
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2175
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2174
2176
}
2175
2177
MessageSendEvent :: SendTxAddInput { ref node_id, ref msg } => {
2176
2178
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling SendTxAddInput event in peer_handler for node {} for channel {}" ,
2177
2179
log_pubkey!( node_id) ,
2178
2180
& msg. channel_id) ;
2179
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2181
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2180
2182
} ,
2181
2183
MessageSendEvent :: SendTxAddOutput { ref node_id, ref msg } => {
2182
2184
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling SendTxAddOutput event in peer_handler for node {} for channel {}" ,
2183
2185
log_pubkey!( node_id) ,
2184
2186
& msg. channel_id) ;
2185
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2187
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2186
2188
} ,
2187
2189
MessageSendEvent :: SendTxRemoveInput { ref node_id, ref msg } => {
2188
2190
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling SendTxRemoveInput event in peer_handler for node {} for channel {}" ,
2189
2191
log_pubkey!( node_id) ,
2190
2192
& msg. channel_id) ;
2191
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2193
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2192
2194
} ,
2193
2195
MessageSendEvent :: SendTxRemoveOutput { ref node_id, ref msg } => {
2194
2196
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling SendTxRemoveOutput event in peer_handler for node {} for channel {}" ,
2195
2197
log_pubkey!( node_id) ,
2196
2198
& msg. channel_id) ;
2197
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2199
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2198
2200
} ,
2199
2201
MessageSendEvent :: SendTxComplete { ref node_id, ref msg } => {
2200
2202
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling SendTxComplete event in peer_handler for node {} for channel {}" ,
2201
2203
log_pubkey!( node_id) ,
2202
2204
& msg. channel_id) ;
2203
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2205
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2204
2206
} ,
2205
2207
MessageSendEvent :: SendTxSignatures { ref node_id, ref msg } => {
2206
2208
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling SendTxSignatures event in peer_handler for node {} for channel {}" ,
2207
2209
log_pubkey!( node_id) ,
2208
2210
& msg. channel_id) ;
2209
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2211
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2210
2212
} ,
2211
2213
MessageSendEvent :: SendTxInitRbf { ref node_id, ref msg } => {
2212
2214
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling SendTxInitRbf event in peer_handler for node {} for channel {}" ,
2213
2215
log_pubkey!( node_id) ,
2214
2216
& msg. channel_id) ;
2215
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2217
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2216
2218
} ,
2217
2219
MessageSendEvent :: SendTxAckRbf { ref node_id, ref msg } => {
2218
2220
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling SendTxAckRbf event in peer_handler for node {} for channel {}" ,
2219
2221
log_pubkey!( node_id) ,
2220
2222
& msg. channel_id) ;
2221
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2223
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2222
2224
} ,
2223
2225
MessageSendEvent :: SendTxAbort { ref node_id, ref msg } => {
2224
2226
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling SendTxAbort event in peer_handler for node {} for channel {}" ,
2225
2227
log_pubkey!( node_id) ,
2226
2228
& msg. channel_id) ;
2227
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2229
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2228
2230
} ,
2229
2231
MessageSendEvent :: SendAnnouncementSignatures { ref node_id, ref msg } => {
2230
2232
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling SendAnnouncementSignatures event in peer_handler for node {} for channel {})" ,
2231
2233
log_pubkey!( node_id) ,
2232
2234
& msg. channel_id) ;
2233
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2235
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2234
2236
} ,
2235
2237
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 } } => {
2236
2238
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( commitment_signed. channel_id) , None ) , "Handling UpdateHTLCs event in peer_handler for node {} with {} adds, {} fulfills, {} fails for channel {}" ,
@@ -2239,7 +2241,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
2239
2241
update_fulfill_htlcs. len( ) ,
2240
2242
update_fail_htlcs. len( ) ,
2241
2243
& commitment_signed. channel_id) ;
2242
- let mut peer = get_peer_for_forwarding ! ( node_id) ;
2244
+ let mut peer = get_peer_for_forwarding ! ( node_id) ? ;
2243
2245
for msg in update_add_htlcs {
2244
2246
self . enqueue_message ( & mut * peer, msg) ;
2245
2247
}
@@ -2261,32 +2263,32 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
2261
2263
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling SendRevokeAndACK event in peer_handler for node {} for channel {}" ,
2262
2264
log_pubkey!( node_id) ,
2263
2265
& msg. channel_id) ;
2264
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2266
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2265
2267
} ,
2266
2268
MessageSendEvent :: SendClosingSigned { ref node_id, ref msg } => {
2267
2269
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling SendClosingSigned event in peer_handler for node {} for channel {}" ,
2268
2270
log_pubkey!( node_id) ,
2269
2271
& msg. channel_id) ;
2270
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2272
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2271
2273
} ,
2272
2274
MessageSendEvent :: SendShutdown { ref node_id, ref msg } => {
2273
2275
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling Shutdown event in peer_handler for node {} for channel {}" ,
2274
2276
log_pubkey!( node_id) ,
2275
2277
& msg. channel_id) ;
2276
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2278
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2277
2279
} ,
2278
2280
MessageSendEvent :: SendChannelReestablish { ref node_id, ref msg } => {
2279
2281
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , Some ( msg. channel_id) , None ) , "Handling SendChannelReestablish event in peer_handler for node {} for channel {}" ,
2280
2282
log_pubkey!( node_id) ,
2281
2283
& msg. channel_id) ;
2282
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2284
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2283
2285
} ,
2284
2286
MessageSendEvent :: SendChannelAnnouncement { ref node_id, ref msg, ref update_msg } => {
2285
2287
log_debug ! ( WithContext :: from( & self . logger, Some ( * node_id) , None , None ) , "Handling SendChannelAnnouncement event in peer_handler for node {} for short channel id {}" ,
2286
2288
log_pubkey!( node_id) ,
2287
2289
msg. contents. short_channel_id) ;
2288
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2289
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , update_msg) ;
2290
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2291
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , update_msg) ;
2290
2292
} ,
2291
2293
MessageSendEvent :: BroadcastChannelAnnouncement { msg, update_msg } => {
2292
2294
log_debug ! ( self . logger, "Handling BroadcastChannelAnnouncement event in peer_handler for short channel id {}" , msg. contents. short_channel_id) ;
@@ -2322,7 +2324,7 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
2322
2324
MessageSendEvent :: SendChannelUpdate { ref node_id, ref msg } => {
2323
2325
log_trace ! ( WithContext :: from( & self . logger, Some ( * node_id) , None , None ) , "Handling SendChannelUpdate event in peer_handler for node {} for channel {}" ,
2324
2326
log_pubkey!( node_id) , msg. contents. short_channel_id) ;
2325
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2327
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2326
2328
} ,
2327
2329
MessageSendEvent :: HandleError { node_id, action } => {
2328
2330
let logger = WithContext :: from ( & self . logger , Some ( node_id) , None , None ) ;
@@ -2360,21 +2362,21 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
2360
2362
log_trace ! ( logger, "Handling SendErrorMessage HandleError event in peer_handler for node {} with message {}" ,
2361
2363
log_pubkey!( node_id) ,
2362
2364
msg. data) ;
2363
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( & node_id) , msg) ;
2365
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( & node_id) ? , msg) ;
2364
2366
} ,
2365
2367
msgs:: ErrorAction :: SendWarningMessage { ref msg, ref log_level } => {
2366
2368
log_given_level ! ( logger, * log_level, "Handling SendWarningMessage HandleError event in peer_handler for node {} with message {}" ,
2367
2369
log_pubkey!( node_id) ,
2368
2370
msg. data) ;
2369
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( & node_id) , msg) ;
2371
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( & node_id) ? , msg) ;
2370
2372
} ,
2371
2373
}
2372
2374
} ,
2373
2375
MessageSendEvent :: SendChannelRangeQuery { ref node_id, ref msg } => {
2374
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2376
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2375
2377
} ,
2376
2378
MessageSendEvent :: SendShortIdsQuery { ref node_id, ref msg } => {
2377
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2379
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2378
2380
}
2379
2381
MessageSendEvent :: SendReplyChannelRange { ref node_id, ref msg } => {
2380
2382
log_gossip ! ( WithContext :: from( & self . logger, Some ( * node_id) , None , None ) , "Handling SendReplyChannelRange event in peer_handler for node {} with num_scids={} first_blocknum={} number_of_blocks={}, sync_complete={}" ,
@@ -2383,17 +2385,24 @@ impl<Descriptor: SocketDescriptor, CM: Deref, RM: Deref, OM: Deref, L: Deref, CM
2383
2385
msg. first_blocknum,
2384
2386
msg. number_of_blocks,
2385
2387
msg. sync_complete) ;
2386
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2388
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2387
2389
}
2388
2390
MessageSendEvent :: SendGossipTimestampFilter { ref node_id, ref msg } => {
2389
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) , msg) ;
2391
+ self . enqueue_message ( & mut * get_peer_for_forwarding ! ( node_id) ? , msg) ;
2390
2392
}
2391
2393
}
2394
+ Some ( ( ) )
2395
+ } ;
2396
+ for event in chan_events {
2397
+ handle_event ( event, true ) ;
2398
+ }
2399
+ for event in route_events {
2400
+ handle_event ( event, false ) ;
2392
2401
}
2393
2402
2394
2403
for ( node_id, msg) in self . message_handler . custom_message_handler . get_and_clear_pending_msg ( ) {
2395
2404
if peers_to_disconnect. get ( & node_id) . is_some ( ) { continue ; }
2396
- self . enqueue_message ( & mut * get_peer_for_forwarding ! ( & node_id) , & msg) ;
2405
+ self . enqueue_message ( & mut * if let Some ( peer ) = get_peer_for_forwarding ! ( & node_id) { peer } else { continue ; } , & msg) ;
2397
2406
}
2398
2407
2399
2408
for ( descriptor, peer_mutex) in peers. iter ( ) {
0 commit comments