Commit Graph

2033 Commits

Author SHA1 Message Date
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
Marten Seemann
5ee7b205c6 handle the crypto stream separately 2017-10-25 09:13:48 +07:00
Marten Seemann
9825ddb43a simplify the interaction with mint 2017-10-25 09:13:47 +07:00
Marten Seemann
282b423f7d pass the crypto stream to the crypto setup constructor
The crypto stream is opened during the session setup. Passing it to the
crypto setup directly helps simplify the constructor.
2017-10-25 09:13:47 +07:00
Marten Seemann
a88da29433 Merge pull request #881 from lucas-clemente/improve-flow-controller
remove the flow control manager
2017-10-25 09:10:39 +07:00
Marten Seemann
e49ef8a90c Merge pull request #889 from lucas-clemente/fix-connection-close-parsing
fix parsing of long reason phrases in CONNECTION_CLOSE frames
2017-10-25 09:10:16 +07:00
jbenoist
12d4e031bf fix 0-RTT by moving cookie generation to server config 2017-10-24 13:27:50 +07:00
Marten Seemann
5556edbcad fix parsing of long reason phrases in CONNECTION_CLOSE frames 2017-10-23 17:23:13 +07:00
Marten Seemann
268c3859fc remove the flow control manager 2017-10-20 21:34:09 +07:00
Marten Seemann
6dc453caa3 use mockgen reflect mode
This requires a dirty hack to get mockgen to generate mocks for internal
packages.
2017-10-20 21:12:19 +07:00
Marten Seemann
b4a229b72a implement a streamsMap method to range over all open streams 2017-10-20 21:12:19 +07:00
Marten Seemann
e087ee7e9f handle WINDOW_UPDATEs for streams and connection separately
In IETF QUIC, stream 0 is a valid stream ID, and is not used to encode
WINDOW_UPDATEs for the connection any more.
2017-10-20 21:12:19 +07:00
Marten Seemann
c53a83535e split the flow controller in stream and connection flow controller 2017-10-20 21:12:19 +07:00
Marten Seemann
9e197184c1 Merge pull request #879 from lucas-clemente/remove-params-negotiator
remove the params negotiator
2017-10-20 09:07:07 -05:00
Marten Seemann
f3e9bf4332 remove the params negotiator 2017-10-20 18:08:21 +07:00
Marten Seemann
925a52f032 don't apply a limit to the number of outgoing streams 2017-10-20 17:35:30 +07:00
Marten Seemann
480db80da1 remove the receive flow control window from the params negotiator
The receive windows are not negotiated, they are just announced to the
peer.
2017-10-20 17:35:30 +07:00
Marten Seemann
f5acb690d3 simplify the maximum stream limit 2017-10-20 17:35:30 +07:00
Marten Seemann
daff6256b9 don't negotiate the maximum incoming streams value
The maximum number of incoming streams doesn't need to be negotiated. It
is a value that is only announced by the peer, and has to be respected.
Furthermore, Chrome doesn't seem to care about the MSPC value anymore
(since MIDS was introduced), so there's no need to send this in the
handshake any more.
2017-10-20 17:35:30 +07:00
Marten Seemann
a816d5a12e Merge pull request #877 from lucas-clemente/help-wanted-label
rename want-help Github label to help wanted
2017-10-20 05:27:55 -05:00
Marten Seemann
180b66d285 Merge pull request #888 from lucas-clemente/fix-887
open the crypto stream during session setup
2017-10-20 05:25:06 -05:00
Marten Seemann
c6ebf74e02 Merge pull request #883 from lucas-clemente/fix-882
reduce the maximum packet size of sent packets to 1200 bytes
2017-10-20 05:23:14 -05:00
Marten Seemann
91a8fc9456 open the crypto stream during session setup 2017-10-19 14:57:30 +07:00
Marten Seemann
5504c47ca5 reduce the maximum packet size of sent packets to 1200 bytes
This is the value the IETF draft mandates for implementations that don't
do PMTUD.
2017-10-18 14:14:49 +07:00
Marten Seemann
2f1db1c23d fix data length check in STREAM frame parser
We should check if the rest of the STREAM frame contains enough bytes to
read the full data length, not if this overflows the MaxPacketSize
(which is the maximum packet size we use for sending, and has nothing to
do with receiving packets).
2017-10-18 13:54:28 +07:00
Marten Seemann
30730d3195 rename want-help Github label to help wanted
Github seems to make this a standard now.
2017-10-13 23:17:46 -07:00
Marten Seemann
8297c52b79 Merge pull request #873 from lucas-clemente/improve-max-window-increments
move the max flow control increments out of the params negotiator
2017-10-05 10:56:45 -07:00
Marten Seemann
0e1a8a5f8c move the max flow control increments out of the params negotiator
The params negotiator was just keeping track of the value set in the
quic.Config. The max flow control increments are not subject to
negotiation, but an independent implementation decision of every peer.
2017-10-04 07:16:16 -07:00
Marten Seemann
c54bd857c0 Merge pull request #862 from lucas-clemente/fix-496
implement loss detection for handshake packets
2017-10-03 16:02:58 -07:00
Marten Seemann
daa8d08fba implement loss detection for handshake packets 2017-10-03 13:56:47 -07:00