Skip to content

Commit

Permalink
Fix notifications sometimes not being sent (paritytech#7594)
Browse files Browse the repository at this point in the history
* Fix notifications sometimes not being sent

* Add comment
  • Loading branch information
tomaka authored and darkfriend77 committed Jan 11, 2021
1 parent a080d4e commit 571cb75
Showing 1 changed file with 10 additions and 0 deletions.
10 changes: 10 additions & 0 deletions client/network/src/protocol/generic_proto/handler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -971,6 +971,16 @@ impl ProtocolsHandler for NotifsHandler {
if let Some(pos) = self.out_protocols.iter().position(|(n, _)| *n == protocol_name) {
if let Some(substream) = out_substreams[pos].as_mut() {
let _ = substream.start_send_unpin(message);
// Calling `start_send_unpin` only queues the message. Actually
// emitting the message is done with `poll_flush`. In order to
// not introduce too much complexity, this flushing is done earlier
// in the body of this `poll()` method. As such, we schedule a task
// wake-up now in order to guarantee that `poll()` will be called
// again and the flush happening.
// At the time of the writing of this comment, a rewrite of this
// code is being planned. If you find this comment in the wild and
// the rewrite didn't happen, please consider a refactor.
cx.waker().wake_by_ref();
continue 'poll_notifs_sink;
}

Expand Down

0 comments on commit 571cb75

Please sign in to comment.