forked from quic-go/quic-go
-
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
[pull] master from quic-go:master #209
Open
pull
wants to merge
288
commits into
devnw:master
Choose a base branch
from
quic-go:master
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #209 +/- ##
==========================================
+ Coverage 83.71% 83.73% +0.02%
==========================================
Files 150 150
Lines 15415 15415
==========================================
+ Hits 12904 12907 +3
+ Misses 2012 2010 -2
+ Partials 499 498 -1 ☔ View full report in Codecov by Sentry. |
* http3: add remote address to request context Add the remote address of the underlying packet connection to the HTTP request context. This is useful for applications that need access to the actual remote address (wrapped in a net.Addr) rather than just its string representation. Fixes #4198 * add an integration test to the self test suite. I was not sure how deep we want to go to assure the right value is set. For now, it asserts that a net.Addr is present in the context. Due to the dynamic nature of the requests, it is a bit harder to know exactly how the remote address will look like. IPv4 vs IPv6, random high port. I think it is fine to only assert that the value is present.
* interrupt the stream when a panick happened * move the declaration of errPanicked * check what's read is a prefix of what's written * check errPanicked * use MatchError instead of Equal * use channel to notify the response has been received
* qlog chosen alpn * qlog chosen alpn * qlog: fix capitalization of ALPN --------- Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* drop support for Go 1.20 * ci: udpate CircleCI to Go 1.21 * qtls: remove unnecessary type aliases * ci: build using Go 1.22rc1
This function was added in Go 1.19, and covers some corner cases that our custom implementation didn't.
These functions were added in Go 1.21.
* http3: typo in ListenAndServe docs Also, partially prevent a goroutine leak on an error from one of the listeners. * http3: improve documentation for ListenAndServe --------- Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* qtls: remove unneeded type alias for the tls.QUICEncryptionLevel * handshake: make cryptoSetup.WriteRecord private
…4221) If the packet doesn't contain an ACK (i.e. the payload is empty), there's no point retrying to pack it later. It's extremely unlikely that the available packet size will suddenly increase.
Once an ACK has been queued, there's no need to check futher conditions that would lead to queueing of an ACK.
* Add ConnContext to http3.Server ConnContext can be used to modify the context used by a new http Request. * Make linter happy * Add nil check and integration test * Add the ServerContextKey check to the ConnContext func * Update integrationtests/self/http_test.go Co-authored-by: Marten Seemann <martenseemann@gmail.com> * Update http3/server.go Co-authored-by: Marten Seemann <martenseemann@gmail.com> --------- Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* add qlog default tracer which writes to QLOGDIR * gofumpt * add qlog default tracer which writes to QLOGDIR * fix flaky tests * Update README.md Co-authored-by: Marten Seemann <martenseemann@gmail.com> * Update README.md Co-authored-by: Marten Seemann <martenseemann@gmail.com> * Update README.md Co-authored-by: Marten Seemann <martenseemann@gmail.com> * Update README.md Co-authored-by: Marten Seemann <martenseemann@gmail.com> --------- Co-authored-by: Marten Seemann <martenseemann@gmail.com>
Users can adjust the log level using the QUIC_GO_LOG_LEVEL environment variable. This is more representative of how quic-go would actually be used, since the logger is part of an internal package.
There's no need to have a dedicated shutdown method, as the use case (shutting down an outgoing connection attempt on context cancellation) can be achieved by using Connection.destroy.
No functional change expected.
No functional change expected.
* avoid accessing the streams map when packing stream data * avoid accessing the streams map when packing flow control frames * remove streamGetter interface
…_SENDING (#4605) * garbage collect stream when CancelWrite is called after receiving STOP_SENDING * review comments * Hold lock while checking isNewlyCompleted --------- Co-authored-by: Marco Munizaga <git@marcopolo.io>
The stream always gets blocked at the current write offset. There's no need to return this offset from the flow controller.
#4618) This is significantly faster: name old time/op new time/op delta ArbitraryHeaderParsing/dest_8/_src_10-16 53.8ns ± 2% 27.4ns ± 2% -49.01% (p=0.008 n=5+5) ArbitraryHeaderParsing/dest_20_/_src_20-16 61.6ns ± 1% 33.3ns ± 3% -46.00% (p=0.008 n=5+5) ArbitraryHeaderParsing/dest_100_/_src_150-16 90.0ns ± 3% 54.8ns ± 5% -39.09% (p=0.008 n=5+5) name old alloc/op new alloc/op delta ArbitraryHeaderParsing/dest_8/_src_10-16 72.0B ± 0% 24.0B ± 0% -66.67% (p=0.008 n=5+5) ArbitraryHeaderParsing/dest_20_/_src_20-16 96.0B ± 0% 48.0B ± 0% -50.00% (p=0.008 n=5+5) ArbitraryHeaderParsing/dest_100_/_src_150-16 320B ± 0% 272B ± 0% -15.00% (p=0.008 n=5+5) name old allocs/op new allocs/op delta ArbitraryHeaderParsing/dest_8/_src_10-16 3.00 ± 0% 2.00 ± 0% -33.33% (p=0.008 n=5+5) ArbitraryHeaderParsing/dest_20_/_src_20-16 3.00 ± 0% 2.00 ± 0% -33.33% (p=0.008 n=5+5) ArbitraryHeaderParsing/dest_100_/_src_150-16 3.00 ± 0% 2.00 ± 0% -33.33% (p=0.008 n=5+5)
* remove trivial mock implementation of the cryptoStream interface No functional change expected. * fix tests
Even though we currently don't do so, sending MAX_DATA, MAX_STREAM_DATA and MAX_STREAMS is allowed in 0-RTT.
* handshake: generate CRYPTO_ERRORs for internal_error TLS alerts * remove stray comment
* use a separate method for queueing control frames from the streams map * queue stream-related control frames in the respective stream
* http3: implement server idle timeout support This update introduces the ability for an HTTP/3 server to enforce an idle timeout on connections. This timeout will trigger when no new requests are received on a connection, irrespective of any PING frames received at the QUIC level. * fix deadlock when http3 idle timeout is not enabled * fix typo * Switch to a more efficient implementation * Avoid a goroutine * Avoid constent re-adjusting of a timer * Works with hijacked streams * Generalize the idle timeout description * Add an integration test for http server idle timeout * Attempt to fix other tests impacted by the new idle timeout test
* ci: migrate race detector test to GitHub Actions * actually enable the race detector
* bump Go version in go.mod, stop testing on Go 1.21 * ci: update golangci-lint to v1.60.1 * ignore Go 1.23 0-RTT events in exhaustive linter
* http3: add HTTP Trailer support for clients This change only adds support to read HTTP trailers sent to clients. * chore: add protection against some out-of-spec behavior + tests * chore: re-add test accidentally overwtitten * chore: empty commit to re-trigger ci * fix: address some review notes (wip) * fix: simplify code in stream.Read by using a callback from requestStream.ReadResponse * restructure where trailers are read and parsed * WIP simplify trailer parsing design * chore: refactor to use simpler trailer parsing strategy * make gofumpt happy * Update http3/headers.go Co-authored-by: Marten Seemann <martenseemann@gmail.com> * remove stray TODO --------- Co-authored-by: Marten Seemann <martenseemann@gmail.com>
* http3: reject pseudo header fields in trailers As defined in section 4.3 of RFC 9114. * http3: improve allocs for trailer map * http3: rename connection.parseTrailer to decodeTrailers
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by pull[bot]
Can you help keep this open source service alive? 💖 Please sponsor : )