Commit Graph

2062 Commits

Author SHA1 Message Date
Marten Seemann
05f6e1cf8e Merge pull request #929 from lucas-clemente/fix-926
send initial version in the CHLO, not the current version
2017-11-02 22:17:17 +07:00
Marten Seemann
a1a4f35096 send initial version in the CHLO, not the current version
This commit fixes two bugs:
1. In the CHLO, we need to send the initial QUIC version. It will differ
from the current version if version negotiation was performed.
2. The session setup was using the wrong version (current version, and
not the initial version), such that we would have sent the wrong version
in the TLS handshake as well.
2017-11-02 21:51:51 +07:00
Marten Seemann
96f65f922f Merge pull request #927 from lucas-clemente/fix-925
fix client handshake failure when the server supports unknown versions
2017-11-02 21:34:04 +07:00
Marten Seemann
d77ba5271f Merge pull request #922 from lucas-clemente/fix-920
reject packets that use the wrong or unknown packet types
2017-11-02 21:28:20 +07:00
Marten Seemann
589decab64 Merge pull request #930 from lucas-clemente/fix-public-reset-logging
fix logging of unparseable PUBLIC_RESETs
2017-11-02 21:16:03 +07:00
Marten Seemann
b40d249953 reject packets that use the wrong or unknown packet types 2017-11-02 20:47:02 +07:00
Marten Seemann
30effa5bdd Merge pull request #921 from lucas-clemente/fix-919
rename the packet types according to recent draft changes
2017-11-02 20:45:43 +07:00
Marten Seemann
93703f8a4a fix logging of unparseable PUBLIC_RESETs 2017-11-02 20:44:59 +07:00
Marten Seemann
3e6f66da79 rename the packet types according to recent draft changes 2017-11-02 18:31:04 +07:00
Marten Seemann
49e305f97f Merge pull request #915 from lucas-clemente/fix-914
only use little endian byte order for gQUIC 37 and 38
2017-11-02 17:59:55 +07:00
Marten Seemann
43c23ff5fa fix client handshake failure when the server supports unknown versions 2017-11-02 17:41:06 +07:00
Marten Seemann
1f6f5bb736 Merge pull request #836 from lucas-clemente/cookies
implement the TLS Cookie extension
2017-11-02 17:38:27 +07:00
Marten Seemann
aba1dd13ba only use little endian byte order for gQUIC 37 and 38
That way, when adding new non-gQUIC versions, they will use big endian.
2017-11-02 16:46:22 +07:00
Marten Seemann
df13a0a970 implement the TLS Cookie extension 2017-11-02 16:45:43 +07:00
Marten Seemann
085702df36 Merge pull request #924 from lucas-clemente/fix-chrome-tests-on-travis
fix Chrome tests on Travis, remove test retries
2017-11-02 16:43:59 +07:00
Marten Seemann
e810c097da remove the retries for the Chrome integration tests 2017-11-02 16:18:29 +07:00
Marten Seemann
fb054dea18 log Chrome version on Travis 2017-11-01 22:27:39 +07:00
Marten Seemann
b8d1ffef13 fix host resolver rule in Chrome integration test
This was the reason the Chrome integration tests have been failing
recently.
2017-11-01 22:26:29 +07:00
Marten Seemann
cc5f978996 Merge pull request #912 from lucas-clemente/fix-911
fix gQUIC version numbers
2017-10-30 19:46:36 +07:00
Marten Seemann
09334f432e Merge pull request #909 from lucas-clemente/handle-ietf-style-vnps
handle IETF draft style Version Negotiation Packets
2017-10-30 19:44:34 +07:00
Marten Seemann
1614e31681 Merge pull request #916 from lucas-clemente/fix-handshake-retransmissions
fix the exponential backoff when sending handshake retransmissions
2017-10-30 18:48:52 +07:00
Marten Seemann
0a5030e02b Merge pull request #910 from lucas-clemente/send-ietf-vnps
send IETF draft style version negotiation packets
2017-10-30 18:48:35 +07:00
Marten Seemann
b0f34e776e send IETF draft style version negotiation packets
Send a gQUIC Version Negotiation Packet, if the client packet has a
Public Header. If the client has an IETF draft style header, send an
IETF draft style Version Negotiation Packet.
2017-10-30 18:23:12 +07:00
Marten Seemann
f412faad7b fix the exponential backoff when sending handshake retransmissions 2017-10-30 18:10:42 +07:00
Marten Seemann
f6e44e3e8e fix gQUIC version numbers 2017-10-30 11:51:26 +07:00
Marten Seemann
fc3087fab3 handle IETF draft style Version Negotiation Packets 2017-10-29 16:47:15 +07:00
Marten Seemann
515babb4bd Merge pull request #902 from lucas-clemente/long-header-types
set the Long Header type
2017-10-29 15:48:34 +07:00
Marten Seemann
3f62ea8673 set the Long Header packet type based on the state of the handshake 2017-10-29 14:08:08 +07:00
Marten Seemann
a65929f6cf add logging for the packet header 2017-10-27 22:56:41 +07:00
Marten Seemann
3e39991e1e use the non-blocking of mint to cycle through the handshake 2017-10-27 22:54:40 +07:00
Marten Seemann
fcc380187a Merge pull request #899 from lucas-clemente/fix-898
encrypt unprotected packets with a connection-dependent key
2017-10-27 22:52:04 +07:00
Marten Seemann
3edab90841 Merge pull request #896 from lucas-clemente/big-endian-version-numbers
make version numbers consistent with the IETF draft
2017-10-27 17:37:22 +07:00
Marten Seemann
4f86995e48 encrypt unprotected packets with a connection-dependent key 2017-10-27 17:35:08 +07:00
Marten Seemann
ddea1d83ab use gomock to mock crypto.AEAD in the crypto setup tests 2017-10-27 17:35:08 +07:00
Marten Seemann
d98a11bb35 save version numbers such that can be written in big endian
This makes the version number representation consistent with the IETF
draft.
2017-10-27 17:24:24 +07:00
Marten Seemann
e81795e49b Merge pull request #895 from lucas-clemente/new-header
implement the IETF draft Header
2017-10-27 17:18:15 +07:00
Marten Seemann
64a9de3efb Merge pull request #897 from lucas-clemente/stricter-flow-control
make flow control stricter when receiving final offsets
2017-10-27 17:17:54 +07:00
Marten Seemann
4a4c56d8d2 Merge pull request #903 from lucas-clemente/go192
update CIs to Go 1.9.2
2017-10-27 16:57:48 +07:00
Marten Seemann
4556ad01e5 use the new packet header for connections using TLS 2017-10-27 16:54:47 +07:00
Marten Seemann
6c394acde7 never use a 6 byte packet number
According to the IETF draft, the only packet number lengths are 1, 2 and
4 bytes. With the given formula for the packet number derivation, we
would have only sent a 6 byte packet number if the difference between
the largest unacked and the current packet number exceeded 2^31, so this
would never have happened anyway.
2017-10-27 16:51:59 +07:00
Marten Seemann
bbe9affa27 reject version negotiation packets with an empty version list 2017-10-27 16:51:59 +07:00
Marten Seemann
7cb8e87580 implement parsing of IETF Version Negotiation Packets 2017-10-27 16:51:57 +07:00
Marten Seemann
fad279cb75 implement parsing and writing of the IETF QUIC Header 2017-10-27 16:51:04 +07:00
Marten Seemann
d7a09e7667 reject inconsistent final stream offsets 2017-10-27 16:39:41 +07:00
Marten Seemann
c28b5b5879 update CIs to Go 1.9.2 2017-10-27 14:10:13 +07:00
Marten Seemann
636bf4578c error when receiving stream data with a larger offset than the final offset
This could happen when a peer send a STREAM frame with the Fin bit set,
and then sends STREAM frames with a higher offset.
2017-10-25 10:43:29 +07:00
Marten Seemann
ac82aeda8b treat the connection ID as a big endian value 2017-10-25 10:09:15 +07:00
Marten Seemann
816cf90ea7 Merge pull request #892 from lucas-clemente/no-header-stream-prio
remove the prioritisation of the H2 header stream
2017-10-25 10:07:52 +07:00
Marten Seemann
b9ffeb7c88 don't prioritize the header stream
This was an optimization for H2/QUIC, which always violated the QUIC
layering. The H2 header stream will (probably) be removed in IETF QUIC.
2017-10-25 09:55:50 +07:00
Marten Seemann
c06a06300d Merge pull request #891 from lucas-clemente/crypto-stream-is-special
handle the crypto stream separately
2017-10-25 09:54:21 +07:00