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
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
b000c32796
use a mock sealing manager in the packet packer tests
2018-10-06 06:49:37 +02:00
Marten Seemann
c90b4d91d1
rename some variables in the packet packer tests
2018-10-06 06:49:37 +02: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
Marten Seemann
0bd7e744ff
implement parsing of headers with different connection ID lengths
2018-07-03 18:01:41 +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
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
3e03055a7d
use varint packet numbers in IETF QUIC headers
2018-06-06 16:07:47 +02:00
Marten Seemann
ec6118f7a0
use the connection ID provided by the server in first Handshake packet
2018-05-30 21:37:05 +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
0c014c0aff
fix deadlock when receiving two packets with diversification nonces
2018-04-24 21:14:58 +09:00
Marten Seemann
a7f550ae0f
set the payload length on Long Headers when packing packets
2018-04-23 17:41:07 +09:00
Marten Seemann
fae32101a0
use different source and destination connection IDs
2018-04-23 15:23:01 +09:00
Marten Seemann
c1d8c8940e
Merge pull request #1306 from lucas-clemente/new-header
...
implement the new IETF QUIC packet header
2018-04-19 18:15:15 +09:00
Marten Seemann
1a035a265c
change the type of Connection ID to byte slice
2018-04-18 22:41:24 +09:00
Marten Seemann
52c3e6e863
remove the {Lowest, Largest}Acked from the ACK frame
...
All ACK ranges are now saved in the AckRanges slices. This eliminates a
bunch of special cases for ACKs that don't report any packets missing.
2018-04-18 13:19:42 +09:00
Marten Seemann
6c1eba5848
generate the diversification nonce when creating the server crypto setup
2018-03-31 14:29:44 +07:00
Marten Seemann
c6526ad927
replace the SetDiversificationNonce crypto setup method by a chan
2018-03-31 14:29:44 +07:00
Marten Seemann
9d18d30931
use the peer's max_packet_size when packing packets
2018-03-10 14:27:07 +07:00
Marten Seemann
6ccc76a130
send packets with maximum IPv4 and IPv6 packet size
2018-03-09 22:36:44 +07:00
Marten Seemann
abf57a5551
calculate the packet number length in the sent packet handler
2018-03-07 15:56:18 +07:00
Marten Seemann
8fc573c895
set the packet type for handshake retransmissions
2018-03-04 22:33:10 +07:00
Marten Seemann
a1c9e706b0
omit the data length in the last STREAM frame of a retransmission
2018-02-26 22:22:21 +08:00
Marten Seemann
ca7291e8cf
send retransmission as separate packets
2018-02-26 22:22:17 +08:00
Marten Seemann
81974d30d6
run gosimple in gometalinter
2018-02-23 22:42:32 +08:00
Marten Seemann
11af98e338
run misspell in gometalinter
2018-02-23 22:39:08 +08:00
Marten Seemann
b6c41464c6
run varcheck in gometalinter
2018-02-23 22:39:08 +08:00
Marten Seemann
88da8e2e0a
retransmit Initial packets as Initial packets
2018-02-23 15:58:24 +08:00
Marten Seemann
80969de93f
fix splitting of STREAM frames for IETF QUIC
...
Move splitting of STREAM frames from the quic package to the wire
package.
2018-02-05 12:02:58 +08:00
Marten Seemann
38c420a35b
include the packet size in the error when packing a too large packet
2018-02-05 09:17:30 +08:00
Marten Seemann
3b82628dbe
internalize ackhandler and congestion
2018-02-02 08:40:56 +08:00
Marten Seemann
fbeba1f73a
make sure that at least every 20th ACK is retransmittable
...
This is important because we need to make sure that we can remove old
ACK ranges from the received packet history. The logic we implemented
before was not correct, since we only made sure that every 20th packet
would be retransmittable, but we didn't have any guarantee that this
packet would also contain an ACK frame.
2018-02-01 17:11:05 +08:00
Marten Seemann
66fd3b5195
expose the ConnectionState in the Session
...
The ConnectionState contains basic details about the QUIC connection.
2018-01-11 16:27:42 +07:00
Marten Seemann
d330fda94c
also use the onHasStreamData callback for the crypto stream
2018-01-09 17:17:16 +07:00
Marten Seemann
d9c107b034
introduce a queue of active streams in the streamFramer
...
The queue holds all streams that have data to send. When stream.Write or
stream.Close are called, a stream is added to this queue. It is removed
from the queue when all available (at that moment) data was sent.
This way, we don't need the round robin scheduling (which, for every
packet sent, asked every single open stream if it had data) any more.
2018-01-02 23:24:44 +07:00