Commit Graph

3184 Commits

Author SHA1 Message Date
Marten Seemann
178ac0dacb keep increasing the packet number after version negotiation and retry 2018-12-22 22:15:35 +06:30
Marten Seemann
1abf9e1b37 start with packet number 0 2018-12-22 21:25:14 +06:30
Marten Seemann
f9218444a9 use a separate function to close the session after VN and retry 2018-12-21 23:47:10 +06:30
Marten Seemann
b166757fd9 Merge pull request #1680 from lucas-clemente/stream-deadlock
fix a deadlock when setting read and write deadlines
2018-12-21 15:43:07 +06:30
Marten Seemann
57fb06d3a7 Merge pull request #1682 from lucas-clemente/undecryptable-packets
only queue packets for later decryption if the opener is not yet available
2018-12-20 16:35:26 +06:30
Marten Seemann
74d8a2bd7d ignore 0-RTT packets 2018-12-20 15:25:04 +06:30
Marten Seemann
d6c304610d only queue packets for decryption if the opener is not yet available 2018-12-20 15:24:56 +06:30
Marten Seemann
a8ad6eea38 add integration tests for setting read and write deadlines 2018-12-20 14:43:25 +06:30
Marten Seemann
0be8e033ab fix race conditions when setting read and write deadlines 2018-12-20 14:43:11 +06:30
Marten Seemann
605846cfd8 don't queue a packet for later decryption of decryption already failed
This was an optimization in gQUIC, which relied on trial decryption. In
IETF QUIC, we know with certainty which keys were used to encrypt a
packet, so if decryption fails once, we are certain it will never
succeed.
2018-12-19 15:56:01 +06:30
Marten Seemann
516b427d46 don't set a timer when the deadline is the zero value 2018-12-18 22:06:57 +06:30
Marten Seemann
072b84870c don't fire a newly created timer 2018-12-18 22:06:57 +06:30
Marten Seemann
1045c7dc94 Merge pull request #1679 from lucas-clemente/fix-send-stream-deadlock
fix deadlock when sending stream data
2018-12-18 22:06:00 +06:30
Marten Seemann
01e37e005a fix deadlock when closing and receiving MAX_STREAM_DATA frames 2018-12-18 20:55:31 +06:30
Marten Seemann
8761cee0ef fix deadlock when sending stream data 2018-12-18 16:26:58 +06:30
Marten Seemann
dadb6d395c Merge pull request #1676 from lucas-clemente/fix-1675
only copy stream data to write when popping a STREAM frame
2018-12-18 16:21:06 +06:30
Marten Seemann
21de8fde1e Merge pull request #1678 from lucas-clemente/fix-double-framer-init
only initialize the framer once
2018-12-18 16:09:14 +06:30
Marten Seemann
d535340d0c only initialize the framer once 2018-12-18 15:45:40 +06:30
Marten Seemann
466825eeb2 only copy stream data to write when popping a STREAM frame
stream.Write can be called with arbitrarily large slices of data. We
should avoid copying all that data up front since this can take a long
time. Instead, we can copy the data that is dequeued when a STREAM frame
is popped.
2018-12-18 14:35:48 +06:30
Marten Seemann
bd9baf928c Merge pull request #1672 from lucas-clemente/header-encryption
implement header encryption
2018-12-16 18:32:50 +06:30
Marten Seemann
a638185f97 apply header encryption when packing and unpacking packets 2018-12-14 21:34:00 +06:30
Marten Seemann
5a68ba0a02 implement header encrytion and decryption for sealers and openers 2018-12-14 16:46:40 +06:30
Marten Seemann
67f923c736 return the Opener from the crypto setup 2018-12-14 16:46:40 +06:30
Marten Seemann
d3611a014c implement initial header encryption key derivation 2018-12-14 16:46:40 +06:30
Marten Seemann
03489f56a7 handle the packet length before parsing the extended header 2018-12-14 16:46:40 +06:30
Marten Seemann
aaea375fb6 move parsing of the extended header to the unpacker 2018-12-14 16:46:40 +06:30
Marten Seemann
c912860a94 don't explicitely pass the header binary to the unpacker 2018-12-14 16:46:40 +06:30
Marten Seemann
ce6b9f2f1d save the decoded packet number on the unpacked packet 2018-12-14 16:46:40 +06:30
Marten Seemann
a8e5309cd1 move packet number decoding to the unpacker 2018-12-14 16:46:40 +06:30
Marten Seemann
c06a0ca037 rename InferPacketNumber to DecodePacketNumber
That's how it's called in the draft.
2018-12-14 16:46:40 +06:30
Marten Seemann
a009217ee4 fix logging of packet size 2018-12-14 16:46:40 +06:30
Marten Seemann
df22a9e278 Merge pull request #1667 from lucas-clemente/refactor-initial-aead
refactor initialization of the initial AEAD
2018-12-14 16:41:45 +06:30
Marten Seemann
200a58ce48 Merge pull request #1669 from lucas-clemente/fix-examples
use the self-signed certificate for the example server and client
2018-12-14 16:41:07 +06:30
Marten Seemann
d1ac7236b4 Merge pull request #1670 from lucas-clemente/disable-go1.10-race-detector
only run integration tests with race detector on Go 1.11 on CircleCI
2018-12-14 16:37:24 +06:30
Marten Seemann
598a796e24 only run integration tests with race detector on Go 1.11 on CircleCI 2018-12-13 18:07:32 +06:30
Marten Seemann
f6357dc858 use the self-signed certificate for the example server and client 2018-12-13 14:42:25 +06:30
Marten Seemann
a80ca960e5 refactor initialization of the initial AEAD 2018-12-13 13:51:05 +06:30
Marten Seemann
d86e989333 Merge pull request #1666 from lucas-clemente/self-signed-cert
use a self-signed certificate for integration tests
2018-12-11 21:06:52 +06:30
Marten Seemann
4abcce6408 use a self-signed certificate for integration tests 2018-12-11 14:24:12 +06:30
Marten Seemann
7b880f259f remove unused testdata.GetCertificate 2018-12-08 12:20:29 +06:30
Marten Seemann
ff1e7c4754 Merge pull request #1656 from lucas-clemente/require-tlsconf-listen
error when Listen is called without a tls.Config or certificates
2018-11-29 16:53:33 +07:00
Marten Seemann
008615284e error when Listen is called without a tls.Config or certificates 2018-11-29 16:01:03 +07:00
Marten Seemann
af0d14c8d1 Merge pull request #1650 from lucas-clemente/fix-1619
pad small packets
2018-11-29 11:52:34 +07:00
Marten Seemann
314056f6dd increase mininum stateless reset size 2018-11-29 11:22:20 +07:00
Marten Seemann
cf957bb3d0 pad small packets, such that len(packet number) + len(payload) >= 4 2018-11-29 11:22:20 +07:00
Marten Seemann
d981364ec6 Merge pull request #1649 from lucas-clemente/handshake-retransmissions
simplify packing of handshake retransmissions
2018-11-29 11:21:49 +07:00
Marten Seemann
46487e5267 remove unused constant NonForwardSecurePacketSizeReduction 2018-11-29 09:39:43 +07:00
Marten Seemann
05434fecbc always use 4 byte packet numbers for long header packets
When retransmitting a long header packet, we never have to split CRYPTO
frames, since the header is guaranteed to have the same size.
2018-11-29 09:39:43 +07:00
Marten Seemann
723e18c78c don't treat handshake retransmissions separately 2018-11-29 09:39:43 +07:00
Marten Seemann
1b3e4e9595 Merge pull request #1647 from lucas-clemente/remove-packet-packer-cansenddata
remove unneeded check if stream data can be sent in packet packer
2018-11-28 18:10:04 +07:00