Marten Seemann
e179048526
wire: simplify packet number parsing, remove utils.ByteOrder interface ( #4590 )
2024-07-21 14:50:21 -07:00
Marten Seemann
29550811b4
remove trivial IPv4 helper function ( #4591 )
2024-07-21 14:50:03 -07:00
Marten Seemann
5f8d146836
wire: optimize parsing of long header packets ( #4589 )
2024-07-21 14:22:32 -07:00
Marten Seemann
bc642d872d
simplify handling of CRYPTO frames, remove cryptoDataHandler interface ( #4588 )
2024-07-21 11:59:08 -07:00
Marten Seemann
72092fbc29
move connection logging to a separate file, absorb logutils package ( #4586 )
...
No functional change expected.
2024-07-21 11:31:32 -07:00
Marten Seemann
c40d4ccb7f
ackhandler: optimize received packet tracking ( #4584 )
...
* ackhandler: use slice instead of linked list to track received packets
* ackhandler: add benchmark test for received packet history
* ackhandler: use the slices package for slice manipulations
2024-07-20 08:14:26 -07:00
Marten Seemann
82b275212c
handshake: remove unneeded tokenProtector interface ( #4585 )
2024-07-19 21:45:20 -07:00
Marten Seemann
7825250d3f
ci: use Go 1.23rc2 for unit and integration tests ( #4571 )
...
* ci: use Go 1.23rc1 for unit and integration tests
* handshake: avoid using linkname to access crypto/tls.cipherSuiteTLS13ByID
* ci: use use Go 1.23rc2
2024-07-18 10:20:54 -07:00
Marten Seemann
b52c33939d
introduce a StreamLimitReachedError for Connection.Open{Uni}Stream ( #4579 )
...
Using a concrete type is preferable to relying on interpreting the
return values from net.Error.Timeout and net.Error.Temporary, especially
since the latter has been deprecated since Go 1.18.
2024-06-28 06:58:28 -07:00
Marten Seemann
7379f1fd5e
handshake: ignore unknown QUIC events from crypto/tls ( #4577 )
2024-06-28 06:24:50 -07:00
Marten Seemann
8f1110450b
use a net.ErrClosed when returning Accept from a closed server ( #4569 )
2024-06-24 03:33:34 -07:00
dependabot[bot]
2da1681699
ci: bump docker/build-push-action from 5 to 6 ( #4576 )
...
Bumps [docker/build-push-action](https://github.com/docker/build-push-action ) from 5 to 6.
- [Release notes](https://github.com/docker/build-push-action/releases )
- [Commits](https://github.com/docker/build-push-action/compare/v5...v6 )
---
updated-dependencies:
- dependency-name: docker/build-push-action
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-24 00:09:49 -07:00
Mathis Engelbart
b4f3839fce
fix stream documentation for StreamError return values ( #4575 )
2024-06-23 19:33:56 -07:00
Marten Seemann
2a082f973a
http3: allow re-dialing of connection after a dial error ( #4573 )
...
* http3: do not cache dial error
* add an integration test
* http3: add a unit test for dial failures
---------
Co-authored-by: 世界 <i@sekai.icu >
2024-06-22 21:38:49 -07:00
Marten Seemann
10f8bd4e06
http3: fix race condition between Server.Serve and Server.Close ( #4572 )
2024-06-23 01:13:56 +08:00
Marten Seemann
1cbd54f087
example: remove Dockerfile ( #4568 )
...
This Dockerfile adds very little value.
2024-06-15 22:01:08 -07:00
Marten Seemann
b19f2f9e3a
metrics: use the default metrics tracer in integration tests ( #4562 )
2024-06-10 14:58:47 +08:00
Marten Seemann
8cae5d80ea
metrics: create a new tracer on every call of DefaultConnectionTracer ( #4560 )
2024-06-07 07:20:20 -07:00
Marten Seemann
4d0562d13c
metrics: add an example Grafana dashboard ( #4559 )
...
* metrics: add an example Grafana dashboard
* metrics: rename Handshake Duration to Handshake Latency
Co-authored-by: sukun <sukunrt@gmail.com >
---------
Co-authored-by: sukun <sukunrt@gmail.com >
v0.45.0
2024-06-06 02:13:35 -07:00
Marten Seemann
0c842975f4
fix incorrect statement about Config.DisablePathMTUDiscovery ( #4558 )
2024-06-05 19:23:53 -07:00
Marten Seemann
cc9a5ee744
qlog: rename DefaultTracer to DefaultConnectionTracer ( #4556 )
2024-06-05 03:50:01 -07:00
Marten Seemann
91221b4a05
metrics: simplify constructor for the default connection tracer ( #4555 )
2024-06-05 03:16:18 -07:00
Marten Seemann
44e0147f2e
pass a context to Transport.ConnContext ( #4536 )
...
* pass a context to Transport.ConnContext
This context is cancelled when the QUIC connection is closed, or when
the QUIC handshake fails. This allows the application to easily build
and garbage collect a map of active connections.
* correctly handle fresh contexts returned from ConnContext
2024-06-04 21:37:18 -07:00
Marten Seemann
07acaad2f7
add context to EarlyConnection.NextConnection, handle handshake failures ( #4551 )
2024-06-04 20:51:54 -07:00
Marten Seemann
0db354456a
make Path MTU Discovery resilient to random packet loss ( #4545 )
2024-06-04 02:10:11 -07:00
Marten Seemann
950de0d8ed
Merge pull request #4534 from quic-go/prometheus
...
add some Prometheus metrics
2024-06-04 17:08:21 +08:00
Marten Seemann
a620f1a214
metrics: save the reason a connection was closed
2024-06-04 13:24:25 +08:00
Marten Seemann
685c1322fd
metrics: measure the handshake duration
2024-06-04 13:24:25 +08:00
Marten Seemann
2968b93ea8
metrics: add a very basic ConnectionTracer
2024-06-04 13:24:24 +08:00
Marten Seemann
a555a14ae3
metrics: make the Prometheus registerer configurable
2024-06-04 13:19:30 +08:00
Marten Seemann
e66a925d64
metrics: add a basic setup, collect metrics for the server
2024-06-04 13:19:29 +08:00
Marten Seemann
459a6f3df9
fix the server's 0-RTT rejection logic when using GetConfigForClient ( #4550 )
2024-06-03 03:42:58 -07:00
Marten Seemann
dea2eafd1d
remove unused function parameter from qtls.SetupConfigForServer ( #4549 )
2024-06-03 00:12:12 -07:00
Marten Seemann
73a5370f3c
use a chan instead of a context to track handshake completion ( #4547 )
...
No functional change expected.
2024-06-02 22:47:25 -07:00
Marten Seemann
5446b5f912
http3: use the connection, not the stream context, on the server side ( #4510 )
2024-06-03 10:23:35 +08:00
Marten Seemann
375fc59084
remove unused SetMax method on the mtuDiscoverer ( #4543 )
2024-05-31 22:00:15 -07:00
Marten Seemann
82a3847439
http3: fix another flaky Extended CONNECT test ( #4539 )
2024-05-28 22:57:43 -07:00
Marten Seemann
8a3d90fc22
ci: set timeout for jobs ( #4538 )
2024-05-28 22:08:50 -07:00
Marten Seemann
723a188dde
remove unneeded stream context cancellation on shutdown ( #4535 )
...
The connection already cancels the base context, so we don't need to manually
cancel the stream context (which is derived from the connection context).
2024-05-27 21:43:27 -07:00
Marten Seemann
ae90c76822
http3: fix flaky Extended CONNECT unit test ( #4537 )
2024-05-27 21:43:01 -07:00
Marten Seemann
21b643eeea
deprecate the ConnectionTracingKey ( #4532 )
...
Applications can set their own tracing key using Transport.ConnContext.
2024-05-27 19:24:10 -07:00
Marten Seemann
0d1e27d77c
introduce Transport.ConnContext, use client's context on the connection ( #4507 )
...
* introduce Transport.ConnContext, use client's context on the connection
* panic if ConnContext returns nil
2024-05-26 21:30:19 -07:00
George
e2fbf3cdcd
http3: fix memory leak in stream state tracking ( #4523 )
...
* fix(http3): handle streamStateSendAndReceiveClosed in onStreamStateChange
Signed-off-by: George MacRorie <me@georgemac.com >
* refactor(http3): adjust stateTrackingStream to operate over streamClearer and errorSetter
* test(http3): remove duplicate test case
* chore(http3): rename test spies to be mocks
---------
Signed-off-by: George MacRorie <me@georgemac.com >
v0.44.0
2024-05-18 19:15:32 -07:00
Z.SX
f3cecf952e
http3: rename ListenAndServe to ListenAndServeTLS ( #4522 )
...
* http3: rename ListenAndServe to ListenAndServeTLS
* http3: fix golanglint
---------
Co-authored-by: Shunxin Zhang <shunxin.zhang@shopee.com >
2024-05-14 18:32:56 -07:00
Marten Seemann
e41d1f9dd7
logging / qlog: add support for DPLPMTUD ( #4517 )
...
* logging / qlog: add support for DPLPMTUD
* improve the MTU discovery integration test
2024-05-14 02:37:54 -07:00
Marten Seemann
056a332ac4
retry the PMTUD integration test up to 3 times ( #4519 )
...
This test is very sensitive to packet loss, as the loss of a single Path MTU
probe packet makes DPLPMTUD clip the assumed MTU at that value.
2024-05-14 02:14:02 -07:00
Marten Seemann
2557fb98b2
initialize the MTU discoverer when processing the transport parameters ( #4514 )
...
On the client side, we always use the configured packet size. This comes
with the risk of failing the handshake if the path doesn't support this
MTU. If the server sends a max_udp_payload_size that's smaller than this
size, we can safely ignore this: Obviously, the server still processed
the (fully padded) Initial packet, despite claiming that it wouldn't do
so.
On the server side, there's no downside to using 1200 bytes until we
received the client's transport parameters:
* If the first packet didn't contain the entire ClientHello, all we can
do is ACK that packet. We don't need a lot of bytes for that.
* If it did, we will have processed the transport parameters and
initialized the MTU discoverer.
2024-05-13 22:50:26 -07:00
Marten Seemann
508b402a19
update all golang.org/x dependencies ( #4506 )
2024-05-10 20:02:07 -07:00
Marten Seemann
f3d76b39bf
make the initial packet size configurable ( #4503 )
2024-05-08 21:41:08 -07:00
Marten Seemann
e90a0d4e03
increase initial packet size to 1280 bytes (for both IPv4 and IPv6) ( #4500 )
2024-05-08 20:55:19 -07:00