Commit Graph

3628 Commits

Author SHA1 Message Date
Marten Seemann
299da56aef check if a frame is allowed at the encryption level it was sent with 2019-06-29 12:32:19 +07:00
Marten Seemann
4fe0f6752c fix typos in error messages when parsing Version Negotiation packets 2019-06-29 11:00:57 +07:00
Marten Seemann
0333f424bb Merge pull request #1959 from lucas-clemente/optimize-crypto-packet-sending
optimize sending of crypto packets
2019-06-29 00:03:12 +08:00
Marten Seemann
185082d5b0 Merge pull request #1962 from lucas-clemente/remove-hostname-from-addr
remove unused utils.HostnameFromAddr function
2019-06-29 00:02:08 +08:00
Marten Seemann
da0b52ce10 Merge pull request #1961 from lucas-clemente/initiate-key-updates
initiate key updates
2019-06-28 23:49:56 +08:00
Marten Seemann
5458aedacc Merge pull request #1958 from lucas-clemente/remove-stray-error-check
remove stray error check in packet packer
2019-06-28 23:49:32 +08:00
Marten Seemann
2f09e1774c remove unused utils.HostnameFromAddr function 2019-06-28 22:49:00 +07:00
Marten Seemann
eef45be73b Merge pull request #1964 from lucas-clemente/fix-flaky-cancelation-test
fix flaky cancelation integration test
2019-06-28 23:48:05 +08:00
Marten Seemann
437b01b7df fix flaky cancelation integration test 2019-06-28 22:37:24 +07:00
Marten Seemann
6461c69045 add an integration test that performs frequent key updates 2019-06-27 10:54:58 +08:00
Marten Seemann
0f16e08e14 introduce an environment variable to set the key update interval
QUIC_GO_KEY_UPDATE_INTERVAL determines the maximum number of packets
that are sent or received using a key. The default value should be safe
for use in production, but setting it to a lower value is useful for
integration and interop testing.
2019-06-27 10:54:58 +08:00
Marten Seemann
a09c045324 initiate a key update after sending / receiving 100000 packets 2019-06-27 10:54:54 +08:00
Marten Seemann
73d5d83a1d pass the largest acked 1-RTT packet number to the crypto setup 2019-06-27 07:42:19 +08:00
Marten Seemann
c3142f9dc3 only try packing crypto packets before the handshake is confirmed 2019-06-25 14:31:34 +08:00
Marten Seemann
acba7d4e77 return ErrKeysDropped when sealer keys were already dropped 2019-06-25 13:38:11 +08:00
Marten Seemann
d6d1286d91 remove stray error check in packet packer 2019-06-23 14:00:26 +08:00
Marten Seemann
1e148c20c5 Merge pull request #1956 from lucas-clemente/key-updates
implement TLS key updates
2019-06-22 20:11:52 +08:00
Marten Seemann
00a02415bf add a Changelog entry for key updates 2019-06-22 20:01:49 +08:00
Marten Seemann
4e1f18e833 avoid unnecessary initializations of heaper protectors on key updates 2019-06-22 20:01:18 +08:00
Marten Seemann
ca8b7ddeef add logging to the updatable AEAD 2019-06-22 20:01:18 +08:00
Marten Seemann
55b88be009 check that the peer doesn't update keys too quickly 2019-06-22 20:01:18 +08:00
Marten Seemann
1ef54db63f check that the peer starts with key phase 0 after the handshake 2019-06-22 20:01:18 +08:00
Marten Seemann
c522bcc683 return a defined error when the AEAD cannot open a packet 2019-06-22 20:01:18 +08:00
Marten Seemann
1fb970cbac perform a key update when receiving a packet with a different key phase 2019-06-22 20:01:18 +08:00
Marten Seemann
e74ede678f move opening / sealing to the updatable AEAD 2019-06-22 20:01:18 +08:00
Marten Seemann
305e37cd15 move header encryption / decryption to the updatable AEAD 2019-06-22 20:01:18 +08:00
Marten Seemann
d3ca8db521 refactor initialization of AEADs 2019-06-22 20:01:18 +08:00
Marten Seemann
0dd5a0b91f introduce a separate AEAD for short header crypto 2019-06-22 20:01:18 +08:00
Marten Seemann
598628d05b use separate opener interfaces for long and short header packets 2019-06-22 20:01:18 +08:00
Marten Seemann
b2d3ef691e use separate sealer interfaces for long and short header packets 2019-06-22 20:01:18 +08:00
Marten Seemann
c503769bcd use separate functions per encryption level to get sealers 2019-06-22 20:01:18 +08:00
Marten Seemann
d4d3f09ee3 use separate functions per encryption level to get openers 2019-06-22 20:01:18 +08:00
Marten Seemann
14a31d49a0 add a type for the key phase and use it for header parsing and writing 2019-06-22 20:01:18 +08:00
Marten Seemann
4de3a09ec4 Merge pull request #1952 from lucas-clemente/contexts
add contexts to all blocking functions
2019-06-22 19:52:47 +08:00
Marten Seemann
ea9f72ba23 add an integration test that cancels OpenStreamSync 2019-06-22 19:37:22 +08:00
Marten Seemann
2b8cece60a add a context to Session.Open{Uni}StreamSync 2019-06-22 19:37:21 +08:00
Marten Seemann
e63a991950 add an integration test that cancels AcceptStream 2019-06-22 19:37:12 +08:00
Marten Seemann
5550ba2c3b add a context to Session.Accept{Uni}Stream 2019-06-22 19:37:11 +08:00
Marten Seemann
f74082b2fb use chan instead of sync.Cond to signal that new streams can be accepted 2019-06-22 19:36:54 +08:00
Marten Seemann
12bce1caaa add a context to Listener.Accept 2019-06-22 19:36:52 +08:00
Marten Seemann
8dbe1684be Merge pull request #1957 from lucas-clemente/remove-get-packet-number-length
remove unused function GetPacketNumberLength
2019-06-22 18:38:49 +08:00
Marten Seemann
d495b4bada remove unused function GetPacketNumberLength 2019-06-21 20:13:59 +08:00
Marten Seemann
119286b05a Merge pull request #1908 from lucas-clemente/quic-trace
add quic-trace support
2019-06-21 13:38:14 +08:00
Marten Seemann
439c5eae87 add a Changelog entry for quic-trace 2019-06-21 12:51:39 +08:00
Marten Seemann
880886a139 record the congestion state for tracing before processing the ACK frame 2019-06-20 22:58:01 +08:00
Marten Seemann
c6b8ed9322 update quic-trace to handle CRYPTO frames 2019-06-20 22:58:01 +08:00
Marten Seemann
fcb0d6cfdc record InSlowStart and InRecovery 2019-06-20 22:58:01 +08:00
Marten Seemann
73f83ca4bb add a tracing option to the example server 2019-06-20 22:58:01 +08:00
Marten Seemann
7c7b1ba9c7 add tracing for lost packets 2019-06-20 22:58:01 +08:00
Marten Seemann
22cbb344af move the TransportState struct to the quictrace package
Prevents an import loop when passing the tracer to the ackhandler.
2019-06-20 22:58:01 +08:00