Commit graph

680 commits

Author SHA1 Message Date
Marten Seemann
355156ac4e
Merge pull request #2225 from lucas-clemente/handshake-done
implement the HANDSHAKE_DONE mechanism
2019-12-18 10:07:43 +04:00
Marten Seemann
27549c5665 use the minimum of the two peers' max_idle_timeouts 2019-12-11 14:04:33 +04:00
Marten Seemann
8dcca046e3 don't set the idle timeout timer before the handshake completes 2019-12-11 13:50:13 +04:00
Marten Seemann
12922bdec9 drop Handshake keys when receiving HANDSHAKE_DONE (as a client) 2019-12-06 10:29:48 +07:00
Marten Seemann
f7fd5d2848 drop Handshake keys as soon as the handshake completes (as a server) 2019-12-06 10:29:48 +07:00
Marten Seemann
08ec2f69fc send a HANDSHAKE_DONE frame after handshake completion (as a server) 2019-12-06 10:29:48 +07:00
Marten Seemann
3f6030fdb3 count the connection ID used during the handshake towards the limit 2019-12-03 18:25:15 +07:00
Marten Seemann
8a3bdaa19f
Merge pull request #2251 from lucas-clemente/spa
retire the connection ID sent in the preferred_address transport parameter
2019-11-30 20:30:08 +07:00
Marten Seemann
e65df402dd only create a single session when two Initials arrive at the same time 2019-11-30 20:01:51 +07:00
Marten Seemann
ee6beff7cf immediately retire the connection ID sent in the preferred_address 2019-11-30 19:56:06 +07:00
Marten Seemann
5a834851a8 route retransmissions of the client's Initial to the right session 2019-11-26 17:01:21 +07:00
Marten Seemann
e2f41304f8 don't drop handshake packets after switching to a new connection ID 2019-11-25 19:04:02 +07:00
Marten Seemann
d77e400f00 don't send application-level errors before completion of the handshake 2019-11-23 11:30:20 +07:00
Marten Seemann
f3e3def599 don't send application data probe packets before the handshake completes 2019-11-12 14:12:24 +07:00
Marten Seemann
9c3b553e47 change PTO to be per packet number space 2019-11-12 11:29:51 +07:00
Marten Seemann
3db60534cf use a sentinel error when a sealer is not yet available 2019-11-12 11:27:30 +07:00
Marten Seemann
bd94f21ab0 send keep alive PINGs at least every 20 seconds 2019-11-10 11:06:38 +07:00
Marten Seemann
312fb638be send the frame type in CONNECTION_CLOSE frames 2019-11-09 11:39:35 +07:00
Marten Seemann
6a9a591a10 use application-specific CONNECTION_CLOSE for normal termination 2019-11-08 14:22:50 +07:00
Marten Seemann
a472ac4731 use application-specific CONNECTION_CLOSE for application errors 2019-11-08 13:52:15 +07:00
Marten Seemann
04105625ae issue new connection IDs 2019-11-05 11:00:07 +07:00
Marten Seemann
35ea8213c5 move initialization of the client's transport parameters to the session 2019-11-05 11:00:06 +07:00
Marten Seemann
b64535e656 move initialization of the server's transport parameters to the session 2019-11-05 10:59:21 +07:00
Marten Seemann
90643f5756 move initialization of the client's transport parameters to the session 2019-11-05 10:59:21 +07:00
Marten Seemann
9a81603b4a remove remote closed session from the packet handler map 2019-11-05 10:59:21 +07:00
Marten Seemann
772ffd3d20 use the connection ID manager to save the destination connection ID 2019-11-05 10:59:21 +07:00
Marten Seemann
a321f9faa6 save connection IDs sent in NEW_CONNECTION_ID frames 2019-11-05 10:59:21 +07:00
Marten Seemann
c7334e3e66 replace closed sessions in the packet handler map 2019-11-02 20:32:59 +07:00
Marten Seemann
c328a507f1 fix flaky session test 2019-10-29 18:43:19 +07:00
Marten Seemann
416fe8364e remove unused return value from session constructor 2019-10-27 15:35:34 +07:00
Marten Seemann
4834159210 use the TRANSPORT_PARAMETER_ERROR 2019-10-25 06:47:26 +07:00
Marten Seemann
03483d5e71 refactor how sessions are deleted
Replacing sessions with different structs representing a closed session
doesn't work if a session is using multiple connection IDs.
2019-09-25 15:34:38 +07:00
Marten Seemann
ab2b26a5cb add the unparam linter 2019-09-17 13:44:05 +07:00
Marten Seemann
3bb23836f2
Merge pull request #2105 from lucas-clemente/closed-sessions
refactor how packets arriving after a session is closed are handled
2019-09-07 16:27:40 +07:00
Marten Seemann
00be928873 fix flaky session test 2019-09-01 14:21:13 +07:00
Marten Seemann
b8c5ed2a14 ignore reordered packets for remote closed sessions 2019-09-01 14:11:44 +07:00
Marten Seemann
22b12f199e replace locally closed sessions with a dedicated closed session 2019-09-01 13:59:44 +07:00
Marten Seemann
e622207822 assemble ackhandler.Frames, not wire.Frames, when packing a packet 2019-08-31 17:34:54 +07:00
Marten Seemann
1d392b4276 retransmit frames instead of packets 2019-08-29 15:00:10 +07:00
Marten Seemann
5fa38a83fa remove tracking of which packet is retransmission of which other packet 2019-08-26 14:38:37 +07:00
Marten Seemann
f1d14ecdea
Merge pull request #2042 from lucas-clemente/token-cache
implement a store for address validation tokes
2019-08-25 14:02:16 +07:00
Marten Seemann
00c19f7241 implement a send queue to send packet asynchronously 2019-08-24 15:25:38 +07:00
Marten Seemann
0c85e0eab9 remove unused PacketType field from the ackhandler.Packet 2019-08-21 14:49:00 +07:00
Marten Seemann
e2d58b2333 use tokens from the TokenStore when dialing 2019-08-13 10:53:30 +07:00
Marten Seemann
9c97a5e95f add the TokenStore to the quic.Config, store received tokens 2019-08-13 10:52:59 +07:00
Marten Seemann
cc76441539 implement a function that blocks until an early session can be used 2019-08-13 08:52:26 +07:00
Marten Seemann
b06d7b0cba use the HandshakeComplete() context for accepting sessions in the server 2019-08-13 08:52:26 +07:00
Marten Seemann
6eb72f712d implement a session method to tell if the handshake is already complete 2019-08-13 08:52:26 +07:00
Marten Seemann
bb48c9b31a pass the time a packet was received to the short header opener
This saves us one time.Now() syscall per received 1-RTT packet.
2019-08-11 13:33:02 +07:00
Marten Seemann
ee00cbe088
Merge pull request #2033 from tatianab/injection-attacks
Successful early-handshake injection attacks
2019-08-08 00:05:43 -04:00