Marten Seemann
02e851bd11
cut coalesed packets in the session
2019-02-27 10:03:34 +09:00
Marten Seemann
28ed85b9c6
move cutting of coalesced packets to the wire package
2019-02-23 10:24:42 +08:00
Marten Seemann
155ebd18a2
parse and send the ack_delay_exponent in the transport parameters
2019-01-28 16:09:47 +09:00
Marten Seemann
bb185a3ad2
add a function to close the packet handler map
...
Close will close the underlying connection and wait until listen has
returned. While not strictly necessary in production use, this will fix
a few race conditions in our tests.
2019-01-24 18:09:46 +07:00
Marten Seemann
181aa493e0
make sure not to return closed session from Listener.Accept()
2019-01-06 15:27:42 +07:00
Marten Seemann
90514d53d1
reject new connection attempts if the server's accept queue is full
2019-01-06 15:26:43 +07:00
Marten Seemann
1301610a54
never block when calling the onHandshakeComplete callback
2019-01-06 11:43:49 +07:00
Marten Seemann
b32fb438af
make putting back packet buffers a member function of packetBuffer
2019-01-01 09:50:35 +07:00
Marten Seemann
767dbdd545
put back packet buffers after processing a packet
...
This introduces a reference counter in the packet buffer, which will be
used to process coalesced packets.
2019-01-01 09:50:29 +07:00
Marten Seemann
178ac0dacb
keep increasing the packet number after version negotiation and retry
2018-12-22 22:15:35 +06:30
Marten Seemann
f9218444a9
use a separate function to close the session after VN and retry
2018-12-21 23:47:10 +06:30
Marten Seemann
008615284e
error when Listen is called without a tls.Config or certificates
2018-11-29 16:01:03 +07:00
Marten Seemann
3f9831a93d
Merge pull request #1638 from lucas-clemente/improve-packet-handling
...
make packet handling as non-blocking as possible
2018-11-27 18:43:52 +07:00
Marten Seemann
5e01c49fdf
send Version Negotiation packets in a separate Go routine
2018-11-27 17:19:21 +07:00
Marten Seemann
708aa165bc
improve the description of how we handle net.PacketConns
2018-11-27 16:33:03 +07:00
Marten Seemann
c5ca6fd7e5
parse the extended header in the session
2018-11-26 15:57:54 +07:00
Marten Seemann
b740d57c61
embed the Header in the ExtendedHeader
2018-11-26 15:57:54 +07:00
Marten Seemann
9bcedd988d
move parsing of version negotiation packets to the wire.Header
2018-11-26 15:57:54 +07:00
Marten Seemann
bf96707f48
rename the wire.Header to ExtendedHeader
...
It's not encrypted yet.
2018-11-26 15:57:54 +07:00
Marten Seemann
6150c19dcb
remove unused perspective from header writing
2018-11-26 13:43:27 +07:00
Marten Seemann
44513a528c
drop short header packets for unknown sessions
2018-11-20 12:21:26 +07:00
Marten Seemann
65cca7b726
immediately remove sessions that were closed remotely
...
We only need to keep sessions that were closed locally, in order to
retransmit the CONNECTION_CLOSE packet. For sessions that were closed by
the peer, we don't need to wait for any more packets, and there's also
no CONNECTION_CLOSE to retransmit. The same applies for sessions that
were destroyed when receiving a Version Negotiation or a Retry packet.
2018-11-16 21:22:32 +07:00
Marten Seemann
a3831b2134
rename removing of connection IDs to retiring
2018-11-16 21:22:32 +07:00
Marten Seemann
4b37ecb2b5
use the same default max flow control window sizes for client and server
2018-11-12 23:38:07 +07:00
Marten Seemann
73ca6a06eb
encode the original connection ID into the cookie
2018-11-10 17:12:50 +07:00
Marten Seemann
66a72a1199
use varints for numeric transport parameters
2018-11-05 12:33:32 +07:00
Marten Seemann
16848038be
remove unnecessary initial packet number parameter
2018-11-02 17:14:31 +07:00
Marten Seemann
9981026839
split the flow control transport parameters
2018-11-01 13:09:29 +07:00
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
c0d4f00b20
implement gQUIC 44
2018-08-28 08:49:29 +07:00
Marten Seemann
29ce4656a3
Merge pull request #1501 from lucas-clemente/vnp-tests
...
improve sending of VNPs, improve VNP integration test
2018-08-27 16:48:55 +07:00
Marten Seemann
c481645276
send a gQUIC / IETF QUIC Version Negotiation Packet based on header type
2018-08-27 09:08:59 +07:00
Marten Seemann
6ec4c21c7e
allow multiple Listener.Close calls
...
Every subsequent call to Listener.Close will be a noop.
2018-08-27 07:56:52 +07:00
Marten Seemann
acb45c0ef1
always allow sending of IETF QUIC Version Negotiation Packets
...
When receiving a packet with an IETF QUIC Header using an unsupported
version, we should send a IETF QUIC Version Negotiation Packet, even if
none of the supported versions is IETF QUIC.
2018-08-15 15:23:28 +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
b5d03d24a5
close the packet conn when a server created with ListenAddr is closed
2018-08-08 10:03:22 +07:00
Marten Seemann
ad5a3e2fa0
also use the multiplexer for the server
2018-08-08 10:03:22 +07:00
Marten Seemann
c8d20e86d7
move listening from the multiplexer to the packet handler map
2018-08-08 10:03:20 +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
f02dc92a32
make the connection ID length configurable
2018-07-03 18:34:31 +07:00
Marten Seemann
0bd7e744ff
implement parsing of headers with different connection ID lengths
2018-07-03 18:01:41 +07:00
Marten Seemann
4109c85c8a
refactor header parsing in a version independent and dependent part
2018-07-01 09:01:30 +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
2c05dbff07
multiplex multiple clients on one packet conn
2018-06-23 08:35:11 +07:00
Marten Seemann
dacc94ccba
rename the sessionMap to packetHandlerMap
2018-06-23 08:20:29 +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
ef34d9e85f
start running TLS server session directly when creating them
2018-06-23 08:16:51 +07:00
Marten Seemann
d7dee33bc7
change the source connection ID when creating a new IETF QUIC session
2018-05-30 21:37:05 +08:00