Marten Seemann
40650d93f0
add an application-defined error type, for RST_STREAM and STOP_SENDING
2017-12-15 16:21:09 +07:00
Marten Seemann
7fd0157e1f
Merge pull request #1006 from lucas-clemente/more-window-updates
...
decrease the threshold to send MAX_{STREAM}_DATA frames
2017-12-12 18:30:55 +07:00
Marten Seemann
eb3e253be2
send MAX_{STREAM}_DATA frames more frequently
...
WINDOW_UPDATEs are relatively small, and it doesn't cost much to grant
the peer more flow control credit earlier.
2017-12-12 18:06:49 +07:00
Marten Seemann
4aca4d64b7
don't add more STREAM frames to a packet if remaining size is too small
2017-12-12 18:00:05 +07:00
Marten Seemann
23ce5a8554
drop packets for new gQUIC connections that are too small
2017-12-08 12:34:59 +07:00
Marten Seemann
6019634286
pad Initial packets to the required minimum size (1200 bytes)
2017-12-08 11:50:43 +07:00
Marten Seemann
11f746a183
implement parsing and writing of the new STREAM frames
2017-12-08 09:20:47 +07:00
Marten Seemann
759b0d87b1
refactor packet unpacking
...
This replaces version.UsesMaxDataFrame by versoin.UsesIETFFrameFormat.
That way, we can have two separate code paths in the unpacker to unpack
either gQUIC frames or IETF frames.
2017-12-08 09:18:54 +07:00
Marten Seemann
1f5cd31569
implement a function to get version slices containing reserved versions
2017-12-06 10:20:16 +07:00
Marten Seemann
45e43ada40
implement the recent changes to the version negotiation packet
2017-12-06 08:40:43 +07:00
Marten Seemann
184f81d8c4
remove old code to send an ACK every 20 packets
...
This was needed before QUIC 39, and should have been removed when we
dropped support for QUIC 38.
2017-12-01 12:14:54 +07:00
Marten Seemann
4076ab587e
add a string representation for the Long Header packet types
2017-11-22 15:57:22 -08:00
Marten Seemann
683f244054
rename the Cleartext Long Header type to Handshake
...
This was recently changed in the draft.
2017-11-13 10:55:33 +08:00
Marten Seemann
095c29dc2c
drop support for QUIC 37 and 38
2017-11-07 00:23:53 +07:00
Marten Seemann
0f1f1c8d41
implement the MAX_DATA and MAX_STREAM_DATA frames
...
For gQUIC WINDOW_UPDATEs are converted to MAX_DATA and MAX_STREAM_DATA,
respectively.
2017-11-04 15:22:14 +07:00
Marten Seemann
1f644debd4
set if a stream contributes to connection flow control
...
This depends on the version. In gQUIC, stream 1 and 3 don't contribute,
in IETF QUIC only stream 0 doesn't contribute.
2017-11-04 15:22:14 +07:00
Marten Seemann
f662822486
use stream 0 for the crypto stream when using TLS
2017-11-04 15:22:07 +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
3e6f66da79
rename the packet types according to recent draft changes
2017-11-02 18:31:04 +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
f6e44e3e8e
fix gQUIC version numbers
2017-10-30 11:51:26 +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
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
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
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
f5acb690d3
simplify the maximum stream limit
2017-10-20 17:35: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
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
6dde979f8f
implement a string representation of the version number
...
This will be useful as soon as we start supporting non-gQUIC versions.
2017-09-28 15:19:12 +07:00
Marten Seemann
e729701a94
drop support for version 36
2017-09-25 20:07:34 +07:00
Marten Seemann
8dbd60a095
drop support for QUIC 35
2017-09-25 19:55:25 +07:00
Marten Seemann
e6ebe89c1e
Merge pull request #840 from lucas-clemente/version-uses-tls
...
define a function to tell if a QUIC version uses the TLS 1.3 handshake
2017-09-22 21:47:59 +07:00
Marten Seemann
8312e766ed
define a function to tell if a QUIC version uses the TLS 1.3 handshake
2017-09-22 19:47:08 +07:00
Marten Seemann
265c35c2eb
rename the STK to Cookie
2017-09-22 18:58:04 +07:00
Marten Seemann
d9b9d83458
remove unused duplicate packet detection in the ackHandler
2017-09-14 17:55:55 +07:00
Marten Seemann
8bcabe0ba9
correctly pack packets with sealers with different overheads
2017-09-08 12:04:45 +03:00
Marten Seemann
23f3432b9d
select the right null AEAD algorithm depending on the version
2017-09-07 20:07:54 +03:00
Marten Seemann
bf64c86916
remove accidentally committed merge backup file
2017-09-05 19:27:46 +02:00
Marten Seemann
60f5c660c6
export flow control window sizes as uint64 in quic.Config
2017-08-31 16:37:03 +07:00
Marten Seemann
f1ada87dcf
make the protocol package internal
2017-08-30 00:19:44 +07:00