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
Marten Seemann
25847cfc30
handle the crypto stream separately in the packet packer
2018-10-01 11:25:57 -07:00
Marten Seemann
f68621485f
simplify splitting of STREAM frames for retransmissions
2018-09-28 22:56:45 -06:00
Marten Seemann
06db39836b
move queueing of control frames to the framer
2018-09-28 21:04:57 -06:00
Marten Seemann
9f5bfbe292
handle the transport parameters in the packet packer
2018-09-28 15:21:29 -06:00
Marten Seemann
7034481d9e
get ACK and STOP_WAITING frames in the packet packer
2018-09-28 09:51:05 -06:00
Marten Seemann
c476eaf019
move determining the maximum packet size to a separate function
2018-09-28 09:28:45 -06:00
Marten Seemann
641ab6390f
append STREAM frames to the slice of frames when packing a packet
2018-09-28 09:28:45 -06:00
Marten Seemann
01100c56df
implement packing of packets for gQUIC 44
2018-08-28 08:49:29 +07:00
Marten Seemann
f88b7bb175
implement the new Retry mechanism
2018-08-13 08:47:29 +07:00