Marten Seemann
a303ad9745
always send ACKs in the correct packet number space
2019-01-11 11:12:07 +07:00
Marten Seemann
5ccc367462
start ignoring packets in ACK frames only after the handshake completed
2019-01-11 10:52:39 +07:00
Marten Seemann
9025133936
remove unneeded check for decryption errors in session
2019-01-06 17:34:24 +07:00
Marten Seemann
131f561be0
don't close the session when unpacking a packet fails
...
Before a packet is successfully authenticated, we can't be sure if this
is a packet that was injected by an attacker. If any error occurs before
authenticating the packet, we should just drop it.
2019-01-03 18:53:43 +07:00
Marten Seemann
855b643c7c
move frame parsing to the session
...
This way, we can handle every parsed frame directly, and avoid
allocating a slice of parsed frames.
2019-01-03 18:53:36 +07:00
Marten Seemann
05645b546c
remove special case for Retry packets from the session
...
Retry packets are never passed to the session, so there's no need to
handle them there.
2019-01-03 18:52:32 +07:00
Marten Seemann
3691a18849
Merge pull request #1692 from lucas-clemente/unify-tlp-and-rto
...
unify TLP and RTO
2019-01-03 10:07:00 +07:00
Marten Seemann
77d48248ff
unify TLP and RTO
...
This doesn't yet implement the persistent congestion detection, since
the specification of that still is in flux.
2019-01-01 09:53:09 +07:00
Marten Seemann
b32fb438af
make putting back packet buffers a member function of packetBuffer
2019-01-01 09:50:35 +07:00
Marten Seemann
767dbdd545
put back packet buffers after processing a packet
...
This introduces a reference counter in the packet buffer, which will be
used to process coalesced packets.
2019-01-01 09:50:29 +07:00
Marten Seemann
be4bdbfad9
remove the encryption level from the packed packet struct
...
This was only needed in gQUIC. In IETF QUIC, We can always derive the
encryption level from the header type when needed.
2018-12-30 12:37:04 +07:00
Marten Seemann
178ac0dacb
keep increasing the packet number after version negotiation and retry
2018-12-22 22:15:35 +06:30
Marten Seemann
f9218444a9
use a separate function to close the session after VN and retry
2018-12-21 23:47:10 +06:30
Marten Seemann
74d8a2bd7d
ignore 0-RTT packets
2018-12-20 15:25:04 +06:30
Marten Seemann
d6c304610d
only queue packets for decryption if the opener is not yet available
2018-12-20 15:24:56 +06:30
Marten Seemann
d535340d0c
only initialize the framer once
2018-12-18 15:45:40 +06:30
Marten Seemann
aaea375fb6
move parsing of the extended header to the unpacker
2018-12-14 16:46:40 +06:30
Marten Seemann
c912860a94
don't explicitely pass the header binary to the unpacker
2018-12-14 16:46:40 +06:30
Marten Seemann
ce6b9f2f1d
save the decoded packet number on the unpacked packet
2018-12-14 16:46:40 +06:30
Marten Seemann
a8e5309cd1
move packet number decoding to the unpacker
2018-12-14 16:46:40 +06:30
Marten Seemann
c06a0ca037
rename InferPacketNumber to DecodePacketNumber
...
That's how it's called in the draft.
2018-12-14 16:46:40 +06:30
Marten Seemann
a009217ee4
fix logging of packet size
2018-12-14 16:46:40 +06:30
Marten Seemann
723e18c78c
don't treat handshake retransmissions separately
2018-11-29 09:39:43 +07:00
Marten Seemann
aba2c3d031
remove all references to Public Resets in comments
2018-11-28 11:58:05 +07:00
Marten Seemann
198a2a8a04
Merge pull request #1641 from lucas-clemente/remove-rcv-time-in-session
...
only set the receive time of a packet once
2018-11-27 17:23:56 +07:00
Marten Seemann
6d08cf336e
only set the receive time of a packet once
...
We already set the time in the packetHandlerMap.
2018-11-27 16:08:31 +07:00
Marten Seemann
faed2ba30a
remove version dependency of packet number inferring
2018-11-26 22:46:08 +07:00
Marten Seemann
c5ca6fd7e5
parse the extended header in the session
2018-11-26 15:57:54 +07:00
Marten Seemann
9bcedd988d
move parsing of version negotiation packets to the wire.Header
2018-11-26 15:57:54 +07:00
Marten Seemann
5581fee684
don't log the packet number for undecryptable packets
...
The packet number will be covered by header encryption, so we won't be
able to read it if a packet is undecryptable.
2018-11-26 15:57:54 +07:00
Marten Seemann
bf96707f48
rename the wire.Header to ExtendedHeader
...
It's not encrypted yet.
2018-11-26 15:57:54 +07:00
Marten Seemann
a3f91d3c98
remove the lastRcvdPacketNumber from the session
...
This variable was only used to pass the packet number an ACK was
received with to the SentPacketHandler. The better way to do this is by
passing the value to handleAckFrame() directly.
2018-11-26 08:47:02 +07:00
Marten Seemann
6c7fbc4a79
remove special case for testing when receiving packets in the session
2018-11-19 15:08:08 +07:00
Marten Seemann
65cca7b726
immediately remove sessions that were closed remotely
...
We only need to keep sessions that were closed locally, in order to
retransmit the CONNECTION_CLOSE packet. For sessions that were closed by
the peer, we don't need to wait for any more packets, and there's also
no CONNECTION_CLOSE to retransmit. The same applies for sessions that
were destroyed when receiving a Version Negotiation or a Retry packet.
2018-11-16 21:22:32 +07:00
Marten Seemann
a3831b2134
rename removing of connection IDs to retiring
2018-11-16 21:22:32 +07:00
Marten Seemann
9d06b2cfff
retransmit the CONNECTION_CLOSE packet when late packets arrive
2018-11-15 16:52:02 +07:00
Marten Seemann
42edcf6258
implement the RETIRE_CONNECTION_ID frame
2018-11-13 17:21:19 +07:00
Marten Seemann
2021a21916
implement the NEW_CONNECTION_ID frame
2018-11-13 17:21:14 +07:00
Marten Seemann
cf104db629
implement parsing and writing of the NEW_TOKEN frame
2018-11-12 23:37:44 +07:00
Marten Seemann
190d1dcc59
Merge pull request #1595 from lucas-clemente/fix-1529
...
authenticate retries
2018-11-12 18:00:22 +07:00
Marten Seemann
c37b698f68
Merge pull request #1596 from lucas-clemente/internalize-errors
...
internalize the qerr package
2018-11-12 15:54:39 +07:00
Marten Seemann
3ffea5d8c4
internalize the qerr package
2018-11-11 12:44:16 +07:00
Marten Seemann
70cb67bd2a
check that the server sends the correct original_connection_id
2018-11-11 11:00:40 +07:00
Marten Seemann
73ca6a06eb
encode the original connection ID into the cookie
2018-11-10 17:12:50 +07:00
Marten Seemann
dd9ce2e668
replace the STREAM_ID_BLOCKED with the STREAMS_BLOCKED frame
2018-11-10 09:38:57 +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
05ecf9bc02
rename the STREAM_BLOCKED frame to STREAM_DATA_BLOCKED
2018-11-10 09:05:27 +07:00
Marten Seemann
387613aa20
rename the BLOCKED from to DATA_BLOCKED
2018-11-10 09:05:06 +07:00
Marten Seemann
022189dfda
rename the RST_STREAM frame to RESET_STREAM frame
2018-11-04 12:26:02 +07:00