Marten Seemann
8565fdf722
fix limit of undecrytable packets queue length
...
fixes #517
Also fixes an off-by-one error, such that the queue now holds exactly
protocol.MaxUndecrytablePackets packets when enough undecryptable
packets are received.
2017-04-11 10:37:25 +07:00
Lucas Clemente
612fa16a43
Move SentPacketHandler.CheckForError into SentPacket
2017-04-02 10:29:09 +02:00
Lucas Clemente
1c5380c49b
Implement loss recovery from the current WG draft
...
Fixes #498 and will hopefully go a long way towards fixing the many
flaky tests.
2017-04-02 10:29:09 +02:00
Marten Seemann
6d5c9776e9
send a Public Reset when receiving a CHLO with the FHL2 tag
...
Fixes #411 .
Chrome sends the FHL2 when it wants to perform a head-of-line blocking
experiment, introduced in QUIC version 36 (see
https://codereview.chromium.org/2115033002 ). We don’t support this
experiment. By sending a Public Reset when receiving this tag we force
Chrome to use the TCP fallback.
2017-03-20 12:35:34 +07:00
Marten Seemann
34b688b3b9
add a LocalAddr to the Session
2017-03-10 00:07:27 +07:00
Marten Seemann
eb7ed2624a
only send Public Reset after a timeout
...
fixes #471
2017-03-08 18:15:52 +07:00
Marten Seemann
936a29ff35
retransmit packets with the encryption level they were sent with
2017-03-01 14:11:25 +07:00
Marten Seemann
7d2922d7ab
save the encryption level of a sent packet in the SentPacketHandler
2017-03-01 14:09:50 +07:00
Marten Seemann
9e147714ac
pack smaller packets as long as the encryption is not forward secure
2017-03-01 14:01:52 +07:00
Marten Seemann
6cb19e42a5
explicitly pass encryption level in the aeadChanges channel
2017-02-25 21:38:08 +07:00
Marten Seemann
b84e945868
log the encryption level of sent and received packets
2017-02-25 08:27:15 +07:00
Marten Seemann
820eb2e6ee
call the ConnStateCallback in the server for encryption level changes
...
ref #439
2017-02-24 08:42:49 +07:00
Marten Seemann
8bfeb2ea8d
return from Dial after conn is forward-secure, unless ConnState is given
2017-02-22 23:03:10 +07:00
Marten Seemann
cd465ae0b5
move utils.Stream to quic.Stream
2017-02-22 23:03:09 +07:00
Marten Seemann
592ef45fdf
add OpenStreamSync() method to Session interface
2017-02-22 23:03:09 +07:00
Marten Seemann
af4b36b002
use a connection in the Client
2017-02-22 23:03:08 +07:00
Marten Seemann
d61c0eb85d
add a Write and a Close method to the connection interface
2017-02-22 23:03:08 +07:00
Marten Seemann
824f122a79
remove unused StreamCallback
2017-02-22 23:03:08 +07:00
Marten Seemann
6dd163020a
never return stream 1 from Session.AcceptStream()
2017-02-22 23:03:07 +07:00
Marten Seemann
a96211f724
create Session interface
2017-02-22 23:03:07 +07:00
Marten Seemann
5b42675da2
use a net.PacketConn instead of a net.UDPConn in Server and Session
2017-02-22 23:03:07 +07:00
Marten Seemann
c533a9adb8
implement an AcceptStream method in the Session
2017-02-22 23:03:06 +07:00
Marten Seemann
f47142eaac
remove stream ID from OpenStream() method
2017-02-22 23:03:05 +07:00
Marten Seemann
c7b4ad6e80
return plain nil value for Session.GetOrOpenStream for closed streams
...
fixes #418
2017-02-15 22:29:08 +07:00
Marten Seemann
268841f0cc
add a TLSClientConfig to the QUIC RoundTripper
...
fixes #407
2017-02-04 10:28:00 +07:00
Marten Seemann
db09de621c
detect version downgrade attacks in the client crypto setup
2017-01-14 18:58:47 +07:00
Marten Seemann
a7afd72795
add a callback that is called when the crypto level changes
2017-01-14 18:54:18 +07:00
Marten Seemann
16da08a440
add client functionality to the streamsMap
2017-01-14 18:54:15 +07:00
Marten Seemann
a0bdf79b5b
create an aeadChanged channel in the client crypto setup
2017-01-14 18:52:25 +07:00
Marten Seemann
f72fbc57a9
send connection parameters in CHLO
2017-01-14 18:52:24 +07:00
Marten Seemann
1a830dbdb7
implement basic version negotiation
2017-01-14 18:52:24 +07:00
Marten Seemann
014315d3c7
parse hostname from address and pass it to the client cryptoSetup
2017-01-14 18:52:19 +07:00
Marten Seemann
f44612cc2f
pass received diversification nonces to the CryptoSetup
2017-01-14 18:51:16 +07:00
Marten Seemann
5e0ded9850
don’t reset remoteAddr for every packet as a client
2017-01-14 18:47:42 +07:00
Marten Seemann
6c0a885a0e
pass perspective to packetPacker
2017-01-14 18:45:16 +07:00
Marten Seemann
23435253db
create CryptoSetup for the client, use it in the Session
2017-01-14 18:45:15 +07:00
Marten Seemann
2b7c67d297
create handshake.CryptoSetup interface
2017-01-14 18:45:14 +07:00
Marten Seemann
67657a37bf
only change remote address after authenticating a packet
...
fixes #395
2017-01-14 18:15:50 +07:00
Marten Seemann
1e78104f83
trigger window updates before queueing frames for retransmission
...
ref #394
2017-01-14 15:22:53 +07:00
Marten Seemann
71227437ee
only retransmit WindowUpdates if no higher WindowUpdate has been sent
...
fixes #394
2017-01-14 15:16:12 +07:00
Marten Seemann
db22dae089
simplify the selection of frames for retransmission
...
ref #394
2017-01-14 13:59:57 +07:00
Marten Seemann
edf6ee3dfc
implement a sophisticated ack algorithm
...
fixes #354
2017-01-09 15:01:44 +07:00
Marten Seemann
7a91794292
send RST_STREAM frames
...
ref #380
2017-01-09 09:49:44 +07:00
Marten Seemann
4e0ef58bab
allow stream.Read for streams that a RST was received for
...
and a lot of code improvements
fixes #385
2017-01-09 09:49:43 +07:00
Marten Seemann
563c56fa74
remove unused newStreamImpl from Session
2017-01-06 13:15:07 +07:00
Marten Seemann
8ce763682a
send a RstStreamFrame when receiving a RstStreamFrame on an open stream
...
fixes #378
2017-01-03 17:51:56 +07:00
Marten Seemann
544a58a038
return total bytes sent when resetting a stream in the flow controller
2017-01-03 16:09:18 +07:00
Marten Seemann
bf0caf3c03
pass the byte offset of a RstStreamFrame to the flow controller
...
fixes #377
2017-01-03 12:37:45 +07:00
Marten Seemann
0de6368bbb
fix detection if the Session was already closed before
2016-12-20 10:23:44 +07:00
Marten Seemann
156c23f2b7
wait until the run loop has stopped before returning Session.Close()
...
fixes #371
2016-12-19 20:35:21 +07:00