Commit Graph

3655 Commits

Author SHA1 Message Date
Marten Seemann
6afde2eae8 add an integration test that duplicates all packets 2019-07-02 13:00:58 +07:00
Marten Seemann
9c496ddd19 add an integration test that sends invalid packets 2019-07-02 13:00:51 +07:00
Marten Seemann
5479837a01 stop delay timers in the proxy when it is closed 2019-07-02 12:34:43 +07:00
Marten Seemann
7827cd61bc pass the raw packet to the Drop- and Delay callbacks of the proxy 2019-07-01 14:46:58 +07:00
Marten Seemann
3dcbaee89e Merge pull request #1979 from lucas-clemente/ack-only-packets-enclevel
pack ACK-only packets for all encryption levels
2019-07-01 14:44:43 +07:00
Marten Seemann
4aaeb7f0f3 Merge pull request #1981 from lucas-clemente/go-mod-readme
mention Go mod as a requirement in the README
2019-07-01 14:37:18 +07:00
Marten Seemann
d7b409217f Merge pull request #1978 from lucas-clemente/fix-unpack-error-handling
don't close the session when unpacking a packet fails
2019-07-01 14:36:59 +07:00
Marten Seemann
a06bc25055 mention Go mod as a requirement in the README 2019-07-01 07:39:46 +07:00
Marten Seemann
0ce749b5f1 pack ACK-only packets for all encryption levels 2019-07-01 07:19:47 +07:00
Marten Seemann
6af7df436a don't close the session when unpacking a packet fails 2019-06-30 18:35:49 +07:00
Marten Seemann
5929a83210 Merge pull request #1974 from lucas-clemente/drop-old-keys
drop keys 3 PTOs after a key update
2019-06-30 17:51:28 +07:00
Marten Seemann
abd82fbd95 Merge pull request #1976 from lucas-clemente/fix-retry-logging
fix logging of Retries
2019-06-30 17:40:31 +07:00
Marten Seemann
5104c5d554 Merge pull request #1972 from lucas-clemente/frame-enc-level-check
check if a frame is allowed at the encryption level it was sent with
2019-06-30 17:36:33 +07:00
Marten Seemann
a3878d99c9 drop old keys 3 PTOs after a key update 2019-06-30 17:36:09 +07:00
Marten Seemann
a2a4a216de introduce an absolute key phase, use it for key updates 2019-06-30 17:36:09 +07:00
Marten Seemann
5a9c593463 rename the KeyPhase to KeyPhaseBit 2019-06-30 17:36:09 +07:00
Marten Seemann
7ba70cc8c2 Merge pull request #1973 from lucas-clemente/pto-rtt-stats
move calculation of the PTO to the RTTStats
2019-06-30 17:33:28 +07:00
Marten Seemann
b40991c400 Merge pull request #1971 from lucas-clemente/skip-multiplex-test-on-linux
skip the multiplex test on linux, add a better explanation
2019-06-30 17:32:27 +07:00
Marten Seemann
82563d4419 Merge pull request #1970 from lucas-clemente/fix-proxy-test-race
fix race condition in proxy tests
2019-06-30 17:31:43 +07:00
Marten Seemann
6f3fd68cd9 Merge pull request #1767 from lucas-clemente/unpacking-side-channel
fix timing side channel when receiving packets with invalid reserved bits
2019-06-30 16:06:37 +07:00
Marten Seemann
7b9b711a77 fix timing side channel when reading headers with invalid reserved bits 2019-06-30 15:57:03 +07:00
Marten Seemann
8da857fdb4 fix logging of Retries 2019-06-29 17:55:59 +07:00
Marten Seemann
66abcdfc5c move calculation of the PTO to the rttStats
The PTO value is needed at various places in the protocol. Calculating
it on the rttStats struct will allow us to pass around this struct.
2019-06-29 14:57:24 +07:00
Marten Seemann
4366eac105 don't include the exponential backoff in the PTO calculation
According to the spec, the PTO is defined without the backoff. The
backoff is applied when setting the PTO alarm.
2019-06-29 14:02:05 +07:00
Marten Seemann
b5764f22a2 save the max_ack_delay in the rttStats 2019-06-29 13:40:56 +07:00
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
79513e81eb skip the multiplex test on linux, add a better explanation 2019-06-29 11:52:23 +07:00
Marten Seemann
0f3b0cfcc4 fix race condition in proxy tests 2019-06-29 11:11:45 +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