Commit Graph

5420 Commits

Author SHA1 Message Date
Marten Seemann
7feda789d2 initialize the congestion controller with the actual max datagram size 2021-03-20 14:02:28 +08:00
Marten Seemann
81d16a9903 Merge pull request #3098 from lucas-clemente/zero-rtt-conn-id-len-test
add a 0-RTT test with different connecton ID lengths
2021-03-19 18:52:07 +08:00
Marten Seemann
f25ec1b62c add a 0-RTT test case using non-zero length connection IDs 2021-03-19 18:23:15 +08:00
Marten Seemann
749bbe4187 Merge pull request #3099 from lucas-clemente/fix-focus-detection-in-pre-commit
only run Ginkgo focus detection in staged files in pre-commit hook
2021-03-19 18:13:50 +08:00
Marten Seemann
28ba9c4f16 Merge pull request #3095 from lucas-clemente/fix-integration-test-debug-flag
fix evalution of DEBUG flag in integration test workflow
2021-03-19 18:13:35 +08:00
Marten Seemann
33a47fe661 remove superfluous function parameter in the 0-RTT integration tests 2021-03-19 18:09:36 +08:00
Marten Seemann
3b20133e84 Merge pull request #3096 from lucas-clemente/allow-zero-rtt-on-initial-window-increase
allow 0-RTT when flow control windows are increased
2021-03-19 17:52:52 +08:00
Marten Seemann
0b547e9657 Merge pull request #3097 from lucas-clemente/improve-0rtt-rejection-test
improve the 0-RTT rejection integration test
2021-03-19 17:52:22 +08:00
Marten Seemann
64f015fab4 only run Ginkgo focus detection in staged files in pre-commit hook
If a change is not staged (and therefore won't be committed), we don't care.
2021-03-19 14:46:21 +08:00
Marten Seemann
cc59aa0d2e fix evalution of DEBUG flag in integration test workflow 2021-03-19 10:49:45 +08:00
Marten Seemann
d9c16ea5f1 improve the 0-RTT rejection integration test 2021-03-17 19:12:17 +08:00
Marten Seemann
31ac5ca60d allow 0-RTT when the server's connection receive limit is increased 2021-03-17 18:53:54 +08:00
Marten Seemann
6c3876d6b3 allow 0-RTT when the server's stream receive limit is increased 2021-03-17 18:46:11 +08:00
Marten Seemann
522cad0ba8 Merge pull request #3089 from lucas-clemente/rename-flow-control-configs
rename config values for flow control limits
2021-03-17 17:49:18 +08:00
Marten Seemann
e5a83e1409 Merge pull request #3086 from lucas-clemente/accept-0rtt-on-stream-limit-increase
allow 0-RTT resumption if the server's stream limit was increased
2021-03-16 23:15:55 +08:00
Marten Seemann
7ea53e6c2c rename the Config values for Max{Stream, Connection}ReceiveWindow 2021-03-16 23:15:18 +08:00
Marten Seemann
354bbb0e2e rename the Config values for Initial{Stream, Connection}ReceiveWindow 2021-03-16 23:15:18 +08:00
Marten Seemann
f51eff48e9 Merge pull request #3093 from lucas-clemente/improve-packet-info
cache the serialized OOB in the conn, not in the packet info
2021-03-16 22:18:25 +08:00
Marten Seemann
74730c0083 Merge pull request #3094 from lucas-clemente/pktinfo-codepoint
use code points from x/sys/unix for PKTINFO syscalls
2021-03-16 22:18:02 +08:00
Marten Seemann
5073e300a6 Merge pull request #3092 from lucas-clemente/version-negotiation-failure-logging
make it possible to detect version negotiation failures in logging, fix qlogging of those
2021-03-16 22:17:34 +08:00
Marten Seemann
59eb3ed2fb Merge pull request #3083 from lucas-clemente/configure-initial-flow-control-window
make the initial stream / connection flow control windows configurable
2021-03-16 22:17:08 +08:00
Marten Seemann
1d2756f9f7 Merge pull request #3085 from lucas-clemente/client-hold-tp-until-handshake-completion
only apply server's transport parameters after handshake completion
2021-03-16 22:16:46 +08:00
Marten Seemann
213304b597 Merge pull request #3087 from lucas-clemente/fix-update-send-window-doc
fix documentation for baseFlowController.UpdateSendWindow
2021-03-16 22:16:23 +08:00
Marten Seemann
8f42b1e45d Merge pull request #3091 from lucas-clemente/http3-response-content-length
set the Content-Length for HTTP/3 responses
2021-03-16 22:16:09 +08:00
Marten Seemann
6102a9b308 Merge pull request #3088 from lucas-clemente/update-flow-control-for-0rtt-streams
update the flow control windows of streams opened in 0-RTT
2021-03-16 22:15:53 +08:00
Marten Seemann
4f94be16ee use code points from x/sys/unix 2021-03-16 14:43:35 +08:00
Marten Seemann
162cb16b31 cache the serialized OOB in the conn, not in the packet info
We're allocating a lot of packetInfo structs during the lifetime of a
connection. It's better to keep that struct as small as possible.
2021-03-16 14:04:15 +08:00
Marten Seemann
1186a3ed79 fix file name for the oobConn tests 2021-03-16 13:52:46 +08:00
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