Commit Graph

5037 Commits

Author SHA1 Message Date
Marten Seemann
95334202c5 fix decoding of packet numbers in different packet number spaces
When QUIC abandoned the "stream 0" design, it introduced separate
packet number spaces for packets with different encryption levels.
Packet number compression now also works per packet number space.
The current code doesn't lead to any problems if the peer starts sending
with packet number 0, as we only exchange a few packets in the Initial
and the Handshake packet number space and there's nothing to compress.
It might lead to problems if the peer starts with a large packet number
in one space (which is allowed by the spec), and then starts with a
small packet number in another packet number space.
2020-12-03 23:35:27 +07:00
Marten Seemann
ed1956f5a9 Merge pull request #2869 from lucas-clemente/remove-unnecessary-mutex-operation
remove unnecessary mutex locking in the stream flow controller
2020-11-21 16:58:28 +07:00
Marten Seemann
655632b116 avoid duplicate mutex locking when reading data 2020-11-20 15:45:38 +07:00
Marten Seemann
5352cd509b remove unnecessary mutex locking in the stream flow controller 2020-11-20 15:29:55 +07:00
Marten Seemann
69158cf5f1 Merge pull request #2886 from lucas-clemente/fix-syscalls
only use syscalls on platforms that we're actually testing
2020-11-20 00:03:53 +07:00
Marten Seemann
a9f807c316 Merge pull request #2884 from lucas-clemente/fix-header-fuzz-header-length
only write headers with a length that fits into 2 bytes in fuzz test
2020-11-19 23:10:05 +07:00
Marten Seemann
f0aa336e09 only write headers with a length that fits into 2 bytes in fuzz test 2020-11-19 13:43:48 +07:00
Marten Seemann
631e37cc70 only use syscalls on platforms that we're actually testing 2020-11-18 19:00:07 +07:00
Marten Seemann
287a324acf Merge pull request #2882 from lucas-clemente/fix-1rtt-probe-packet-packing
fix packing of 1-RTT probe packets
2020-11-18 16:57:51 +07:00
Marten Seemann
47c3cd8bb4 send 5 kB of stream data in the handshake drop test 2020-11-17 13:34:01 +07:00
Marten Seemann
192bc8dc2a account for the size of the header when packing 1-RTT probe packets 2020-11-17 13:08:06 +07:00
Marten Seemann
ad8367cb43 Merge pull request #2876 from lucas-clemente/fix-initial-padding
use PADDING frames to pad packets
2020-11-16 15:15:39 +07:00
Marten Seemann
d1a784d092 use PADDING frames to pad Initial packets 2020-11-15 10:03:14 +07:00
Marten Seemann
2c975bca54 always use a 2-byte encoding for the packet length of Long Header packets 2020-11-14 17:39:31 +07:00
Marten Seemann
653a107606 implement a function to encode a varint using a fixed length 2020-11-14 16:08:18 +07:00
Marten Seemann
e676a83ca2 Merge pull request #2874 from lucas-clemente/fix-accept-stream-race
fix race condition when accepting streams
2020-11-13 18:33:34 +07:00
Marten Seemann
46991ae0ec add a randomized test for accepting streams 2020-11-13 18:13:03 +07:00
Marten Seemann
64daf71e3a fix race condition when stream is created while AcceptStream is waiting 2020-11-13 18:13:02 +07:00
Marten Seemann
629272c713 Merge pull request #2871 from lucas-clemente/fix-missing-tracer-check-in-session
only trace dropped 0-RTT packets when a tracer is set
2020-11-11 17:21:27 +07:00
Marten Seemann
0b8a67ef95 Merge pull request #2870 from lucas-clemente/client-test-fix-version-numbers
use consistent version numbers in client test
2020-11-11 17:19:02 +07:00
Marten Seemann
0d5de40d45 only trace dropped 0-RTT packets when a tracer is set 2020-11-11 17:13:56 +07:00
Marten Seemann
78e9a3bcad use consistent version numbers in client test 2020-11-11 16:58:23 +07:00
Marten Seemann
d0cdfc8926 Merge pull request #2865 from lucas-clemente/flow-control-replace-rwmutex
replace the RWMutex with a Mutex in the flow controller
2020-11-11 10:45:11 +07:00
Marten Seemann
0bd10a6517 Merge pull request #2864 from lucas-clemente/packet-handler-map-mutex-type
replace the RWMutex with a Mutex in the packet handler map
2020-11-11 10:44:26 +07:00
Marten Seemann
3cd8b30ea6 Merge pull request #2856 from lucas-clemente/conn-id-update-handshake-completion
wait until the handshake is complete before updating the connection ID
2020-11-10 20:52:09 +07:00
Marten Seemann
e8a9888f25 Merge pull request #2857 from lucas-clemente/fix-spa-conn-id-handling
only check the SCID for Initial packets
2020-11-10 20:51:28 +07:00
Marten Seemann
23e4d15283 Merge pull request #2861 from lucas-clemente/no-viable-path-error
add the NO_VIABLE_PATH error
2020-11-10 20:50:40 +07:00
Marten Seemann
ac06cf2504 Merge pull request #2853 from lucas-clemente/qlog-preferred-address
implement qlogging of the preferred address in the transport parameters
2020-11-10 20:50:17 +07:00
Marten Seemann
0a07b339b8 Merge pull request #2854 from lucas-clemente/http-header-set-version
explicitly set the supported versions in the HTTP/3 server test
2020-11-10 20:49:50 +07:00
Marten Seemann
59cafab0f3 Merge pull request #2862 from lucas-clemente/simplify-amplification-limit
allow an amplification factor of 3.x
2020-11-10 20:49:23 +07:00
Marten Seemann
3a06c188f6 replace the RWMutex with a Mutex in the flow controller 2020-11-07 10:12:46 +07:00
Marten Seemann
ba37b0e02b replace the RWMutex with a Mutex in the packet handler map 2020-11-06 17:09:21 +07:00
Marten Seemann
0c2f562411 allow an amplification factor of 3.x 2020-11-06 14:16:11 +07:00
Marten Seemann
96ac98a862 add the NO_VIABLE_PATH error 2020-11-06 12:35:49 +07:00
Marten Seemann
337e2171ef only check the SCID for Initial packets
There's no risk that Handshake packets could be injected by an attacker.
2020-11-02 16:24:02 +07:00
Marten Seemann
80534c0944 wait until the handshake is complete before updating the connection ID 2020-11-02 16:21:38 +07:00
Marten Seemann
676d43a5e9 remove incorrect log line about retirement of preferred address conn ID 2020-11-02 16:08:12 +07:00
Marten Seemann
656490c9b1 explicitly set the supported versions in the HTTP/3 server test 2020-11-02 12:47:40 +07:00
Marten Seemann
4372f46345 implement qlogging of the preferred address in the transport parameters 2020-11-02 12:39:48 +07:00
Marten Seemann
272229abf0 Merge pull request #2848 from lucas-clemente/http3-client-versions
only allow the HTTP/3 client to dial with a single QUIC version
2020-11-02 12:39:16 +07:00
Marten Seemann
898f484d0a only allow the HTTP/3 client to dial with a single QUIC version 2020-11-02 11:29:42 +07:00
Marten Seemann
30c91149c2 fill out the http.Response.TLS field 2020-11-02 11:29:42 +07:00
Marten Seemann
2839cbdcff make it possible to set VersionTLS to a draft version
Go doesn't allow duplicate cases in a switch statement.
2020-11-02 11:29:42 +07:00
Marten Seemann
b034f1ac7c Merge pull request #2828 from lucas-clemente/send-streams-blocked-on-max-streams
send STREAMS_BLOCKED frame when MAX_STREAMS frame allows too few streams
2020-10-30 18:58:42 +07:00
Marten Seemann
5c5e1024e7 send STREAMS_BLOCKED frame when MAX_STREAMS frame allows too few streams 2020-10-30 15:28:09 +07:00
Marten Seemann
ff639a4d81 Merge pull request #2847 from lucas-clemente/http3-server-multiple-versions
set the ALPN based on the QUIC version in the HTTP3 server
2020-10-30 15:12:36 +07:00
Marten Seemann
6d00bdff3f Merge pull request #2841 from lucas-clemente/pad-server-initials
pad datagrams containing ack-eliciting Initial packets sent by the server
2020-10-30 15:12:03 +07:00
Marten Seemann
b336504fdb Merge pull request #2827 from lucas-clemente/fix-open-stream-sync-busy-looping
fix OpenStreamSync busy looping
2020-10-30 15:11:23 +07:00
Marten Seemann
5a52902937 Merge pull request #2845 from lucas-clemente/update-qpack
update qpack to v0.2.1
2020-10-30 15:11:03 +07:00
Marten Seemann
7d5335e8d8 Merge pull request #2846 from lucas-clemente/github-actions-setup-go
use the current version of setup-go on GitHub Actions
2020-10-30 15:10:41 +07:00