Commit Graph

252 Commits

Author SHA1 Message Date
Marten Seemann
53aeb7d592 don't use the wire encoding for the PacketType constant 2018-11-26 22:45:28 +07:00
Marten Seemann
39e1e9a6f8 implement receiving of stateless resets 2018-11-20 10:07:30 +07:00
Marten Seemann
54c287c7e6 Merge pull request #1614 from lucas-clemente/rename-params-file
rename the file containing the parameters
2018-11-19 20:46:16 +07:00
Marten Seemann
7696bf59ea remove 6 byte packet numbers 2018-11-19 16:15:02 +07:00
Marten Seemann
82cfd38537 rename the file containing the parameters 2018-11-19 16:06:37 +07:00
Marten Seemann
001f76559a reduce the duration we keep the mapping for retired connection IDs alive
This duration only needs to cover typical reordering on the network.
5 seconds should be plenty.
2018-11-17 08:16:06 +07:00
Marten Seemann
1dd0b9a635 rename the duration that we keep old connection ID mappings alive 2018-11-16 21:22:32 +07:00
Marten Seemann
df7c6a221b use higher initial flow control windows 2018-11-12 23:38:07 +07:00
Marten Seemann
4b37ecb2b5 use the same default max flow control window sizes for client and server 2018-11-12 23:38:07 +07:00
Marten Seemann
9518c90c0a implement and use the MAX_STREAMS frame 2018-11-10 09:38:50 +07:00
Marten Seemann
0f931ca54e use a uint64 for stream counts 2018-11-10 09:05:33 +07:00
Marten Seemann
e8de94485c move more stream ID logic to the protocol package 2018-11-10 09:05:33 +07:00
Marten Seemann
5768b492d7 introduce a type for unidirctional and bidirectional streams 2018-11-01 15:50:47 +07:00
Marten Seemann
14a4464266 implement some stream ID helper functions 2018-10-30 12:52:48 +07:00
Marten Seemann
a1acfc3045 rename {Stream,Connection}FlowControlWindow to InitialMax{Stream}Data 2018-10-30 12:52:42 +07:00
Marten Seemann
3266e36811 drop support for gQUIC 2018-10-30 10:20:39 +07:00
Marten Seemann
82508f1562 use tls-tris instead of mint 2018-10-26 16:18:49 +07:00
Marten Seemann
454a01b2a0 introduce the IETF QUIC encryption levels 2018-10-26 16:11:25 +07:00
Marten Seemann
a7f94d89b6 only allow a single retry 2018-10-24 23:48:33 +07:00
Marten Seemann
91d65baf1b add gQUIC 44 to the supported versions 2018-08-28 08:49:29 +07:00
Marten Seemann
a98fd88a1b implement parsing of the gQUIC 44 header 2018-08-28 08:49:29 +07:00
Marten Seemann
88505b79a7 disable sending and receiving of STOP_WAITING frames in QUIC 44 2018-08-28 08:49:13 +07:00
Marten Seemann
afbd2e1962 drop support for gQUIC 42 2018-08-27 19:13:06 +07:00
Marten Seemann
46f8c07daa improve the version negotiation integration test 2018-08-27 09:29:26 +07:00
Marten Seemann
7bf5cb6e2a Merge pull request #1487 from lucas-clemente/version-negotiate-ietf-and-gquic
allow version negotiation between IETF QUIC and gQUIC, and vice versa
2018-08-15 19:47:35 +07:00
Marten Seemann
c840bd4177 allow version negotiation between IETF QUIC and gQUIC, and vice versa 2018-08-15 17:10:05 +07:00
Marten Seemann
9608e8563f only accept 3 retries
While the server is allowed to perform multiple Retries, the client
should impose a limit in order to avoid being caught in an endless loop.
2018-08-14 18:35:25 +07:00
Marten Seemann
872e1747f4 always use connection IDs longer than 8 bytes when sending a Retry
A server is allowed to perform multiple Retries. There's little to gain
from doing so, but it's something our API allows. If a server performs
multiple Retries, it must use a connection ID that's at least 8 bytes
long. Only if it doesn't perform any further Retries it is allowed to
use shorter IDs. Therefore, we're on the safe side by always using a
long connection ID.
This shouldn't have a performance impact, since the server changes the
connection ID to a short value with the first Handshake packet it sends.
2018-08-14 17:34:21 +07:00
Marten Seemann
ad5a3e2fa0 also use the multiplexer for the server 2018-08-08 10:03:22 +07:00
Marten Seemann
f02dc92a32 make the connection ID length configurable 2018-07-03 18:34:31 +07:00
Marten Seemann
73f7636537 use a random length destination connection ID on the Initial packet
The destination connection ID on the Initial packet must be at least 8
bytes long. By using all valid values, we make sure that the everything
works correctly. The server chooses a new connection ID with the Retry
or Handshake packet it sends, so the overhead of this is negligible.
2018-07-03 18:01:41 +07:00
Marten Seemann
0bd7e744ff implement parsing of headers with different connection ID lengths 2018-07-03 18:01:41 +07:00
Marten Seemann
f7e05c3158 drop Initial packets that have a too short Destination Connection ID 2018-06-16 21:15:46 +07:00
Marten Seemann
3e03055a7d use varint packet numbers in IETF QUIC headers 2018-06-06 16:07:47 +02:00
Marten Seemann
530170430a add support for QUIC 43 2018-06-05 12:41:56 +02:00
Marten Seemann
3370f9fa58 add support for QUIC 42
QUIC 42 accepts overlapping stream data. We've been doing this for some
time already, so we don't need any additional changes.
2018-06-02 19:49:28 +08:00
Marten Seemann
2b97fb41c9 switch to a byte-based congestion controller
Chrome removed the packet-based congestion controller and switched to
byte-based as well.
2018-05-02 23:45:23 +09:00
Marten Seemann
0e58a679d6 Merge pull request #1319 from lucas-clemente/fix-1307
use different source and destination connection IDs
2018-04-23 17:29:45 +09:00
Marten Seemann
f353658547 limit the size of an ACK frame to 1000 bytes 2018-04-23 16:44:39 +09:00
Marten Seemann
fae32101a0 use different source and destination connection IDs 2018-04-23 15:23:01 +09:00
Marten Seemann
d47124d14d add more methods to the protocol.ConnectionID
This will make it easier to change the underlying type of the connection
ID (potentially an array is faster than a byte slice).
2018-04-19 16:08:06 +09:00
Marten Seemann
1a035a265c change the type of Connection ID to byte slice 2018-04-18 22:41:24 +09:00
Marten Seemann
af8971d8c9 move connection ID generation from the utils to the protocol package 2018-04-17 20:21:06 +09:00
Marten Seemann
b5977236ff implement packet send modes to determine what kind of packets are sent 2018-03-13 14:49:48 +01:00
Marten Seemann
6ccc76a130 send packets with maximum IPv4 and IPv6 packet size 2018-03-09 22:36:44 +07:00
Marten Seemann
8fc0f53a8d move constants used by the received packet handler to ackhandler package 2018-03-05 19:39:59 +07:00
Marten Seemann
b6ca910a52 implement the IETF draft 10 header changes 2018-03-05 19:13:37 +07:00
Marten Seemann
656dff6163 introduce a UsesStopWaitingFrames() method for version numbers 2018-03-02 16:00:11 +07:00
Marten Seemann
624ac61412 reject unknown versions in the quic.Config 2018-02-26 11:07:06 +08:00
Marten Seemann
11af98e338 run misspell in gometalinter 2018-02-23 22:39:08 +08:00