fix(deps): update module github.com/quic-go/quic-go to v0.35.1 #196

Merged
sam merged 3 commits from renovate/github.com-quic-go-quic-go-0.x into master 2023-06-02 21:10:06 +00:00
Collaborator

This PR contains the following updates:

Package Type Update Change
github.com/quic-go/quic-go require minor v0.34.0 -> v0.35.1

Release Notes

quic-go/quic-go

v0.35.1

Compare Source

This patch release fixes a regression in the HTTP/3 roundtripper introduced in the v0.35.0 release.

Thanks to @​kgersen for reporting and to @​Glonee for contributing the fixes!

What's Changed

Full Changelog: https://github.com/quic-go/quic-go/compare/v0.35.0...v0.35.1

v0.35.0

Compare Source

Modernizing the quic-go connection API

In this release, we've completely revamped our connection establishment API, following an engaging discussion with the quic-go community (#​3727).

Key modifications are as follows:

  • The context variants of the dial functions, including DialContext, have been removed. In their place, Dial now incorporates a context. This development stems from our drive to modernize the API, given that context.Context wasn't in existence when quic-go was launched eight years ago.
  • quic.Listener and quic.EarlyListener have transitioned from interfaces to structs.
  • We've introduced a quic.Transport. More about that below.

Introducing the Transport

The QUIC protocols demultiplexes connections based on the QUIC Connection IDs. This has interesting implications, first and foremost that multiple QUIC connections can run on the same UDP socket (and even connect to the same remote QUIC server). Interestingly, it's feasible to run a QUIC server on the same socket as outgoing QUIC connections. In fact, that's a really useful thing to do when using QUIC for holepunching through NATs.

Previously, it was possible to utilize this feature, but the API lacked clarity. When the same net.PacketConn was passed to sequential Listen and Dial calls, quic-go would identify this and multiplex several QUIC connections on that net.PacketConn. This behavior was not obvious and, additionally, it demanded that certain values of the Config [matched](https://github.com/quic-go/quic-go/blob/v0.34.0/multiplexer.go#L82-L90).

We've now made multiplexing explicit with the Transport introduction. A Transport manages a single net.PacketConn. The usage is as follows:

laddr, err := net.ResolveUDPAddr("udp4", "0.0.0.0:443")
// handle err
conn, err := net.ListenUDP("udp4", laddr)
// handle err
tr := quic.Transport{
	Conn:              conn,
	StatelessResetKey: <a key that survives reboots>,
}
// start listening for incoming QUIC connection
ln, err := tr.Listen(<tls.Config>, &quic.Config{})
// handle err
go func() {
	conn, err := ln.Accept(context.Background())
	if err != nil {
		return
	}
	// handle accepted QUIC connection...
}()

// establish QUIC connections to remote nodes, on the same UDP socket
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel
conn, err := tr.Dial(ctx, <remote addr>, <tls.Config>, <quic.Config>)
// handle err
// handle dialed QUIC connection

This modification enables us to shift several configuration options logically tied to the UDP sockets from the Config. Specifically, ConnectionIDLength / ConnectionIDGenerator and StatelessResetKey are now configured on the Transport.

Migration Guide

To update to the new version, applications might need to:

  1. Substitute calls to DialContext with calls to Dial.
  2. Replace all instances of Listener with *Listener (and similarly for EarlyListener).

Other Notable Changes

  • The HTTP/3 response writer is now compatible with the http.ResponseController introduced in the Go 1.20 release (#​3790). Thanks @​dunglas!
  • The http3.RoundTripper now implements CloseIdleConnections method, allowing the use of http.Client.CloseIdleConnections. Thanks @​Glonee!
  • DoS resiliency was improved by only using a single Go routine to send stateless reset, version negotiation and INVALID_TOKEN error packets (#​3842 and #​3854). Thanks @​sukunrt!
  • We now use the SO_RCVBUFFORCE syscall to attempt to increase the UDP receive buffer. Increasing the receive buffer is absolutely crucial for QUIC performance, and quic-go will print a log message if increasing the buffer size fails. Unfortunately, due to small default buffer sizes in most Linux distributions, this happened quite frequently and required [manual configuration](https://github.com/quic-go/quic-go/wiki/UDP-Receive-Buffer-Size). Using SO_RCVBUFFORCE call will only succeed when the process has CAP_NET_ADMIN permissions, but in these cases no manual configuration will be necessary any more. Thanks to @​MarcoPolo!

Full Changelog

New Contributors

Full Changelog: https://github.com/quic-go/quic-go/compare/v0.34.0...v0.35.0


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Renovate Bot.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/quic-go/quic-go](https://github.com/quic-go/quic-go) | require | minor | `v0.34.0` -> `v0.35.1` | --- ### Release Notes <details> <summary>quic-go/quic-go</summary> ### [`v0.35.1`](https://github.com/quic-go/quic-go/releases/tag/v0.35.1) [Compare Source](https://github.com/quic-go/quic-go/compare/v0.35.0...v0.35.1) This patch release fixes a regression in the HTTP/3 roundtripper introduced in the v0.35.0 release. Thanks to [@&#8203;kgersen](https://github.com/kgersen) for reporting and to [@&#8203;Glonee](https://github.com/Glonee) for contributing the fixes! #### What's Changed - http3: set tls.Config.ServerName for outgoing requests, if unset by [@&#8203;Glonee](https://github.com/Glonee) in https://github.com/quic-go/quic-go/pull/3867 - http3: correctly use the quic.Transport by [@&#8203;Glonee](https://github.com/Glonee) in https://github.com/quic-go/quic-go/pull/3869 - http3: close the connection when closing the roundtripper by [@&#8203;Glonee](https://github.com/Glonee) in https://github.com/quic-go/quic-go/pull/3873 **Full Changelog**: https://github.com/quic-go/quic-go/compare/v0.35.0...v0.35.1 ### [`v0.35.0`](https://github.com/quic-go/quic-go/releases/tag/v0.35.0) [Compare Source](https://github.com/quic-go/quic-go/compare/v0.34.0...v0.35.0) #### Modernizing the quic-go connection API In this release, we've completely revamped our connection establishment API, following an engaging discussion with the quic-go community ([#&#8203;3727](https://github.com/quic-go/quic-go/issues/3727)). Key modifications are as follows: - The context variants of the dial functions, including `DialContext`, have been removed. In their place, `Dial` now incorporates a context. This development stems from our drive to modernize the API, given that `context.Context` wasn't in existence when quic-go was launched eight years ago. - `quic.Listener` and `quic.EarlyListener` have transitioned from interfaces to structs. <!----> - We've introduced a `quic.Transport`. More about that below. #### Introducing the `Transport` The QUIC protocols demultiplexes connections based on the QUIC Connection IDs. This has interesting implications, first and foremost that multiple QUIC connections can run on the same UDP socket (and even connect to the same remote QUIC server). Interestingly, it's feasible to run a QUIC server on the same socket as outgoing QUIC connections. In fact, that's a really useful thing to do when using QUIC for holepunching through NATs. Previously, it was possible to utilize this feature, but the API lacked clarity. When the same `net.PacketConn` was passed to sequential `Listen` and `Dial` calls, quic-go would identify this and multiplex several QUIC connections on that `net.PacketConn`. This behavior was not obvious and, additionally, it demanded that certain values of the `Config` \[[matched](https://github.com/quic-go/quic-go/blob/v0.34.0/multiplexer.go#L82-L90)]\(https://github.com/quic-go/quic-go/blob/v0.34.0/multiplexer.go#L82-L90). We've now made multiplexing explicit with the `Transport` introduction. A `Transport` manages a single `net.PacketConn`. The usage is as follows: ```go laddr, err := net.ResolveUDPAddr("udp4", "0.0.0.0:443") // handle err conn, err := net.ListenUDP("udp4", laddr) // handle err tr := quic.Transport{ Conn: conn, StatelessResetKey: <a key that survives reboots>, } // start listening for incoming QUIC connection ln, err := tr.Listen(<tls.Config>, &quic.Config{}) // handle err go func() { conn, err := ln.Accept(context.Background()) if err != nil { return } // handle accepted QUIC connection... }() // establish QUIC connections to remote nodes, on the same UDP socket ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel conn, err := tr.Dial(ctx, <remote addr>, <tls.Config>, <quic.Config>) // handle err // handle dialed QUIC connection ``` This modification enables us to shift several configuration options logically tied to the UDP sockets from the `Config`. Specifically, `ConnectionIDLength` / `ConnectionIDGenerator` and `StatelessResetKey` are now configured on the `Transport`. #### Migration Guide To update to the new version, applications might need to: 1. Substitute calls to `DialContext` with calls to `Dial`. 2. Replace all instances of `Listener` with `*Listener` (and similarly for `EarlyListener`). #### Other Notable Changes - The HTTP/3 response writer is now compatible with the `http.ResponseController` introduced in the Go 1.20 release ([#&#8203;3790](https://github.com/quic-go/quic-go/issues/3790)). Thanks [@&#8203;dunglas](https://github.com/dunglas)! - The `http3.RoundTripper` now implements `CloseIdleConnections` method, allowing the use of `http.Client.CloseIdleConnections`. Thanks [@&#8203;Glonee](https://github.com/Glonee)! - DoS resiliency was improved by only using a single Go routine to send stateless reset, version negotiation and INVALID_TOKEN error packets ([#&#8203;3842](https://github.com/quic-go/quic-go/issues/3842) and [#&#8203;3854](https://github.com/quic-go/quic-go/issues/3854)). Thanks [@&#8203;sukunrt](https://github.com/sukunrt)! - We now use the `SO_RCVBUFFORCE` syscall to attempt to increase the UDP receive buffer. Increasing the receive buffer is absolutely crucial for QUIC performance, and quic-go will print a log message if increasing the buffer size fails. Unfortunately, due to small default buffer sizes in most Linux distributions, this happened quite frequently and required \[[manual configuration](https://github.com/quic-go/quic-go/wiki/UDP-Receive-Buffer-Size)]\(https://github.com/quic-go/quic-go/wiki/UDP-Receive-Buffer-Size). Using `SO_RCVBUFFORCE` call will only succeed when the process has `CAP_NET_ADMIN` permissions, but in these cases no manual configuration will be necessary any more. Thanks to [@&#8203;MarcoPolo](https://github.com/MarcoPolo)! #### Full Changelog - http3: add compatibility with net/http.ResponseController by [@&#8203;dunglas](https://github.com/dunglas) in https://github.com/quic-go/quic-go/pull/3790 - ci: allow changing runners through config vars by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3783 - set the version for integration tests using a command line flag by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3782 - ci: speed up the cross compilation job by parallelizing by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3784 - put a context on a dial functions, remove Dial\*Context, remove host parameter by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3785 - congestion: fix overflow when calculating the pacing budget by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3796 - move 0-RTT queue handling from the packet handler map to the server by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3788 - make Listener and EarlyListener a struct by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3789 - docs: add Mercure in the list of projects using quic-go by [@&#8203;dunglas](https://github.com/dunglas) in https://github.com/quic-go/quic-go/pull/3791 - introduce a Transport by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3794 - docs: fix typo in documentation for EarlyConnection by [@&#8203;Zxilly](https://github.com/Zxilly) in https://github.com/quic-go/quic-go/pull/3798 - transport: fix flaky stateless reset test by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3810 - use SO_RCVBUFFORCE to force receive buffer increase on Linux by [@&#8203;MarcoPolo](https://github.com/MarcoPolo) in https://github.com/quic-go/quic-go/pull/3804 - increase the UDP send buffer size to 2 MB by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3812 - quicvarint: remove deprecated Write function by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3781 - change how the multiplex test is skipped on Linux by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3817 - fix flaky timeout integration test by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3818 - fix HTTP/3 connection test on draft-29 by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3819 - implement http3.RoundTripper.CloseIdleConnections by [@&#8203;Glonee](https://github.com/Glonee) in https://github.com/quic-go/quic-go/pull/3820 - ci: fix coverage report by [@&#8203;Glonee](https://github.com/Glonee) in https://github.com/quic-go/quic-go/pull/3837 - ackhandler: optimize memory layout of ackhandler.Packet by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3844 - transport: send stateless reset packets from a single Go routine by [@&#8203;sukunrt](https://github.com/sukunrt) in https://github.com/quic-go/quic-go/pull/3842 - fix comment claiming ParseConnectionID reuses the data slice by [@&#8203;sukunrt](https://github.com/sukunrt) in https://github.com/quic-go/quic-go/pull/3848 - rttstats: don't set initial RTT after obtaining a measurement by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3852 - wire: save ECN counts on the ACK frame by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3829 - quicproxy: increase UDP send and receive buffer sizes by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3813 - packet packer: don't try packing a 0-RTT packet with only an ACK by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3849 - server: send version negotiation and invalid token packets from a single Go routine by [@&#8203;sukunrt](https://github.com/sukunrt) in https://github.com/quic-go/quic-go/pull/3854 - wire: apply the default value for the active_connection_id_limit by [@&#8203;marten-seemann](https://github.com/marten-seemann) in https://github.com/quic-go/quic-go/pull/3806 #### New Contributors - [@&#8203;Zxilly](https://github.com/Zxilly) made their first contribution in https://github.com/quic-go/quic-go/pull/3798 - [@&#8203;sukunrt](https://github.com/sukunrt) made their first contribution in https://github.com/quic-go/quic-go/pull/3842 **Full Changelog**: https://github.com/quic-go/quic-go/compare/v0.34.0...v0.35.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS43MS4xIiwidXBkYXRlZEluVmVyIjoiMzUuNzEuMSIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->
renovate-bot force-pushed renovate/github.com-quic-go-quic-go-0.x from 3016098802 to 384f943b37 2023-06-01 09:00:27 +00:00 Compare
renovate-bot changed title from fix(deps): update module github.com/quic-go/quic-go to v0.35.0 to fix(deps): update module github.com/quic-go/quic-go to v0.35.1 2023-06-01 09:00:29 +00:00
sam added 1 commit 2023-06-02 20:35:32 +00:00
Some checks reported errors
continuous-integration/drone/push Build is running
continuous-integration/drone/pr Build was killed
6a9fad2d55
update QUIC code to work with new quic-go version
Signed-off-by: Sam Therapy <sam@samtherapy.net>
sam added 1 commit 2023-06-02 20:37:53 +00:00
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
bed105855c
make test happy for some reason
Signed-off-by: Sam Therapy <sam@samtherapy.net>
Author
Collaborator

Edited/Blocked Notification

Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

You can manually request rebase by checking the rebase/retry box above.

Warning: custom changes will be lost.

### Edited/Blocked Notification Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR. You can manually request rebase by checking the rebase/retry box above. ⚠ **Warning**: custom changes will be lost.
sam merged commit 66855b5542 into master 2023-06-02 21:10:06 +00:00
sam deleted branch renovate/github.com-quic-go-quic-go-0.x 2023-06-02 21:10:06 +00:00
Sign in to join this conversation.
No description provided.