Commit Graph

2005 Commits

Author SHA1 Message Date
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
Marten Seemann
1931ce502e Merge pull request #857 from lucas-clemente/maxpacketsize-handshake-param
send the maximum packet size in the TLS transport parameters
2017-09-29 23:14:38 +07:00
Marten Seemann
9cb7480050 rename connection ID truncation to connection ID omission 2017-09-29 22:52:54 +07:00
Marten Seemann
dc6d1b6822 send the maximum packet size in the TLS transport parameters 2017-09-29 22:08:12 +07:00
Marten Seemann
8d273d30af Merge pull request #853 from lucas-clemente/tls-extensions
implement the TLS Transport Parameters
2017-09-29 17:51:08 +07:00
Marten Seemann
d9abbb6575 run the self integration tests with the TLS handshake 2017-09-29 17:35:28 +07:00
Marten Seemann
4cbdced106 send the transport parameters in the TLS handshake 2017-09-29 17:35:22 +07:00
Marten Seemann
c95f2054a8 rename the ConnectionParametersManager to ParamsNegotiator 2017-09-28 18:15:33 +07:00
Marten Seemann
ebb4150e63 separate connection parameters negotiation and gQUIC handshake parsing 2017-09-28 18:15:32 +07:00
Marten Seemann
95901cdee4 initialize the connection parameters manager in the crypto setup 2017-09-28 18:15:32 +07:00
Marten Seemann
565869723a Merge pull request #850 from lucas-clemente/fix-848
add an integration test that uses the TLS handshake
2017-09-28 18:12:03 +07:00
Marten Seemann
55c35a3c4e add an integration test for the TLS handshake 2017-09-28 15:51:59 +07:00