yamux: Update yamux with window tuning and backport fixes#256
yamux: Update yamux with window tuning and backport fixes#256
Conversation
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
Signed-off-by: Alexandru Vasile <alexandru.vasile@parity.io>
|
Can you remind why we carry our own yamux fork with litep2p? I remember some functionality was removed from the upstream? May be we can extract yamux as |
|
Yamux was included in litep2p because there was a memory leak which had been fixed in a later version but that version also had quite significant API breakage which would've required at least a partial rewrite of TCP/WebSocket connections handlers. More context here: #55 |
|
I've also had a brief look, the refactor needed to adjust to the upstream API is quite involved. We can probably handle this as a follow-up post stabilization in substrate 🙏 I think multistream-select has a similar story, however I'm not sure what changed in terms of compatibility there |
| if let Some(w) = shared.reader.take() { | ||
| w.wake() | ||
| } |
There was a problem hiding this comment.
Was this backported from the upstream yamux?
There was a problem hiding this comment.
I've backported all commits IIRC, will double check to be sure. Cherry-picking was not an option since we diverge in the API
There was a problem hiding this comment.
Was 066dae3 cherry picked completely from upstream yamux? If not, what parts were updated manually?
There was a problem hiding this comment.
Was 8301fff cherry-picked from the upstream? What parts were manually modified?
|
Closing in favor of: |
This PR updates the internal yamux crate to include the following:
Updates are backported from upstream to work with the current
yamux::Controlandyamux::ControlledConnection.The
ControlandControlleConnectionare used by litep2p and have been removed by upstream. This will lead to a major litep2p refactor which may take significantly longer than backporting.