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