-
Notifications
You must be signed in to change notification settings - Fork 0
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
Bump to quic-go 0.40 #207
Bump to quic-go 0.40 #207
Conversation
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.
Generally LGTM. I want to just take it for a spin to make sure the basic setup also works for me - I'll do that today. Great you got this over the line!
The 5 second dial timeout does seem a touch low to me tbh. For me, for example, SSHing to some far away machine can sometimes take in that range. I think Linux defaults TCP connection timeouts to 60 seconds! I think 8 or thereabouts is probably fine? |
I checked out this branch and it built with (I realize this doesn't exercise the actual functionality too much, but I wanted to make both of those things known.) |
Nice! The steps in the README work great, although the sequence for running Freddie is slightly different now. Looking good! |
Cool -- bumped it to 8 here: 36fc51b |
Fixed here: fb8392c |
Just FYI, I've been giving it an aggressive poke this morning, and I was able to stimulate a panic -- so I'm gonna suss this out before merging. AFAICT, the repro is: start a desktop client, start a widget, let them signal and establish a QUIC connection. Then disconnect the widget and let the desktop client run through its reset behaviors. But I haven't been able to stimulate the panic every time that way...
|
The panic seems to be a canary they inserted due to breaking API changes: TBH, I'm kinda confused about what's going on. I think they're using the word "connection" in different ways in different places, hence their TODO to write a more descriptive panic message. In particular, I'm not sure what "if we're already listening on this connection" means. Skimming the breaking changes notes, it seems this all has to do with reuse of the underlying I'll have to read all those breaking changes notes and see if I can figure out what's going on. |
Alright, I think I found the explanation:
Let's see what I can do... |
For those following along at home, |
OK, this should do it: 15c26ab Gonna let this marinate until tomorrow morning, then I'll merge. Just want to spend a little more time poking it. |
Good lord. |
This resolves the issues related to new versions of quic-go and bumps us to the newest version, which is 0.40. I'm now able to build everything using Go 1.20.11.
Basically, new versions of quic-go have introduced two nasty lil changes:
quic.Dial
-- instead of timing out and returning an error if the handshake fails, it now obeys a context. Previously, we relied on the timeout and error behavior.net.PacketConn
you build your QUIC connection atop of. Previously, thatnet.PacketConn
wasn't required to implement read or write deadlines. Now it requires correctly implemented read deadlines. So I had to make ourBroflakeConn
do all theSetReadDeadline
stuff and obey the deadline properly. Fun times.This must be merged alongside this change to Flashlight: getlantern/flashlight#1332