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
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
Marten Seemann
e20fdf43ef
Merge pull request #867 from lucas-clemente/fix-828
...
improve garbage collection of stream
2017-10-03 11:55:54 -07:00
Marten Seemann
6874ff7b41
Merge pull request #866 from lucas-clemente/fix-856
...
handle version negotiation in the TLS handshake
2017-10-03 11:26:53 -07:00
Marten Seemann
e5e632b7aa
Merge pull request #870 from lucas-clemente/no-idle-timeout-negotiation
...
don't negotiate the idle timeout
2017-10-03 11:25:48 -07:00
Marten Seemann
535bbf529a
simplify variable types in the streams map
...
ints should be sufficient.
2017-10-03 11:17:41 -07:00
Marten Seemann
0c4fd4149e
Merge pull request #869 from lucas-clemente/fix-868
...
fix race conditions in the session tests for accepting streams
2017-10-03 11:07:10 -07:00
Marten Seemann
4eec7433d9
enforce a minimum value of the remote idle timeout
...
This prevents a DoS where a peer could send us a really small remote
idle timeout, and we would continuously send it PING frames.
2017-10-03 11:06:31 -07:00
Marten Seemann
0ffb64b5d7
rename the IdleConnectionStateLifetime to RemoteIdleTimeout
2017-10-03 10:48:08 -07:00
Marten Seemann
caf0a0a25a
fix race conditions in the session tests for accepting streams
2017-10-03 03:43:05 -07:00
Marten Seemann
a8b603b7bf
don't negotiate the idle timeout
...
The idle timeout doesn't need to be negotiated, simply announcing it to
the peer is sufficient. We now close the session if there's no incoming
network activity for the duration of the local idle timeout, and we
send a PING frame after half the remote idle timeout (if keep alives are
enabled).
2017-10-02 18:16:27 -07:00
Marten Seemann
52ed5579f7
Merge pull request #861 from lucas-clemente/cert-invalid-integrationtest
...
add an integration test for invalid certificates
2017-10-02 18:16:20 -05:00
Marten Seemann
709eec55b5
improve garbage collection of stream
...
This removes the Iterate method of the streamsMap, and moves the garbage
collection of closed streams from the session to the streamsMap.
2017-10-03 04:04:21 +08:00
Marten Seemann
47d87740ae
add an integration test for invalid certificates
2017-10-02 16:47:40 +08:00
Marten Seemann
a136ceffeb
implement the validation of the version negotiation for the client
2017-10-02 13:51:38 +07:00
Marten Seemann
e01eb322e4
implement the validation of the version negotiation for the server
2017-10-02 13:16:01 +07:00
Marten Seemann
a2988bce8d
send versions in ClientHello and EncryptedExtensions TLS parameters
...
It only sends the right values now, but doesn't yet perform any
validation.
2017-10-02 12:50:17 +07:00
Marten Seemann
6f3d3919df
use separate constructors for client and server for the TLS crypto setup
2017-10-02 11:11:42 +07:00
Marten Seemann
474b036474
Merge pull request #858 from lucas-clemente/omit-instead-of-truncate-connection-id
...
rename connection ID truncation to connection ID omission
2017-09-30 20:40:12 +07:00