-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
yamux: Update yamux with window tuning and backport fixes #256
base: master
Are you sure you want to change the base?
Conversation
Signed-off-by: Alexandru Vasile <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
Signed-off-by: Alexandru Vasile <[email protected]>
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was this backported from the upstream yamux?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was 066dae3 cherry picked completely from upstream yamux? If not, what parts were updated manually?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was 8301fff cherry-picked from the upstream? What parts were manually modified?
This PR updates the internal yamux crate to include the following:
Updates are backported from upstream to work with the current
yamux::Control
andyamux::ControlledConnection
.The
Control
andControlleConnection
are used by litep2p and have been removed by upstream. This will lead to a major litep2p refactor which may take significantly longer than backporting.