Commit Graph

568 Commits

Author SHA1 Message Date
Marten Seemann
a1acfc3045 rename {Stream,Connection}FlowControlWindow to InitialMax{Stream}Data 2018-10-30 12:52:42 +07:00
Marten Seemann
3266e36811 drop support for gQUIC 2018-10-30 10:20:39 +07:00
Marten Seemann
1227dc8a24 remove the handshakeCompleteChan from the TLS crypto setup
In TLS, we know that the handshake completed when RunHandshake() returns.
2018-10-29 17:33:06 +07:00
Marten Seemann
8344dc8b64 close the TLS crypto setup when session closes 2018-10-29 15:06:41 +07:00
Marten Seemann
eeab7a5fca allow the server to retransmit Initial packets 2018-10-28 13:30:37 +07:00
Marten Seemann
b63c81f0bf try decrypting undecryptable packets when the encryption level changes
There's no need to do this asynchronously any more when using TLS.
2018-10-26 17:10:00 +07:00
Marten Seemann
82508f1562 use tls-tris instead of mint 2018-10-26 16:18:49 +07:00
Marten Seemann
5102294991 use separate chans to signal handshake events and handshake completion 2018-10-26 16:11:25 +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
c1f55ba910 use tls.Config.ServerName for the passing the hostname around 2018-10-02 14:47:18 -07:00
Marten Seemann
25847cfc30 handle the crypto stream separately in the packet packer 2018-10-01 11:25:57 -07: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
a519b3dbc5 Merge pull request #1526 from lucas-clemente/dont-send-packets-after-closing
don't try to send packets after closing the session
2018-09-28 07:57:49 -06:00
Marten Seemann
fdb9d2d495 don't try to send packets after closing the session 2018-09-27 09:18:02 -06:00
Marten Seemann
87c22187a9 don't send a packet after receiving the transport parameters 2018-09-27 09:16:51 -06:00
Marten Seemann
7b9d3a6217 don't try to send an ACK immediately after becoming congestion limited 2018-09-24 18:54:47 -06:00
Marten Seemann
8bd6168511 never increase the flow control limit for the crypto stream 2018-09-19 09:00:23 -04:00
Marten Seemann
c0d4f00b20 implement gQUIC 44 2018-08-28 08:49:29 +07:00
Marten Seemann
70992684af use server generated connection IDs when accepting a connection 2018-08-13 08:47:29 +07:00
Marten Seemann
f88b7bb175 implement the new Retry mechanism 2018-08-13 08:47:29 +07:00
Marten Seemann
04147d86da rename the cryptoStreamI interface to cryptoStream 2018-08-11 12:45:43 +07:00
Marten Seemann
defafec71e use retransmissions as TLP packets 2018-08-09 22:28:28 +07:00
Marten Seemann
2b1dce4b37 Merge pull request #1465 from lucas-clemente/fix-public-reset-logging
fix logging of the connection ID for PUBLIC_RESETs
2018-08-08 08:43:27 +07:00
Marten Seemann
1ecce9c288 log keep alive packets 2018-08-07 18:38:08 +07:00
Marten Seemann
1472d2a143 fix logging of the connection ID for PUBLIC_RESETs 2018-08-03 10:41:10 +07:00
Marten Seemann
6d3d6dc47d pass an error code to Session.CloseWithError 2018-07-06 15:51:38 +07:00
Marten Seemann
8b2992a243 split the Session.Close(error) in Close() and CloseWithError(error) 2018-07-06 15:51:35 +07:00
Marten Seemann
0928e91e4d remove closed clients from the multiplexer 2018-07-03 17:30:49 +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
b3fd768a61 use a smaller packetHandler interface
The packetHandler interface just needs two methods: one for handling
packets, and one for closing.
2018-06-23 08:16:51 +07:00
Marten Seemann
e5746e0881 drop packets with different source connection IDs
The server can change the connection ID with the first Handshake packet.
Afterwards, packets with different source connection IDs have to be
ignored. Otherwise, for example the retransmission of the Initial packet
might create two sessions on the server with different source connection
IDs on the server side, but the same connection ID on the client side.
2018-06-11 21:37:56 +02:00
Marten Seemann
d32665af9d remove FHL2 experiment
FHL2 was an experiment in Chrome, run in Q036, which introduced HOL
blocking. This experiment is over, so we can remove the code to send a
PUBLIC_RESET when a peer initiates this experiment.
2018-06-10 17:02:06 +02: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
733e2e952b use callbacks for signaling the session status
Instead of exposing a session.handshakeStatus() <-chan error, it's
easier to pass a callback to the session which is called when the
handshake is done.
The removeConnectionID callback is in preparation for IETF QUIC, where a
connection can have multiple connection IDs over its lifetime.
2018-05-29 21:27:08 +08:00
Marten Seemann
c7119b2adf move logging of connection closing to the session 2018-05-29 21:24:24 +08:00
Marten Seemann
02db7817fb make the peer completing the handshake last send a forward-secure packet
In gQUIC, the server completes the handshake first (after sending the
SHLO). In TLS 1.3, the client completes the handshake first (after
sending the CFIN).
They need to have some way to learn that the peer successfully completed
the handshake, so they can stop retransmitting the handshake packets
containing the SHLO or the CFIN, respectively. To achieve that, the peer
finishing the handshake last will send a PING frame in a forward-secure
packet.
2018-05-29 20:51:29 +08:00
Marten Seemann
bd483c75e5 don't save anything about a packet before authenticating it 2018-05-16 18:59:43 +09:00
Marten Seemann
d1dd2a4a60 add logging to the ackhandler 2018-05-14 11:05:37 +09: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
903747fdc7 remove stray commented code in the session 2018-04-29 20:48:03 +09:00
Marten Seemann
1420b138d5 implement TLPs 2018-04-25 20:47:18 +09:00
Marten Seemann
0c014c0aff fix deadlock when receiving two packets with diversification nonces 2018-04-24 21:14:58 +09:00
Marten Seemann
0e58a679d6 Merge pull request #1319 from lucas-clemente/fix-1307
use different source and destination connection IDs
2018-04-23 17:29:45 +09:00
Marten Seemann
e813d41376 handle PATH_CHALLENGE frames, reject PATH_RESPONSE frames 2018-04-23 16:41:06 +09:00
Marten Seemann
fae32101a0 use different source and destination connection IDs 2018-04-23 15:23:01 +09:00
Marten Seemann
d47124d14d add more methods to the protocol.ConnectionID
This will make it easier to change the underlying type of the connection
ID (potentially an array is faster than a byte slice).
2018-04-19 16:08:06 +09:00