Commit graph

217 commits

Author SHA1 Message Date
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
Marten Seemann
cf957bb3d0 pad small packets, such that len(packet number) + len(payload) >= 4 2018-11-29 11:22:20 +07:00
Marten Seemann
05434fecbc always use 4 byte packet numbers for long header packets
When retransmitting a long header packet, we never have to split CRYPTO
frames, since the header is guaranteed to have the same size.
2018-11-29 09:39:43 +07:00
Marten Seemann
723e18c78c don't treat handshake retransmissions separately 2018-11-29 09:39:43 +07:00
Marten Seemann
1b3e4e9595
Merge pull request #1647 from lucas-clemente/remove-packet-packer-cansenddata
remove unneeded check if stream data can be sent in packet packer
2018-11-28 18:10:04 +07:00
Marten Seemann
610f923f91 remove special treatment of handshake retransmissions 2018-11-28 10:57:39 +07:00
Marten Seemann
a13e45000f remove unneeded check if stream data can be sent in packet packer
We don't return the session before the handshake completes, so there
shouldn't be any stream data to send.
2018-11-28 10:34:22 +07:00
Marten Seemann
9313557b81 pad all Initial packets sent by the client 2018-11-28 10:14:47 +07:00
Marten Seemann
b740d57c61 embed the Header in the ExtendedHeader 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
6150c19dcb remove unused perspective from header writing 2018-11-26 13:43:27 +07:00
Marten Seemann
fd646ff877 include the packet number len in the length calculation for long headers 2018-11-25 14:16:28 +07:00
Marten Seemann
c81cd92daf return the packet number length when peek a new packet number 2018-11-02 17:14:31 +07:00
Marten Seemann
ebbf839fa4 move the packet number generator to the ackhandler package 2018-11-02 17:14:31 +07:00
Marten Seemann
16848038be remove unnecessary initial packet number parameter 2018-11-02 17:14:31 +07:00
Marten Seemann
716e8f2d0a remove the error return value from wire.Header.GetLength
Using an invalid packet number length would error on Header.Write(), so
it's not necessary to check this on GetLength().
2018-11-01 13:49:36 +07:00
Marten Seemann
3266e36811 drop support for gQUIC 2018-10-30 10:20:39 +07:00
Marten Seemann
e470d71c3a add ACK frames to crypto packets 2018-10-29 13:34:32 +07:00
Marten Seemann
82508f1562 use tls-tris instead of mint 2018-10-26 16:18:49 +07:00
Marten Seemann
5df98dc389 split the packet packer into two structs, for gQUIC and for IETF QUIC 2018-10-09 23:05:23 +01:00