Lucas Clemente
fa12f3664d
Merge pull request #582 from lucas-clemente/improve-ackhandler-logs
...
Improve ackhandler logs
2017-05-05 10:48:35 +02:00
Marten Seemann
a6f67c7e14
simplify error handling in the session
2017-05-03 14:07:53 +08:00
Marten Seemann
96e49b0c31
remove the closeCallback from the session
...
The closeCallback was run when a session was closed, i.e. after the run
loop of the session stopped. Instead of explicitely calling this callback
from the session, the caller of session.run() can just execute the code
after session.run() returns.
2017-05-03 14:06:47 +08:00
Lucas Clemente
a2e079c052
Remove an unnecessary error return value
2017-04-30 15:32:01 +02:00
Lucas Clemente
013d7fdb30
Simplify code in a few places
...
Found by running `gosimple ./...`
2017-04-13 16:43:58 +02:00
Marten Seemann
81e06c1f02
don’t send a Public Reset if trial decryption succeeds
...
fixes #516
2017-04-11 10:45:08 +07:00
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