Commit Graph

4248 Commits

Author SHA1 Message Date
Marten Seemann
572ef44cf2 use GoJay to marshal JSON
GoJay doesn't use reflection to marshal JSON. This allows dramatically
faster encoding, as well as saving a large number of allocations.
2020-02-12 10:35:54 +07:00
Marten Seemann
2e59206a1e implement marshalling of packet headers 2020-02-12 10:35:19 +07:00
Marten Seemann
60183f4fec implement marshalling of frames 2020-02-12 10:35:19 +07:00
Marten Seemann
df5890ffab Merge pull request #2340 from lucas-clemente/rtt-session-ticket-server
save the RTT in the session ticket and use it (on the server side)
2020-02-12 10:32:30 +07:00
Marten Seemann
cab9caaed5 Merge pull request #2342 from lucas-clemente/example-client-keylog
add a command line option to the example client to export a key log file
2020-02-12 00:49:48 +07:00
Marten Seemann
d498fc9463 Merge pull request #2343 from lucas-clemente/interop-key-log-file
use the SSLKEYLOGFILE env variable in the interop client and server
2020-02-12 00:49:24 +07:00
Marten Seemann
efde8443f1 use the SSLKEYLOGFILE env variable in the interop client and server 2020-02-11 17:37:16 +07:00
Marten Seemann
b412ed6d30 add a command line option to the example client to export a key log file 2020-02-11 13:22:11 +07:00
Marten Seemann
9ac52c5a0c Merge pull request #2339 from lucas-clemente/config-clone
add a Clone() function to the Config
2020-02-11 13:14:44 +07:00
Marten Seemann
72c2f9464c add a Clone() function to the Config 2020-02-11 13:03:19 +07:00
Marten Seemann
85abf5fc53 save the RTT in the session ticket and use it when accepting 0-RTT 2020-02-10 17:42:10 +07:00
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
phuslu
6de97fce55 Add LocalAddrContextKey/ServerContextKey to http3 request context 2020-02-01 20:36:13 +08: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