Commit graph

193 commits

Author SHA1 Message Date
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