Commit Graph

4186 Commits

Author SHA1 Message Date
Marten Seemann
8cde4ab638 refactor how session tickets are sent
Previously, RunHandshake() would send the session tickets. Now, the
session initiates the sending of the session ticket. This simplifies the
setup a bit, and it will make it possible to include the RTT estimate in
the session ticket without accessing the RTTStats concurrently.
2020-02-10 17:42:09 +07:00
Marten Seemann
3e32a693ad introduce a marshaling format for data saved in the session ticket 2020-02-10 18:02:45 +08:00
Marten Seemann
a8fc893ec4 Merge pull request #2338 from lucas-clemente/delete-0rtt-session-tickets
delete session tickets after using them for 0-RTT
2020-02-10 12:01:42 +08:00
Marten Seemann
362192862a Merge pull request #2334 from lucas-clemente/rtt-session-ticket
save the RTT along the session ticket and use it on resumed connections
2020-02-09 18:19:56 +01:00
Marten Seemann
70d8c0fbef delete session tickets after using them for 0-RTT 2020-02-09 18:40:08 +08:00
Marten Seemann
182a25d2b9 don't use ASN.1 for marshalling data for the session ticket 2020-02-08 21:42:11 +01:00
Marten Seemann
69ab66ba82 save the RTT along the session ticket and use it on resumed connections 2020-02-08 21:42:11 +01:00
Marten Seemann
8ad95ce2d3 Merge pull request #2299 from lucas-clemente/server-run-loop
introduce a run loop in the server
2020-02-04 07:56:36 +01:00
Marten Seemann
93693349f3 collapse packetHandlerManager.Add and AddIfNotTaken into one function 2020-02-03 17:34:07 +01:00
Marten Seemann
634169b061 don't return a stateless reset token when adding a new connection ID
Both server and client didn't make use of the token. It was only used by
the connIDGenerator.
2020-02-03 17:31:47 +01:00
Marten Seemann
44c1092ed7 send Retry, Version Negotiation and SERVER_BUSY packets asynchronously
Now that there's only a single run loop in the server, we should make
sure to process incoming packets as quickly as possible. This especially
means not blocking on conn.Write().
2020-02-03 17:31:47 +01:00
Marten Seemann
7f0dc56d70 introduce a server run loop for handling packets 2020-02-03 17:31:47 +01:00
Marten Seemann
cf71bdd05a use a MockPacketHandlerManager in all server tests 2020-02-03 17:31:47 +01:00
Marten Seemann
a576f26c83 Merge pull request #2333 from lucas-clemente/configure-cipher-suites
make the TLS cipher suites configurable
2020-02-03 17:22:02 +01:00
Marten Seemann
f91dfda8c3 make the TLS cipher suites configurable 2020-02-01 15:58:40 +07:00
Marten Seemann
54b38cac0f Merge pull request #2331 from lucas-clemente/chacha20-bug-workaround
add a workaround for the ChaCha20 bug
2020-01-31 15:32:28 +07:00
Marten Seemann
5893e1ec28 add a workaround for the ChaCha20 bug 2020-01-31 12:19:58 +07:00
Marten Seemann
894530336c Merge pull request #2330 from lucas-clemente/reject-0rtt-on-alpn-mismatch
reject 0-RTT on ALPN mismatch
2020-01-31 11:24:49 +07:00
Marten Seemann
8476b9c7e6 reject 0-RTT when the ALPN changed 2020-01-30 13:12:42 +07:00
Marten Seemann
5ee7498595 fix the 0-RTT rejection integration test 2020-01-30 09:47:49 +07:00
Marten Seemann
ae10a87c6a Merge pull request #2310 from lucas-clemente/zero-rtt-rejection
handle rejection of 0-RTT, expose 0-RTT information in the ConnectionState
2020-01-30 09:31:22 +07:00
Marten Seemann
78fdb9256b add test checking that 0-RTT is rejected if transport parameters changed 2020-01-30 09:21:10 +07:00
Marten Seemann
539097fc6e return a quic.ConnectionState from Session.ConnectionState() 2020-01-30 09:21:09 +07:00
Marten Seemann
d7948d627a drop 0-RTT keys when the server rejects 0-RTT 2020-01-30 09:12:31 +07:00
Marten Seemann
2473eb0895 queue 0-RTT packets for retransmission when 0-RTT is rejected 2020-01-30 09:11:44 +07:00
Marten Seemann
bc82887eff Merge pull request #2320 from lucas-clemente/http3-client-0rtt
add 0-RTT support for HTTP/3
2020-01-29 12:38:55 +07:00
Marten Seemann
f782df0fa4 Merge pull request #2328 from lucas-clemente/window-update-queue-remove-closed-streams
remove inactive streams from the window update queue
2020-01-29 12:26:04 +07:00
Marten Seemann
950f278362 accept 0-RTT request in the http3 server 2020-01-29 11:34:08 +07:00
Marten Seemann
91543322f6 define a new Method for 0-RTT GET requests on the http.Request 2020-01-29 11:34:06 +07:00
Marten Seemann
af1e8f4c78 handle request cancelations while waiting for handshake completion 2020-01-29 11:25:29 +07:00
Marten Seemann
639925628d Merge pull request #2315 from lucas-clemente/http3-client-0rtt-control-stream
use 0-RTT to open the H3 client's control stream
2020-01-29 11:23:08 +07:00
Marten Seemann
ddc886be7a remove inactive streams from the window update queue 2020-01-29 11:14:29 +07:00
Marten Seemann
1372e5dd5e use 0-RTT to open the H3 client's control stream 2020-01-29 11:06:44 +07:00
Marten Seemann
63c9272bf4 Merge pull request #2312 from lucas-clemente/http3-server-use-0.5-rtt-data
use 0.5-RTT data to open the control stream in the http3 server
2020-01-29 11:05:06 +07:00
Marten Seemann
cc70fc16bb Merge pull request #2322 from lucas-clemente/update-ginkgo
update Ginkgo and Gomega
2020-01-29 11:04:52 +07:00
Marten Seemann
bf2602c652 update Ginkgo and Gomega 2020-01-29 10:41:41 +07:00
Marten Seemann
bc25840519 use 0.5-RTT data to open the control stream in the http3 server 2020-01-29 10:40:06 +07:00
Marten Seemann
2bac900862 Merge pull request #2319 from lucas-clemente/fix-stream-open-request-cancelation
use the HTTP request context when opening the request stream
2020-01-29 00:08:43 +07:00
Marten Seemann
84b0a01a2e Merge pull request #2325 from lucas-clemente/fix-readme-install
remove outdated install instructions in README
2020-01-29 00:02:50 +07:00
Marten Seemann
e8cffacc77 Merge pull request #2321 from lucas-clemente/update-mockgen
update gomock to v1.4.0, simplify mock generation
2020-01-29 00:01:00 +07:00
Marten Seemann
c876e878de Merge pull request #2314 from lucas-clemente/fix-listen-early-race
fix race condition in ListenEarly
2020-01-29 00:00:21 +07:00
Marten Seemann
56e6f1adca remove outdated install instructions in README 2020-01-28 14:45:52 +07:00
Luke Tucker
6407f5bf68 Fix keepalive ping (#2316)
The firstAckElicitingPacketAfterIdleSendTime condition was inverted
in a recent PR, maybe just a typo.  This was causing only one ping
to be sent during periods of no activity.  The ack from the first
keepalive ping causes firstAckElicitingPacketAfterIdleSentTime
to be set to zero.  If there is no further activity, it will remain
zero and prevent further keepalive pings.
2020-01-27 11:13:54 +07:00
Marten Seemann
9c1aeee0ec Merge pull request #2308 from lucas-clemente/session-remove-close
remove Session.Close()
2020-01-26 18:01:34 +07:00
Marten Seemann
a93e544c94 remove Session.Close()
Session.Close() sends a transport-level error code. Applications should
not be able to call this function, but use CloseWithError() instead.
2020-01-26 17:41:53 +07:00
Marten Seemann
a5120204cc use H3_NO_ERROR when closing the http3.Client 2020-01-26 17:37:22 +07:00
Marten Seemann
4fa5cfdca9 simplify generation of mocks for internal types 2020-01-26 13:24:35 +07:00
Marten Seemann
c809166cab update gomock, simplify script for generation mocks of private types 2020-01-26 12:53:41 +07:00
Marten Seemann
d2209ba553 use the HTTP request context when opening the request stream 2020-01-26 11:33:22 +07:00
Marten Seemann
6d055948e6 fix race condition in ListenEarly 2020-01-25 19:26:15 +07:00