X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning-net-tokio%2Fsrc%2Flib.rs;fp=lightning-net-tokio%2Fsrc%2Flib.rs;h=3cfed870b31f59ae1b36ffbf7a1987eee2b0df00;hb=b222be233b0267ac2012a09e0d1c8ffee9cd2982;hp=fc7b260e41bf1c6d54d8df15436cf865f64629ed;hpb=96fc0f3453388256145f9ff154554aedd69207d2;p=rust-lightning diff --git a/lightning-net-tokio/src/lib.rs b/lightning-net-tokio/src/lib.rs index fc7b260e..3cfed870 100644 --- a/lightning-net-tokio/src/lib.rs +++ b/lightning-net-tokio/src/lib.rs @@ -194,6 +194,13 @@ impl Connection { }, } let _ = event_waker.try_send(()); + + // At this point we've processed a message or two, and reset the ping timer for this + // peer, at least in the "are we still receiving messages" context, if we don't give up + // our timeslice to another task we may just spin on this peer, starving other peers + // and eventually disconnecting them for ping timeouts. Instead, we explicitly yield + // here. + tokio::task::yield_now().await; }; let writer_option = us.lock().unwrap().writer.take(); if let Some(mut writer) = writer_option {