Marten Seemann
e20fdf43ef
Merge pull request #867 from lucas-clemente/fix-828
...
improve garbage collection of stream
2017-10-03 11:55:54 -07:00
Marten Seemann
6874ff7b41
Merge pull request #866 from lucas-clemente/fix-856
...
handle version negotiation in the TLS handshake
2017-10-03 11:26:53 -07:00
Marten Seemann
0ffb64b5d7
rename the IdleConnectionStateLifetime to RemoteIdleTimeout
2017-10-03 10:48:08 -07:00
Marten Seemann
a8b603b7bf
don't negotiate the idle timeout
...
The idle timeout doesn't need to be negotiated, simply announcing it to
the peer is sufficient. We now close the session if there's no incoming
network activity for the duration of the local idle timeout, and we
send a PING frame after half the remote idle timeout (if keep alives are
enabled).
2017-10-02 18:16:27 -07:00
Marten Seemann
709eec55b5
improve garbage collection of stream
...
This removes the Iterate method of the streamsMap, and moves the garbage
collection of closed streams from the session to the streamsMap.
2017-10-03 04:04:21 +08:00
Marten Seemann
a136ceffeb
implement the validation of the version negotiation for the client
2017-10-02 13:51:38 +07:00
Marten Seemann
a2988bce8d
send versions in ClientHello and EncryptedExtensions TLS parameters
...
It only sends the right values now, but doesn't yet perform any
validation.
2017-10-02 12:50:17 +07:00
Marten Seemann
6f3d3919df
use separate constructors for client and server for the TLS crypto setup
2017-10-02 11:11:42 +07:00
Marten Seemann
9cb7480050
rename connection ID truncation to connection ID omission
2017-09-29 22:52:54 +07:00
Marten Seemann
4cbdced106
send the transport parameters in the TLS handshake
2017-09-29 17:35:22 +07:00
Marten Seemann
c95f2054a8
rename the ConnectionParametersManager to ParamsNegotiator
2017-09-28 18:15:33 +07:00
Marten Seemann
95901cdee4
initialize the connection parameters manager in the crypto setup
2017-09-28 18:15:32 +07:00
Marten Seemann
e6ebe89c1e
Merge pull request #840 from lucas-clemente/version-uses-tls
...
define a function to tell if a QUIC version uses the TLS 1.3 handshake
2017-09-22 21:47:59 +07:00
Marten Seemann
8312e766ed
define a function to tell if a QUIC version uses the TLS 1.3 handshake
2017-09-22 19:47:08 +07:00
Marten Seemann
265c35c2eb
rename the STK to Cookie
2017-09-22 18:58:04 +07:00
Marten Seemann
e603715949
make handshake and crypto internal packages
2017-09-21 11:52:21 +07:00
Marten Seemann
4da08c9710
use a type alias for the STK
2017-09-11 18:38:24 +02:00
Marten Seemann
91b7404182
implement a very basic TLS 1.3 handshake
2017-09-08 12:04:45 +03:00
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