Commit Graph

5442 Commits

Author SHA1 Message Date
Marten Seemann
e9ea484aa4 Merge pull request #3067 from rs/packetinfo
Use the correct source IP when binding multiple IPs
2021-03-16 10:05:17 +08:00
Olivier Poitrey
eb6bdfdfc1 Use the correct source IP when binding multiple IPs
When the server is listening on multiple interfaces or interfaces with
multiple IPs, the outgoing datagrams are sometime delivered with the
wrong source IP address.

In order to fix that, each quic connection needs to extract the
destination IP (and optionally interface id) of the received datagrams,
and set it as source IP (and interface) on the sent datagrams.

On most platforms, this can be done using ancillary data with recvmsg()
and sendmsg(). Some of the machinery for this is already there for ECN,
this change extends it to read the destination IP info and write it to
the outgoing packets.

Fix #1736
2021-03-16 00:50:05 +01:00
Marten Seemann
d468a79339 fix qlogging of version mismatches on the connection_closed event 2021-03-15 13:36:49 +08:00
Marten Seemann
5208845191 introduce a logging.CloseReason for version negotiation errors 2021-03-15 13:36:45 +08:00
Marten Seemann
29f02e1bda set the Content-Length for HTTP/3 responses 2021-03-15 13:09:09 +08:00
Marten Seemann
7cd4dea764 update the flow control windows of streams opened in 0-RTT
The server might have increased the initial flow control window. We need
to make sure to inform all streams opened during during the 0-RTT
period.
2021-03-12 15:09:50 +08:00
Marten Seemann
c27f5a55b3 rename sendStream.handleMaxStreamDataFrame to updateSendWindow 2021-03-12 13:36:23 +08:00
Marten Seemann
48a457601d fix documentation for baseFlowController.UpdateSendWindow 2021-03-11 21:59:53 +08:00
Marten Seemann
3588cddd43 allow 0-RTT resumption if the server's stream limit was increased 2021-03-11 21:37:40 +08:00
Marten Seemann
3bce408c8d Merge pull request #3074 from lucas-clemente/fix-0rtt-queue-race
fix race condition when receiving 0-RTT packets
2021-03-11 21:36:04 +08:00
Marten Seemann
2bd316b89e store 0-RTT queues in the packet handler map
This prevents a race condition between receiving of 0-RTT packets and
the creation of new session.
2021-03-11 21:16:50 +08:00
Marten Seemann
ecc86aa1ab refactor session creation in the server 2021-03-11 21:05:41 +08:00
Marten Seemann
bab0384444 use a tracer to check for received 0-RTT packet in 0-RTT integration tests 2021-03-11 21:05:41 +08:00
Marten Seemann
7042ef8f8f simplify 0-RTT integration tests 2021-03-11 21:05:41 +08:00
Marten Seemann
7676e455c5 add a function to tell if a packet is a 0-RTT packet 2021-03-11 21:05:41 +08:00
Marten Seemann
b2c2e4940f Merge pull request #3066 from lucas-clemente/zero-rtt-rejection
require the application to handle 0-RTT rejection
2021-03-11 21:04:14 +08:00
Marten Seemann
d970a1027d only apply server's transport parameters after handshake completion
On the client side, 0-RTT packets have to be sent using the old
transport parameters. We're only allowed to use the updated values for
1-RTT packets.
2021-03-11 18:58:22 +08:00
Marten Seemann
a15cfd6871 make the initial connection flow control window configurable 2021-03-10 15:04:38 +08:00
Marten Seemann
d9434f523e make the initial stream flow control window configurable 2021-03-10 14:58:15 +08:00
Marten Seemann
9dcb56b76f Merge pull request #2893 from lucas-clemente/clean-up-workflow
clean up the GitHub Action unit test workflow
2021-03-10 12:32:37 +08:00
Marten Seemann
f7bb5c9551 Merge pull request #3059 from lucas-clemente/github-actions-debug
add a debug option to the GitHub Action integrationtest workflow
2021-03-10 12:31:23 +08:00
Marten Seemann
af284030e9 clean up the GitHub Action unit test workflow 2021-03-10 12:23:03 +08:00
Marten Seemann
20018c836b Merge pull request #3081 from mengelbart/datagram-queue-deadlock
add an internal queue to signal that a datagram frame has been dequeued
2021-03-10 12:21:06 +08:00
Marten Seemann
12a37cdcaf add a debug option to the GitHub Action integrationtest workflow 2021-03-10 12:11:13 +08:00
Marten Seemann
db9807d779 Merge pull request #2966 from lucas-clemente/increase-max-datagram-frame-size
increase the maximum size of DATAGRAM frames
2021-03-10 12:08:00 +08:00
Mathis Engelbart
bcc7baf111 add an internal queue to signal that a datagram frame has been dequeued 2021-03-09 18:53:20 +01:00
Marten Seemann
f8313d868f return an Err0RTTRejected when the server rejects a 0-RTT connection 2021-03-09 18:02:12 +08:00
Marten Seemann
97ab014479 don't retransmit 0-RTT packets when 0-RTT is rejected 2021-03-09 17:59:49 +08:00
Marten Seemann
8b63039664 add a function to reset the streams map after 0-RTT rejection 2021-03-09 17:59:49 +08:00
Marten Seemann
a04a0072fb add a function to reset the connection flow controller 2021-03-09 17:59:48 +08:00
Marten Seemann
c741b6fc09 drop STREAM and *_BLOCKED frames from queue when 0-RTT is rejected 2021-03-09 17:59:11 +08:00
Marten Seemann
eb3e100e80 Merge pull request #3079 from lucas-clemente/remove-broken-conn-id-len-0rtt-test
remove non-functioning 0-RTT test with different conn ID lengths
2021-03-09 17:44:40 +08:00
Marten Seemann
6440908f53 remove non-functioning 0-RTT test with different conn ID lengths 2021-03-09 17:27:10 +08:00
Marten Seemann
5a3fd58186 Merge pull request #3073 from lucas-clemente/reject-0rtt-before-transport-parameters
reject 0-RTT before handling transport parameters
2021-03-09 16:53:06 +08:00
Marten Seemann
bab88b4727 reject 0-RTT before handling transport parameters 2021-03-09 16:36:33 +08:00
Marten Seemann
3b6f118fda Merge pull request #3078 from lucas-clemente/remove-structs-equal
remove stray struct equality check
2021-03-09 16:30:30 +08:00
Marten Seemann
1113892489 remove stray struct equality check
This check was moved to qtls.
2021-03-09 16:17:41 +08:00
Marten Seemann
506281b904 Merge pull request #3058 from lucas-clemente/fix-0rtt-conn-id-issuing
fix issuing of connection IDs when dialing a 0-RTT connections
2021-03-09 16:11:17 +08:00
Marten Seemann
13ad4ce48b Merge pull request #3070 from lucas-clemente/fix-0rtt-rejected-on-hrr
only call the Rejected0RTT() callback on HRR when 0-RTT was tried
2021-03-09 16:08:57 +08:00
Marten Seemann
c802ebe026 Merge pull request #3060 from lucas-clemente/check-active-conn-id-limit-for-0rtt
only accept 0-RTT it the active_connection_id_limit didn't change
2021-03-09 15:58:53 +08:00
Marten Seemann
33037be2ed only call the Rejected0RTT() callback on HRR when 0-RTT was tried 2021-03-09 15:57:26 +08:00
Marten Seemann
f58b4560a3 Merge pull request #3072 from lucas-clemente/max-streams-frame-error
remove unused error return value from HandleMaxStreamsFrame
2021-03-09 15:45:32 +08:00
Marten Seemann
547de4cb51 Merge pull request #3068 from lucas-clemente/fix-flaky-accept-queue-test
fix flaky accept queue integration test
2021-03-09 15:44:33 +08:00
Marten Seemann
bd8e2412d9 Merge pull request #3069 from lucas-clemente/run-go-mod-tidy
use Go 1.16 in the linting workflow, run go mod tidy using Go 1.16
2021-03-09 15:43:42 +08:00
Marten Seemann
b8358dc2bb Merge pull request #3063 from lucas-clemente/dont-reset-qpack-streams
don't reset the QPACK encoder / decoder streams
2021-03-08 18:08:02 +08:00
Marten Seemann
8a0b1dd78d remove unused error return value from HandleMaxStreamsFrame 2021-03-07 12:36:50 +08:00
Marten Seemann
be7fe3306c Merge pull request #3071 from VinozzZ/master
remove incorrect logging for client side retry packet
2021-03-05 23:47:29 +08:00
Yingrong Zhao
4e1cca5d76 remove incorrect logging for client side retry packet 2021-03-05 09:49:56 -05:00
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
Marten Seemann
67503f9d41 fix flaky accept queue integration test 2021-03-05 11:55:45 +08:00