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