Marten Seemann
09e16b7602
add the APPLICATION_ERROR, use it in CONNECTION_CLOSE frames
2020-03-21 10:56:36 +07:00
Marten Seemann
0ef4f06189
move the transport parameters from the handshake to the wire package
2020-03-13 16:20:11 +07:00
Marten Seemann
9c917fdb39
pad short Long Header packets to 4 bytes
...
This is required for header protection to work.
2020-03-02 21:46:35 +07:00
Marten Seemann
fb65a017ac
use shorter packet numbers on Long Header packets
2020-02-26 11:26:15 +07:00
Marten Seemann
2ea6a294a9
send the CONNECTION_CLOSE in all available encryption levels
2020-02-25 17:10:44 +07:00
Marten Seemann
ebe3c1cca4
pad the client's Initial packets outside of the QUIC packet
...
This allows us to send coalesced packets of Initial and 0-RTT.
2020-02-24 13:57:54 +07:00
Marten Seemann
7a532326ec
don't pack ACK frames in the second part of a coalesced packet
...
This prevents a possible overflow of the maximum packet size if the ACK
frames ends up being really large.
2020-02-20 16:42:58 +07:00
Marten Seemann
db7fc0eb02
simplify packing of Initial and Handshake packets
2020-02-20 16:42:58 +07:00
Marten Seemann
29b784e782
rename packet packing functions in the packet packer
2020-02-20 16:42:58 +07:00
Marten Seemann
5aad7cae5d
send coalesced packets
2020-02-20 16:42:56 +07:00
Marten Seemann
d642bf9098
simplify content storage in packed packets
...
It's not necessary to store both the packetBuffer and the slice
containing the raw data in the packet.
2020-02-20 16:25:54 +07:00
Marten Seemann
077504f557
refactor sealing of packets
2020-02-20 16:19:08 +07:00
Marten Seemann
a4b4d52063
refactor packing of packets before and after the handshake is confirmed
2020-02-20 16:19:08 +07:00
Marten Seemann
b031615db5
export a qlog when the session's run loop stops
2020-02-12 10:42:37 +07:00
Marten Seemann
afbf5efd01
don't force 0-RTT packets to use 4 byte packet numbers
2020-01-01 18:04:02 +04:00
Marten Seemann
c79dfe77b8
implement packing of 0-RTT packets
2020-01-01 18:04:02 +04:00
Marten Seemann
fbbe225719
implement a function to pack probe packets
2019-11-12 11:27:30 +07:00
Marten Seemann
5f14b03135
refactor packet packer
2019-11-12 11:27:30 +07:00
Marten Seemann
772ffd3d20
use the connection ID manager to save the destination connection ID
2019-11-05 10:59:21 +07:00
Marten Seemann
ab2b26a5cb
add the unparam linter
2019-09-17 13:44:05 +07:00
Marten Seemann
f49451ce3c
queue lost STREAM frames in the stream's retransmission queue
2019-08-31 17:36:16 +07:00
Marten Seemann
e622207822
assemble ackhandler.Frames, not wire.Frames, when packing a packet
2019-08-31 17:34:54 +07:00
Marten Seemann
1d392b4276
retransmit frames instead of packets
2019-08-29 15:00:10 +07:00
Marten Seemann
515c21dd1d
simplify splitting of STREAM frames
2019-08-29 11:15:59 +07:00
Marten Seemann
0c85e0eab9
remove unused PacketType field from the ackhandler.Packet
2019-08-21 14:49:00 +07:00
Marten Seemann
9221149194
simplify how the largest acked is passed to the ackhandler
2019-08-21 14:40:38 +07:00
Marten Seemann
fc77dee22d
add a bug check for consistent payload length in the packet packer
2019-08-10 14:57:39 +07:00
Marten Seemann
1f950da751
fix calculation of the length of retransmitted STREAM frames
2019-08-10 14:57:13 +07:00
Marten Seemann
0ce749b5f1
pack ACK-only packets for all encryption levels
2019-07-01 07:19:47 +07:00
Marten Seemann
5a9c593463
rename the KeyPhase to KeyPhaseBit
2019-06-30 17:36:09 +07:00
Marten Seemann
0333f424bb
Merge pull request #1959 from lucas-clemente/optimize-crypto-packet-sending
...
optimize sending of crypto packets
2019-06-29 00:03:12 +08:00
Marten Seemann
c3142f9dc3
only try packing crypto packets before the handshake is confirmed
2019-06-25 14:31:34 +08:00
Marten Seemann
d6d1286d91
remove stray error check in packet packer
2019-06-23 14:00:26 +08:00
Marten Seemann
b2d3ef691e
use separate sealer interfaces for long and short header packets
2019-06-22 20:01:18 +08:00
Marten Seemann
c503769bcd
use separate functions per encryption level to get sealers
2019-06-22 20:01:18 +08:00
Marten Seemann
8094665d1e
remove outdated comment in packet packer
2019-05-29 08:31:44 +01:00
Marten Seemann
dba964f735
fix packing of maximum-size packets
2019-04-27 00:35:55 +09:00
Marten Seemann
f112edd894
handle ACK frames separately when packing packets
2019-04-22 12:45:53 +09:00
Marten Seemann
3d22d56ed8
refactor how padding is added in the packet packer
2019-04-22 12:44:51 +09:00
Marten Seemann
109bb3fe62
pass the length of the packet being packet around in the packet packer
2019-04-22 10:26:11 +09:00
Marten Seemann
5d999f3927
handle ACKs separately in the sent packet handler packet struct
2019-04-21 20:47:27 +09:00
Marten Seemann
b5336be518
rename retransmittable to ack-eliciting
2019-04-12 13:25:39 +09:00
Marten Seemann
ef55a44bdb
restart the idle timeout when sending the first retransmittable packet
2019-03-08 17:32:50 +09:00
Marten Seemann
f6642ff948
use separate packet number spaces for sending packets
...
Packet numbers now start at 0 for every packet number spaces.
Furthermore, an ACK frame now only acknowledges packets in the packet
number space it was sent in.
2019-02-11 20:13:05 +08:00
Marten Seemann
7a7e7ca6eb
add a function to pass the retry token to the packet packer
2019-02-02 09:24:37 +08:00
Marten Seemann
a303ad9745
always send ACKs in the correct packet number space
2019-01-11 11:12:07 +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
e3d2c81729
simplify packing of packets
2018-12-30 12:41:30 +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
a638185f97
apply header encryption when packing and unpacking packets
2018-12-14 21:34:00 +06:30