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