Commit graph

84 commits

Author SHA1 Message Date
Marten Seemann
448c49851b remove unused methods from the congestion interface 2019-05-13 12:11:29 +02:00
Marten Seemann
537737935c limit the ACK delay by max_ack_delay 2019-05-08 14:34:56 +09:00
Marten Seemann
4f6d0e651a implement HTTP/3 2019-04-11 09:06:10 +09:00
Marten Seemann
09574a6653 expose the tls.ConnectionState 2019-03-31 23:56:24 +09:00
Marten Seemann
5e34cb1d71 run go generate ./... 2019-03-05 13:42:56 +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
17f4ebad64 handle Retry packets in the session 2019-02-04 15:38:47 +08:00
Marten Seemann
bfbf0bca48 always queue window updates when data is being read
There's no need to have a separate call in the flow controller interface
for this.
2019-01-22 23:46:12 +07:00
Marten Seemann
a303ad9745 always send ACKs in the correct packet number space 2019-01-11 11:12:07 +07:00
Marten Seemann
5a68ba0a02 implement header encrytion and decryption for sealers and openers 2018-12-14 16:46:40 +06:30
Marten Seemann
67f923c736 return the Opener from the crypto setup 2018-12-14 16:46:40 +06:30
Marten Seemann
a80ca960e5 refactor initialization of the initial AEAD 2018-12-13 13:51:05 +06:30
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
3266e36811 drop support for gQUIC 2018-10-30 10:20:39 +07:00
Marten Seemann
82508f1562 use tls-tris instead of mint 2018-10-26 16:18:49 +07:00
Marten Seemann
b000c32796 use a mock sealing manager in the packet packer tests 2018-10-06 06:49:37 +02:00
Marten Seemann
f88b7bb175 implement the new Retry mechanism 2018-08-13 08:47:29 +07:00
Marten Seemann
f9c1de5779 make it possible to generate mocks of private internal interfaces 2018-08-11 14:49:49 +07:00
Marten Seemann
defafec71e use retransmissions as TLP packets 2018-08-09 22:28:28 +07:00
Marten Seemann
50397a979c only send BLOCKED frames if there is more data to send 2018-07-30 05:06:11 +07:00
Marten Seemann
08160ab18f queue connection-level window updates from the flow controller directly
It is not sufficient to check for connection-level window updates every
time a packet is sent. When a connection-level window update needs to be
sent, we need to make sure that it gets sent immediately (i.e. call
scheduleSending() in the session).
2018-05-08 15:17:45 +09:00
Marten Seemann
2e8a5807ba queue stream-level window updates from the flow controller directly 2018-05-08 15:17:45 +09:00
Marten Seemann
2b97fb41c9 switch to a byte-based congestion controller
Chrome removed the packet-based congestion controller and switched to
byte-based as well.
2018-05-02 23:45:23 +09:00
Marten Seemann
2b9b949855 move calculation of RTO delay to the sent packet handler 2018-04-16 11:18:14 +09:00
Marten Seemann
fed3bf503e keep track of which packets were sent as retransmissions
When an ACK for a packet that was retransmitted arrives, we don't need
to retransmit the retransmission, even if it was lost.
2018-03-16 16:54:39 +01:00
Marten Seemann
56720edc34 report retransmissions separately to the sent packet handler 2018-03-14 11:15:52 +01:00
Marten Seemann
b5977236ff implement packet send modes to determine what kind of packets are sent 2018-03-13 14:49:48 +01:00
Marten Seemann
abf57a5551 calculate the packet number length in the sent packet handler 2018-03-07 15:56:18 +07:00
Marten Seemann
2d64953e0e remove incorrect error check when sending a packet
There's no need for a check if more than protocol.MaxTrackedSentPackets
packets were sent. There are certain situations where we allow (via
SendingAllowed()) sending of more packets, and we shouldn't throw an
error when the session then actually sends these packets.
2018-03-05 17:08:18 +07:00
Marten Seemann
3b82628dbe internalize ackhandler and congestion 2018-02-02 08:40:56 +08:00
Marten Seemann
1cc209e4fb update mint, and adapt to the new use of the extension handler 2018-02-02 08:18:29 +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
9ef3a47da5 send multiple packets at once, if the pacing delay is very small
This is an optimization to avoid waking of the run loop every couple of
microseconds.
2018-01-23 09:13:44 +11:00
Marten Seemann
5ef89733ae implement packet pacing 2018-01-21 14:27:37 +11:00
Marten Seemann
f33243fb41
Merge pull request #1114 from lucas-clemente/connection-state
expose the ConnectionState in the Session
2018-01-12 17:09:52 +07:00
Marten Seemann
9b3139a1d6 use the packet receive time in the receivedPacketHandler
By passing the packet receive time to the receivedPacketHandler we can
get rid of two time.Now() syscalls.
2018-01-12 11:30:39 +07: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
f8e5a13c7d use a gomock congestion in tests 2018-01-09 16:42:44 +07:00
Marten Seemann
5371f804f8 don't report blocked streams as active for sending data 2018-01-03 00:18:33 +07:00
Marten Seemann
15ab0ae443 add a HasWindowUpdate method to the stream flow controller 2017-12-21 18:58:55 +07:00
Marten Seemann
d4f904b55b regenerate all gomocks after gomock output format was changed
No functional change expected.
2017-12-21 17:30:51 +07:00
Marten Seemann
f2a6c25124 remove unneeded mockgen command 2017-12-21 13:38:13 +07:00
Marten Seemann
d2e31c04ab generate the streamI mock in the quic package
By doing so, we can mock private methods of the stream, so they cannot
be type-asserted by users of quic-go.
2017-12-20 10:42:07 +07:00
Marten Seemann
092908d3e0 simplify sending of (connection-level) BLOCKED frames 2017-12-20 10:23:17 +07:00
Marten Seemann
d49ad2d0cc queue STREAM_BLOCKED frames from the stream, when popping a STREAM frame 2017-12-20 10:23:01 +07:00
Marten Seemann
a0c4e28485 send and handle STOP_SENDING frames (for IETF QUIC) 2017-12-16 09:30:07 +07:00
Marten Seemann
d0b22e3439 refactor stream to support canceling Read and Write 2017-12-16 09:10:24 +07:00
Marten Seemann
bb093d82f1
Merge pull request #1025 from lucas-clemente/fix-964
ignore STOP_WAITINGs, derive lower bound for packets to include in ACK
2017-12-14 19:38:28 +07:00
Marten Seemann
8e0060c51b ignore STOP_WAITINGs, derive lower bound for packets to include in ACK 2017-12-14 19:23:06 +07:00