Marten Seemann
3e03055a7d
use varint packet numbers in IETF QUIC headers
2018-06-06 16:07:47 +02:00
Marten Seemann
5142b73ac3
Merge pull request #1370 from lucas-clemente/client-header-parsing
...
parse headers sent by the server without knowing the version
2018-05-29 16:43:52 +08:00
Marten Seemann
372463db49
don't pass the client's version to the header parser
2018-05-21 11:27:15 +08:00
Marten Seemann
797dfa57a1
disable 6 byte packet number in Public Headers
...
Chrome never sends 6 byte packet numbers in Public Headers.
2018-05-21 11:26:08 +08:00
Marten Seemann
5f5bb1f700
allow empty STREAM frames at arbitrary offsets
2018-05-11 11:08:08 +09:00
Marten Seemann
8f2fed1b10
parse IETF headers independent of the sender's perspective
...
The IETF header format allows parsing of the header without knowing
which peer sent the packet.
2018-05-09 13:28:30 +09:00
Marten Seemann
683b5823e4
handle gQUIC and IETF QUIC packets separately in the client
2018-05-08 15:17:16 +09:00
Marten Seemann
94c48d371a
indent header log entries using tabs, not spaces
2018-05-07 09:11:34 +09:00
Marten Seemann
1b9ac93c13
Merge pull request #1331 from lucas-clemente/fix-1330
...
set the ACK frame delay time when generating the frame
2018-05-05 14:23:50 +09:00
Marten Seemann
b83a4c069d
improve logging of ACK frames with ranges
2018-05-01 11:40:10 +09:00
Marten Seemann
ee968aff67
set the ACK frame delay time when generating the frame
2018-04-30 21:50:33 +09:00
Lucas Clemente
0d8f0be92b
Fix unnecessary stack growth when parsing frames
2018-04-30 10:28:18 +02:00
Marten Seemann
596ef35a80
implement parsing and writing of the Payload Length Long Header field
2018-04-23 17:39:03 +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
b1de5df2f8
Merge pull request #1311 from lucas-clemente/fix-1302
...
limit the size of the ACK frame
2018-04-23 17:23:52 +09:00
Marten Seemann
cb0395ae37
Merge pull request #1316 from lucas-clemente/fix-1310
...
implement PATH_CHALLENGE and PATH_RESPONSE frames
2018-04-23 17:13:39 +09:00
Marten Seemann
126de06cc0
Merge pull request #1320 from lucas-clemente/fix-vnp-logging
...
fix logging of version negotiation packets
2018-04-23 17:00:25 +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
4891b65c4b
refactor calculation of ACK ranges into a separate function
2018-04-23 16:44:38 +09:00
Marten Seemann
108e574581
implement parsing and writing of the PATH_RESPONSE frame
2018-04-23 16:41:06 +09:00
Marten Seemann
f53f3eee9f
implement parsing and writing of the PATH_CHALLENGE frame
2018-04-23 16:41:06 +09:00
Marten Seemann
804eac7348
fix logging of version negotiation packets
2018-04-23 16:37:59 +09:00
Marten Seemann
cd359ec5e0
change the type byte of the IETF ACK frame from 0x0e to 0x0d
2018-04-23 15:57:50 +09:00
Marten Seemann
fae32101a0
use different source and destination connection IDs
2018-04-23 15:23:01 +09:00
Marten Seemann
c1d8c8940e
Merge pull request #1306 from lucas-clemente/new-header
...
implement the new IETF QUIC packet header
2018-04-19 18:15:15 +09:00
Marten Seemann
1ec873f917
use binary search to check if an ACK acks a packet
2018-04-19 17:36:12 +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
52d31dd7ef
implement the new header format
...
Currently, we're only sending and accepting packets with matching source
and destination connection IDs.
2018-04-19 13:46:54 +09:00
Marten Seemann
1a035a265c
change the type of Connection ID to byte slice
2018-04-18 22:41:24 +09:00
Marten Seemann
52c3e6e863
remove the {Lowest, Largest}Acked from the ACK frame
...
All ACK ranges are now saved in the AckRanges slices. This eliminates a
bunch of special cases for ACKs that don't report any packets missing.
2018-04-18 13:19:42 +09:00
Marten Seemann
7de877fc3f
remove duplicate test cases for the legacy ACK frame
2018-04-18 12:25:26 +09:00
Marten Seemann
ca896f953a
rename AckRange.{First, Last} to AckRange.{Smallest, Largest}
2018-04-18 12:25:26 +09:00
Marten Seemann
948eef3e42
create a logger interface and use it everywhere
2018-04-04 13:03:28 +07:00
Marten Seemann
1e9b3f0bb2
simplify writing of the gQUIC Version Negotiation Packet
2018-04-04 13:03:22 +07:00
Marten Seemann
30c948a2fd
allow empty STREAM frames at offset 0
2018-03-29 12:43:59 +07:00
Marten Seemann
be066e825c
privatize the frame parsing functions
2018-03-25 18:07:49 +02:00
Marten Seemann
21b608daac
move frame parsing to the wire package
2018-03-25 18:07:44 +02:00
Marten Seemann
6ccc76a130
send packets with maximum IPv4 and IPv6 packet size
2018-03-09 22:36:44 +07:00
Marten Seemann
5c98332e90
implement ACK decimation
...
ACK generation closely follows Chrome's QuicConnection::MaybeQueueAck()
in ACK_DECIMATION_WITH_REORDERING mode.
2018-03-05 19:56:19 +07:00
Marten Seemann
b6ca910a52
implement the IETF draft 10 header changes
2018-03-05 19:13:37 +07:00
Marten Seemann
d9e670b03a
remove TODO in Public Header regarding the div nonce bit for clients
...
The Public Header will not change before the switch to IETF QUIC.
We will have to accept the wrong bit in the client Public Header.
2018-03-02 16:44:23 +07:00
Marten Seemann
2ab2baf4bc
don't send greased version numbers for gQUIC
2018-02-25 23:19:52 +08:00
Marten Seemann
86e57706df
run gofmt -s
2018-02-23 23:38:08 +08:00
Marten Seemann
81974d30d6
run gosimple in gometalinter
2018-02-23 22:42:32 +08:00
Marten Seemann
c3ec497a2e
run unconvert in gometalinter
2018-02-23 22:42:22 +08:00
Marten Seemann
11af98e338
run misspell in gometalinter
2018-02-23 22:39:08 +08:00
Marten Seemann
a4bc7362e0
fix IETF Version Negotiation Packet, it doesn't have a packet number
2018-02-23 14:20:47 +08:00
Marten Seemann
ce01e99ba1
log version negotiation packets
2018-02-21 14:55:33 +08:00
Marten Seemann
80969de93f
fix splitting of STREAM frames for IETF QUIC
...
Move splitting of STREAM frames from the quic package to the wire
package.
2018-02-05 12:02:58 +08:00
Marten Seemann
5974c6c113
correctly determine the length of STREAM frames for IETF QUIC
...
The length of the data has an influence on the length of the frame (if
it contains the data length), and the length can either consume 1 or 2
bytes due to variable length encoding.
2018-02-05 12:02:49 +08:00