Marten Seemann
77f5d30338
buffer writes to the crypto stream
...
mint performs a Write for every state change. This results in a lot of
small packets getting sent when using an unbuffered connection. By
buffering, we make sure that packets are filled up properly.
2018-08-13 08:47:29 +07:00
Marten Seemann
f88b7bb175
implement the new Retry mechanism
2018-08-13 08:47:29 +07:00
Marten Seemann
d8aa49d0f9
implement writing and parsing of the new Retry packet
2018-08-13 08:47:29 +07:00
Marten Seemann
e39251c8b5
implement writing and parsing of Initial packets containing a Token
2018-08-13 08:47:29 +07:00
Marten Seemann
f9c1de5779
make it possible to generate mocks of private internal interfaces
2018-08-11 14:49:49 +07:00
Marten Seemann
defafec71e
use retransmissions as TLP packets
2018-08-09 22:28:28 +07:00
Marten Seemann
bd23e1651d
Merge pull request #1472 from lucas-clemente/fix-spurious-loss-detection-alarm
...
don't do anything when OnAlarm is called, but no packets are outstanding
2018-08-09 22:27:18 +07:00
Marten Seemann
5358831604
don't do anything when OnAlarm is called, but no packets are outstanding
...
When all outstanding are acknowledged, the alarm is canceled in
updateLossDetectionAlarm. This doesn't reset the timer in the session
though. When OnAlarm is called, we therefore need to make sure that
there are actually packets outstanding.
2018-08-08 15:40:36 +07:00
Marten Seemann
ad5a3e2fa0
also use the multiplexer for the server
2018-08-08 10:03:22 +07:00
Marten Seemann
d95dc29d90
only set the largestSentBeforeRTO when sending the first RTO
2018-08-07 12:34:45 +07:00
Marten Seemann
31f2ef7d32
add some useful logging for the sentPacketHandler OnAlarm function
2018-08-07 12:34:39 +07:00
Marten Seemann
50397a979c
only send BLOCKED frames if there is more data to send
2018-07-30 05:06:11 +07:00
Marten Seemann
3d087d522c
implement parsing of ACK_ECN frames
2018-07-29 17:35:31 +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
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