Marten Seemann
3a41dd00d3
use Go 1.16 in the linting workflow, run go mod tidy using Go 1.16
2021-03-05 13:28:37 +08:00
Kévin Dunglas
3b916f2e80
allow sending 1xx responses ( #3047 )
...
Currently, it's not possible to send informational responses such as 103 Early Hints or 102 Processing.
This patch allows calling WriteHeader() multiple times in order to send informational responses before the final one.
It follows the patch for HTTP/1 (golang/go#42597 ) and HTTP/2 (golang/net#96 ).
In conformance with RFC 8297, if the status code is 103 the current content of the header map is also sent. Its content is not removed after the call to WriteHeader() because the headers must also be included in the final response.
The Chrome and Fastly teams are starting a large-scale experiment to measure the real-life impact of the 103 status code.
Using Early Hints is proposed as a (partial) alternative to Server Push, which are going to be removed from Chrome: https://groups.google.com/a/chromium.org/g/blink-dev/c/K3rYLvmQUBY/m/21anpFhxAQAJ
Being able to send this status code from servers implemented using Go would help to see if implementing it in browsers is worth it.
2021-03-05 10:03:31 +08:00
Marten Seemann
f513437854
Merge pull request #3062 from lucas-clemente/fix-retry-draft-34
...
fix retry key and nonce for draft-34
2021-03-04 11:13:34 +08:00
Marten Seemann
048543bd50
set the TIMESCALE_FACTOR for integration tests on CircleCI and GitHub Actions
2021-03-04 10:45:27 +08:00
Marten Seemann
543d144690
Merge pull request #3028 from lucas-clemente/dplpmtud
...
implement DPLPMTUD
2021-03-03 23:04:22 +08:00
Marten Seemann
bd172b2a5a
fix retry key and nonce for draft-34
2021-03-03 23:01:42 +08:00
Marten Seemann
765d26f132
don't reduce the congestion window when a path MTU probe packet is lost
2021-03-03 12:00:52 +08:00
Marten Seemann
ac87292e87
start path MTU discovery when the handshake completes
2021-03-03 12:00:51 +08:00
Marten Seemann
cb1eab22de
add a quic.Config option to disable Path MTU discovery
2021-03-03 12:00:14 +08:00
Marten Seemann
142071253d
add a method to update the packer's max packet size
2021-03-03 12:00:14 +08:00
Marten Seemann
c6ae91a8cf
introduce a mtuDiscoverer interface
2021-03-03 12:00:14 +08:00
Marten Seemann
04642c9e4d
add a MTU discoverer that performs a binary search to determine the MTU
2021-03-03 12:00:14 +08:00
Marten Seemann
82ac6dcf6d
rename MaxReceivePacketSize to MaxPacketBufferSize
...
We use the same buffer size for sending and receiving packets.
2021-03-03 12:00:14 +08:00
Marten Seemann
fb5a45ac53
implement a function to pack MTU probe packets
2021-03-03 12:00:14 +08:00
Marten Seemann
91a314258d
use the actual maximum packet size in the pacer
2021-03-03 12:00:14 +08:00
Marten Seemann
dd8b21f264
use the actual maximum packet size in the Reno congestion controller
2021-03-03 12:00:14 +08:00
Marten Seemann
8895a79e30
initialize the slow start threshold to infinity
2021-03-03 12:00:14 +08:00
Marten Seemann
eea0b1eacd
rename MaxPacketSizeIPv{4,6} to InitialPacketSizeIPv{4,6}
2021-03-03 12:00:14 +08:00
Marten Seemann
2c45f2b11d
Merge pull request #3041 from lucas-clemente/send-immediately-before-handshake-completion
...
only read multiple packets at a time after handshake completion
2021-03-03 11:55:54 +08:00
Marten Seemann
aa012eca9a
Merge pull request #3056 from lucas-clemente/fix-0rtt-key-export
...
update qtls to a version that doesn't exports 0-RTT when it's rejected
2021-03-03 11:42:34 +08:00
Marten Seemann
53270dde9e
only read multiple packets at a time after handshake completion
...
It's more important that acknowledge packets in a timely manner before
handshake completion. On the server side, we should send out the HANDSHAKE_DONE
frame as soon as possible.
2021-03-03 11:33:00 +08:00
Marten Seemann
575cd3ceb6
update qtls to a version that doesn't export 0-RTT when it's rejected
2021-03-03 11:27:34 +08:00
Marten Seemann
74569a514b
Merge pull request #3040 from lucas-clemente/improve-handshake-tests
...
make the certificate verificiation integration tests more explicit
2021-03-03 00:27:46 +08:00
Marten Seemann
ac16ee565b
Merge pull request #3049 from lucas-clemente/mockgen-source-mode
...
update gomock to v1.5.0, use mockgen source mode
2021-03-02 21:27:48 +08:00
Marten Seemann
1c9977d8d6
Merge pull request #3054 from lucas-clemente/trace-dropped-0rtt-keys
...
trace dropping of 0-RTT keys
2021-03-02 21:27:32 +08:00
Marten Seemann
40bc7362ef
Merge pull request #3042 from lucas-clemente/improve-timeout-test
...
improve timeout measurement in the timeout test
2021-03-02 21:27:02 +08:00
Marten Seemann
ca18ba6f81
Merge pull request #3052 from lucas-clemente/randomized-packet-receive-test
...
add a randomized test for the received_packet_history
2021-03-02 21:26:41 +08:00
Marten Seemann
cb7aa88c76
Merge pull request #3055 from lucas-clemente/fix-max-receive-window-doc
...
fix documentation of default values for MaxReceive{Stream, Connection}FlowControlWindow
2021-03-02 21:26:24 +08:00
Marten Seemann
3e8e6b2e36
fix documentation of the default MaxReceiveConnectionFlowControlWindow
2021-03-01 11:33:42 +08:00
Marten Seemann
be4dc49114
fix documentation of the default MaxReceiveStreamFlowControlWindow
2021-03-01 11:33:15 +08:00
Marten Seemann
110f949441
trace dropping of 0-RTT keys
2021-03-01 10:37:31 +08:00
Marten Seemann
ab46df5071
fix logging of dropped 0-RTT keys
...
Client and server only possess write or read 0-RTT keys, respectively.
We should therefore only emit a single event when those are dropped.
2021-03-01 10:30:59 +08:00
Marten Seemann
75f49662c0
add a randomized test for the received_packet_history
2021-02-24 13:37:50 +08:00
Marten Seemann
9b627ac93d
Merge pull request #3051 from q191201771/merge-packet-number-ranges
...
refactor merge packet number ranges
2021-02-24 13:37:11 +08:00
q191201771
de0a6d4bbe
refactor merge packet number ranges
2021-02-24 11:54:33 +08:00
Marten Seemann
e3c1a67708
add draft-34 to support versions in README
2021-02-20 11:19:29 +08:00
Marten Seemann
efe6d02bef
use mockgen source mode
2021-02-20 09:59:44 +08:00
Marten Seemann
383f1a6e89
update gomock to v1.5.0
2021-02-20 09:33:43 +08:00
Marten Seemann
ff2e7ba635
update README to reflect dropped Go 1.14 support
2021-02-20 09:26:49 +08:00
Marten Seemann
972a08c40d
Merge pull request #3048 from q191201771/redundant-nil-check
...
remove redundant nil-check in the packet packer
2021-02-19 15:42:44 +08:00
q191201771
d16f36a1e3
the pointer is always not nil, no need to check it
2021-02-18 20:05:16 +08:00
Marten Seemann
bfad41165c
Merge pull request #3046 from lucas-clemente/avoid-rand-source
...
avoid using rand.Source
2021-02-18 11:13:47 +08:00
Marten Seemann
11c5c548b6
improve timeout measurement in the timeout test
...
When not sending any packets, the idle timeout starts when receiving the
HANDSHAKE_DONE frame (on the client side), not when the handshake completes.
2021-02-18 09:59:04 +08:00
Marten Seemann
7ee88def4a
make it possible to use a custom tracer and the default tracer in tests
2021-02-18 09:59:04 +08:00
Marten Seemann
b94a4440cc
simplify connection tracer creation in integration tests
2021-02-18 09:59:04 +08:00
Marten Seemann
03fe636711
reduce memory footprint of the connIDManager
2021-02-18 09:58:34 +08:00
Marten Seemann
115fc28bbe
avoid initializing a math/rand.Rand in the connIDManager
...
math/rand.Source uses a lot of memory, as it keeps an array of 607
int64s as internal state.
2021-02-18 09:58:34 +08:00
Marten Seemann
3c0726e132
move the random number generator to the utils package
2021-02-18 09:58:34 +08:00
Marten Seemann
c72f05aa41
Merge pull request #3045 from lucas-clemente/go116
...
update Go to 1.16, drop support for 1.14
2021-02-18 09:58:06 +08:00
Marten Seemann
62a906de3c
update Go to 1.16, drop support for 1.14
2021-02-17 12:17:46 +08:00