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
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
Marten Seemann
267d11ee66
add tracing for sent and received packets
2019-06-20 22:58:01 +08:00
Marten Seemann
8926531f7e
add the quic-trace protobuf
2019-06-20 22:57:57 +08:00
Marten Seemann
4500a84010
Merge pull request #1953 from lucas-clemente/varint-error-codes
...
use varints for error codes
2019-06-20 21:56:02 +08:00
Marten Seemann
1f4e63aff6
document the range of valid values for error codes
2019-06-14 17:40:51 +08:00
Marten Seemann
147181786a
use a varint for the error code in the RESET_STREAM frame
2019-06-14 17:38:27 +08:00
Marten Seemann
453aa23553
use a varint for the error code in the CONNECTION_CLOSE frame
2019-06-14 17:35:40 +08:00
Marten Seemann
2225bfd9a2
Merge pull request #1951 from lucas-clemente/fix-echo-example
...
fix ALPN in echo example
2019-06-09 23:07:30 +08:00
Marten Seemann
375b609610
fix ALPN in echo example
2019-06-07 16:27:37 +08:00
Marten Seemann
d0b5cc1133
Merge pull request #1950 from lucas-clemente/openstreamsync-in-order
...
return OpenStreamSync calls in the order they were called
2019-06-07 13:00:18 +08:00
Marten Seemann
061b92ea5c
return OpenStreamSync calls in the order they were called
2019-06-06 17:43:38 +08:00
Marten Seemann
e7f20d427b
Merge pull request #1948 from lucas-clemente/stream-num
...
refactor the stream maps
2019-06-05 23:46:36 +08:00
Marten Seemann
857e4ae9a9
use stream numbers, not stream ids, in the stream maps
2019-06-05 20:01:51 +08:00
Marten Seemann
a8633a952c
introduce a type for the stream number
2019-06-05 17:45:17 +08:00