Commit Graph

548 Commits

Author SHA1 Message Date
Marten Seemann
60f5c660c6 export flow control window sizes as uint64 in quic.Config 2017-08-31 16:37:03 +07:00
Marten Seemann
95a971f322 make the flow control package internal 2017-08-30 00:27:44 +07:00
Marten Seemann
f1ada87dcf make the protocol package internal 2017-08-30 00:19:44 +07:00
Marten Seemann
524ecb5827 move the Public Reset to the wire package 2017-08-29 23:58:27 +07:00
Marten Seemann
ed522ebbce make wire an internal package 2017-08-29 23:51:56 +07:00
Marten Seemann
1794636220 more the PublicHeader to the wire package 2017-08-29 23:45:38 +07:00
Marten Seemann
88afad8722 rename package frames to wire 2017-08-29 23:27:15 +07:00
Marten Seemann
5152019554 don't use an idle timeout before the handshake has completed
This simplifies the timeout logic a bit. Before the handshake has
completed, the only timeout is the handshake timeout. After the
handshake has completed, the only timeout is the idle connection timeout.
2017-08-29 15:47:56 +07:00
Marten Seemann
71e82677e1 add a quic.Config option to configure the idle timeout 2017-08-28 17:58:39 +07:00
Marten Seemann
e398d5409a set the idle timeout during the handshake to half the handshake timeout 2017-08-28 17:58:39 +07:00
Marten Seemann
6bdd782a4b don't queue ACKs for non-retransmittable packets for QUIC >= 39
From QUIC 39 on, the peer is required to send a retransmittable packet
when it wishes to receive an ACK.
2017-08-23 16:00:48 +07:00
Marten Seemann
79bb3a9bd3 force sending of a retransmittable packet every 20 packets 2017-08-23 16:00:48 +07:00
Marten Seemann
dd0daaaf1e implement version-dependent parsing of the Public Header 2017-08-23 16:00:45 +07:00
Marten Seemann
be338c8389 send a Public Reset when receiving the NSTP tag in the CHLO
We currently don't support the no STOP_WAITING experiment.
2017-08-10 20:26:31 +07:00
Marten Seemann
01baba83a5 don't pass the STOP_WAITING to the receivedPacketHandler
Only pass the LeastUnacked. This makes easier to remove STOP_WAITINGs
later.
2017-08-10 20:23:10 +07:00
Marten Seemann
e02f5d5fbe replace Session.WaitUntilClosed() by a context 2017-08-02 11:27:44 +07:00
Marten Seemann
7341282f27 don't send PINGs before the handshake is completed 2017-07-12 11:14:03 +07:00
Marten Seemann
58899d0e02 Merge pull request #729 from lucas-clemente/fix-34
implement receiving of Public Resets for the client
2017-07-11 21:00:14 +07:00
Marten Seemann
4898f4205c properly put back the packet buffer when sending a packet fails 2017-07-11 18:43:27 +07:00
Marten Seemann
1d120f5ea1 remove unneeded check for nil packets in session.sendConnectionClose
This was needed when logic in the packet packer was a lot more
complicated. Now that packing a CONNECTION_CLOSE is a separate code
path, this check isn't needed anymore.
2017-07-11 18:43:27 +07:00
Marten Seemann
6973d71697 remove unneeded if statement in session.logPacket 2017-07-11 18:43:27 +07:00
Marten Seemann
c80bd6ff2c introduce a session.closeRemote, simplify error handling 2017-07-11 17:48:42 +07:00
krish7919 (Krish)
755dedf1ff Add keepalive support for clients in quic.Config
Fixes #525.
2017-07-05 20:29:28 +02:00
Marten Seemann
a851aaacda remove the tls.Config from the quic.Config
The tls.Config now is a separate parameter to all Listen and Dial
functions in the quic package.
2017-07-03 22:12:09 +02:00
Lucas Clemente
627b762421 Simplify RPH ack alarm to be in line with the SPH alarm 2017-06-21 13:58:41 +02:00
Lucas Clemente
a0aba76df9 QueueControlFrameForNextPacket -> QueueControlFrame 2017-06-21 11:16:28 +02:00
Lucas Clemente
3300b6cef0 Store ackframe along with swf in the packet packer 2017-06-21 11:16:28 +02:00
Lucas Clemente
efc9ec5051 Add packer.SetLeastUnacked and remove the parameter from the Pack* functions 2017-06-21 11:16:28 +02:00
Lucas Clemente
4064c75d97 Minor cleanups of session.Send, no functional change 2017-06-21 11:16:28 +02:00
Lucas Clemente
ff8c75a22e Send ACKs and SWFs even if we are congestion limited
Fixes #576.
2017-06-20 23:41:36 +02:00
Lucas Clemente
fc8d937fce Move calls to GetWindowUpdate out of the send loop 2017-06-20 23:41:36 +02:00
Lucas Clemente
cbb640b093 Don't pass the stop waiting frame to the packer as a parameter 2017-06-20 10:25:45 +02:00
Lucas Clemente
495399ede6 Remove PackPacket's control frames parameter
With this change it would theoretically be possible for outdated control frames to be sent, but this is quite unlikely in practice.
2017-06-20 10:25:45 +02:00
Lucas Clemente
472f2b24c0 Don't call OnAlarm() if no alarm is set 2017-06-19 16:13:09 +02:00
Lucas Clemente
833da82726 Move retransmittable frame logic to the ackhandler package 2017-06-19 14:10:17 +02:00
Marten Seemann
2a2375f787 log undecrytable packets after the handshake 2017-06-16 15:00:48 +02:00
Marten Seemann
248bec97f9 log connection ID for sent packets 2017-06-16 15:00:48 +02:00
Marten Seemann
cd02cc8f0f add a method to the session that blocks until it is closed 2017-06-16 11:13:40 +02:00
Lucas Clemente
23bad71d92 Don't retransmit handshake packets once the handshake is complete
Fixes #663.
2017-06-14 16:36:35 +02:00
Thomas De Keulenaer
4fa7b9e569 Let server and client fill the flow variables 2017-06-13 16:42:06 +02:00
Thomas De Keulenaer
89f96d1e89 Make max flow control windows configurable 2017-06-13 15:52:51 +02:00
Marten Seemann
9a55fe234f Merge pull request #648 from lucas-clemente/internalize-utils
make utils an internal package
2017-06-11 11:54:49 +02:00
Lucas Clemente
80f87e2fab Fix formatting 2017-06-10 15:33:07 +02:00
Marten Seemann
c0b09c8646 make utils an internal package 2017-06-09 22:28:40 +02:00
Lucas Clemente
e43b91f633 Fix encryption of stream data
This commit splits up handling of the crypto stream and the other streams in the framer, crypto setup, and the packer.

- Crypto stream data is handled separately and should never be sent unencrypted or FW-secure. Fixes #544.
- Non-crypto stream data is only sent with FW encryption on the server and only with non-FW or FW encryption on the client. Fixes #611.

The crypto stream is current excluded from flow control (#657), but that shouldn't be an issue in practice for now.
2017-06-09 19:12:10 +02:00
Lucas Clemente
7c1ef9c340 Merge pull request #655 from lucas-clemente/mocks
Generate some mocks using gomock
2017-06-09 19:11:25 +02:00
Lucas Clemente
eeb2d8d821 Mock FlowControlManager using gomock 2017-06-08 16:06:31 +02:00
Marten Seemann
14fa2dc7dd accept duplicate and delayed packets
We used to reject duplicate and packets with packet numbers lower than
the LeastUnacked we received in a STOP_WAITING frame, because we didn't
accept overlapping stream data. For all other frames, duplicates never
were an issue. Now that we accept overlapping stream data, there's no
need to reject those packets, in fact, processing a delayed packet will
be beneficial for performance.
2017-06-08 15:41:16 +02:00
Lucas Clemente
1311629830 Remove unnecessary error return value in newStream 2017-06-08 11:09:11 +02:00
Lucas Clemente
d62703fc15 Extract timer wrapper out of the session 2017-06-07 20:07:16 +02:00