Fix notifications sometimes not being sent (#7594)

* Fix notifications sometimes not being sent

* Add comment
This commit is contained in:
Pierre Krieger
2020-11-25 10:15:37 +01:00
committed by GitHub
parent 4885992d7b
commit 31f9a6812a
@@ -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;
}