Skip to content

Commit cf6308a

Browse files
committed
Expose event-processing loop from peer_handler.
1 parent 8e79c05 commit cf6308a

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

src/ln/peer_handler.rs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,6 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
219219
}
220220

221221
fn do_read_event(&self, peer_descriptor: &mut Descriptor, data: Vec<u8>) -> Result<bool, PeerHandleError> {
222-
let mut upstream_events = Vec::new();
223222
let pause_read = {
224223
let mut peers = self.peers.lock().unwrap();
225224
let (should_insert_node_id, pause_read) = match peers.peers.get_mut(peer_descriptor) {
@@ -463,11 +462,25 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
463462
None => {}
464463
};
465464

465+
pause_read
466+
};
467+
468+
self.process_events();
469+
470+
Ok(pause_read)
471+
}
472+
473+
/// Checks for any events generated by our handlers and processes them. May be needed after eg
474+
/// calls to ChannelManager::process_pending_htlc_forward.
475+
pub fn process_events(&self) {
476+
let mut upstream_events = Vec::new();
477+
{
466478
// TODO: There are some DoS attacks here where you can flood someone's outbound send
467479
// buffer by doing things like announcing channels on another node. We should be willing to
468480
// drop optional-ish messages when send buffers get full!
469481

470482
let mut events_generated = self.message_handler.chan_handler.get_and_clear_pending_events();
483+
let mut peers = self.peers.lock().unwrap();
471484
for event in events_generated.drain(..) {
472485
macro_rules! get_peer_for_forwarding {
473486
($node_id: expr, $handle_no_such_peer: block) => {
@@ -573,16 +586,12 @@ impl<Descriptor: SocketDescriptor> PeerManager<Descriptor> {
573586

574587
upstream_events.push(event);
575588
}
576-
577-
pause_read
578-
};
589+
}
579590

580591
let mut pending_events = self.pending_events.lock().unwrap();
581592
for event in upstream_events.drain(..) {
582593
pending_events.push(event);
583594
}
584-
585-
Ok(pause_read)
586595
}
587596

588597
/// Indicates that the given socket descriptor's connection is now closed.

0 commit comments

Comments
 (0)