-
Notifications
You must be signed in to change notification settings - Fork 33
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
Handle session termination #239
Conversation
Thank you for this amazing contribution!
I don't see any solution on top of my head. As you already correctly mentioned, closing a stream requires mutable access to it, and the stream is "something" left to the application layer. I will reason more about it, but definitely is something we can leave outside this PR |
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.
Can we polish a little bit commits history? (E.g. Finish means finish
is a funny commit description, but not very talkative :) )
5b091e2
to
67df9e8
Compare
67df9e8
to
090774d
Compare
Closes #197
This PR adds handling of session termination according to https://datatracker.ietf.org/doc/html/draft-ietf-webtrans-http3#name-session-termination with one exception noted in open questions.
Open questions
Worker
struct, but all approaches that I see are either not possible at the moment or seem too costly:*
quinn::SendStream
andquinn::RecvStream
streams are not Clone so we can't store them directly. This seems to be intentional so it's unlikely for this to be changed.*
quinn
library doesn't expose a way to close a stream with justStreamId
so we can't use them. It's maybe possible to get adequate changes intoquinn
library to enable this.* While it's possible to wrap
quinn
streams in something likeArc<Mutex<_>>
, it seems costly.@BiagioFesta any idea on how to resolve this? (EDIT: We'll leave it outside this PR)
Todo
reset the send side of all of the streams associated with the session upon learning that the session has been terminated
once this gets merged. Reset send side on session termination #242