Commit Graph

376 Commits

Author SHA1 Message Date
Marten Seemann
0bd7e744ff implement parsing of headers with different connection ID lengths 2018-07-03 18:01:41 +07:00
Marten Seemann
6e299157d4 implement the disable_migration transport parameter and use it 2018-07-02 22:18:28 +07:00
Marten Seemann
eb8ee42d75 Merge pull request #1424 from lucas-clemente/header-refactoring
refactor header parsing
2018-07-02 21:46:06 +07:00
Marten Seemann
1d5fb4cec9 Merge pull request #1426 from lucas-clemente/fix-vnp-len
fix buffer size for version negotiation packets
2018-07-02 21:27:56 +07:00
Marten Seemann
1f4335ffce fix buffer size for version negotiation packets 2018-07-01 14:06:35 +07:00
Marten Seemann
4109c85c8a refactor header parsing in a version independent and dependent part 2018-07-01 09:01:30 +07:00
Marten Seemann
95ef15c6b1 only fire the handshake alarm if handshake packets are outstanding 2018-06-30 14:30:38 +07:00
Marten Seemann
74ed3f7037 remove writing of special Public Header packets
Version Negotiation Packets and Public Resets are written separately, so
we don't need to have code for that in the Public Header.
2018-06-30 12:48:42 +07:00
Marten Seemann
7b96d158d2 remove the OmitConnectionID field from the Header struct
Instead, just look at the length of the destination connection ID.
2018-06-24 17:21:41 +07:00
Marten Seemann
fc57bf6c35 only set the destination connection ID for the Public Header 2018-06-24 16:47:59 +07:00
Marten Seemann
c1d6433d9b Merge pull request #1411 from lucas-clemente/min-initial-connid-len
drop Initial packets that have a too short Destination Connection ID
2018-06-19 20:53:25 +07:00
Marten Seemann
4633acd7bf only set the loss detection alarm if packets are outstanding 2018-06-18 10:42:45 +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
d32665af9d remove FHL2 experiment
FHL2 was an experiment in Chrome, run in Q036, which introduced HOL
blocking. This experiment is over, so we can remove the code to send a
PUBLIC_RESET when a peer initiates this experiment.
2018-06-10 17:02:06 +02:00
Marten Seemann
48ef98f641 Merge pull request #1388 from lucas-clemente/varint-packet-numbers
use varint packet numbers in IETF QUIC headers
2018-06-06 16:26:49 +02:00
Marten Seemann
3e03055a7d use varint packet numbers in IETF QUIC headers 2018-06-06 16:07:47 +02:00
Marten Seemann
bd6fd979a4 implement parsing and writing of varint packet numbers 2018-06-05 22:18:35 +02:00
Marten Seemann
63195fcb68 change the TLS extension code point 2018-06-05 15:11:49 +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
d06957b8d8 implement a prefix logger 2018-05-29 20:52:03 +08: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
60ac4b809c Merge pull request #1356 from lucas-clemente/fix-1355
allow empty STREAM frames at arbitrary offsets
2018-05-29 16:40:00 +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
d1dd2a4a60 add logging to the ackhandler 2018-05-14 11:05:37 +09: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
70f6e3651e Merge pull request #1350 from lucas-clemente/split-packet-handling
split packet handling for gQUIC and IETF QUIC packets
2018-05-09 13:22:54 +09:00
Marten Seemann
08160ab18f queue connection-level window updates from the flow controller directly
It is not sufficient to check for connection-level window updates every
time a packet is sent. When a connection-level window update needs to be
sent, we need to make sure that it gets sent immediately (i.e. call
scheduleSending() in the session).
2018-05-08 15:17:45 +09:00
Marten Seemann
2e8a5807ba queue stream-level window updates from the flow controller directly 2018-05-08 15:17:45 +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
b93827ca60 Merge pull request #1343 from lucas-clemente/log-conn-flow-control-ensure-min-increases
log all connection flow control window increases
2018-05-08 14:58:33 +09:00
Marten Seemann
5e5a4a9c77 Merge pull request #1346 from lucas-clemente/crypto-setup-logging
add some logging to the gQUIC crypto setups
2018-05-08 14:48:17 +09:00
Marten Seemann
e7f88efd2c Merge pull request #1344 from lucas-clemente/header-logging
indent header log entries using tabs, not spaces
2018-05-08 14:25:23 +09:00
Marten Seemann
924bcc5914 add some logging to the client's crypto setup 2018-05-08 14:24:38 +09:00
Marten Seemann
39757c1a1a add some logging to the server's crypto setup 2018-05-08 14:24:38 +09:00
Marten Seemann
628f878b79 Merge pull request #1342 from lucas-clemente/fix-stream-flow-control-logging
fix logging of stream flow control window increases
2018-05-08 07:25:38 +09:00
Marten Seemann
94c48d371a indent header log entries using tabs, not spaces 2018-05-07 09:11:34 +09:00
Marten Seemann
7d1f17e5d6 log all connection flow control window increases 2018-05-06 22:07:54 +09:00
Marten Seemann
a7591e2370 fix logging of stream flow control window increases 2018-05-06 21:52:41 +09:00
Marten Seemann
f29c37b951 rename the constants for the max stream ids in the transport parameters
No functional change expected.
2018-05-06 12:13:04 +09:00
Marten Seemann
a58cfd64e9 Merge pull request #1336 from lucas-clemente/congestion-in-bytes
switch to a byte-based congestion controller
2018-05-05 14:57:51 +09:00
Marten Seemann
45d5acef14 Merge pull request #1333 from lucas-clemente/acks-for-delayed-packets
don't send an ACK when receiving a packet that wouldn't be acked
2018-05-05 14:54:11 +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
bd032826ca Merge pull request #1334 from lucas-clemente/cleanup-rtt-stats
remove unused functions from the RTT stats
2018-05-05 14:17:12 +09: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
3cd6cc3e9f move the initial RTT estimate to the congestion package 2018-05-01 18:57:05 +09:00
Marten Seemann
4a7bab9ffe remove unused functions from the RTT stats
These functions are not used anywhere, and were removed from Chromium
code as well.
2018-05-01 18:50:28 +09:00
Marten Seemann
5140addd8a don't send an ACK when receiving a packet that wouldn't be acked
There's a lower bound which packets get acknowledged in an ACK frame.
When receiving a packet smaller than that bound, which was reported
missing before, it's not necessary to immediately queue an ACK, since it
wouldn't be included in the ACK frame anyway.
2018-05-01 12:32:44 +09:00