Commit Graph

2620 Commits

Author SHA1 Message Date
Benjamin Saunders bdb73b8b85 Remove client-side version negotiation 2019-03-29 05:44:48 +01:00
Benjamin Saunders c317061033 Switch idle timeout units to milliseconds 2019-03-29 05:44:48 +01:00
Dirkjan Ochtman 7d1d39d392 Minor clippy fixes 2019-03-28 17:19:25 -07:00
Dirkjan Ochtman 8f4e30bc00 Split quinn module into endpoint and connection parts 2019-03-28 17:19:25 -07:00
Dirkjan Ochtman 47093ef1ca Split tests module to factor out test infrastructure 2019-03-28 17:19:25 -07:00
Dirkjan Ochtman 619246f4a4 Make some members of Streams private 2019-03-28 17:19:14 -07:00
Dirkjan Ochtman 6ae1e9f4a8 Move initialization of Streams type into new() method 2019-03-28 17:19:14 -07:00
Dirkjan Ochtman 5ea7cc97cf Move stream reset code into Streams type 2019-03-28 17:19:14 -07:00
Dirkjan Ochtman 16210a1646 Move stream acceptance into Streams type 2019-03-28 17:19:14 -07:00
Dirkjan Ochtman 81cc247206 Move remote stream allocation into Streams type 2019-03-28 17:19:14 -07:00
Dirkjan Ochtman 749859517e Move stream creation into Streams type 2019-03-28 17:19:14 -07:00
Dirkjan Ochtman f74629be74 Move stream-related frame handling into Recv method 2019-03-28 17:19:14 -07:00
Nikita Baksalyar 64ed16300e Fix builds on musl environment
msghdr struct in musl libc has padding fields which are private.
This commit fixes the struct initialisation code, replacing it with
manual fields assingment.
2019-03-28 09:23:00 -07:00
Benjamin Saunders e784fe6e1d Don't fail tests on normal connection shutdown 2019-03-28 08:28:01 +01:00
Benjamin Saunders d17d2b1e01 Drive connections until they're drained, even with errors 2019-03-28 08:28:01 +01:00
Benjamin Saunders a873f55911 Report draining complete when stateless reset follows close 2019-03-28 08:28:01 +01:00
Benjamin Saunders 233425160c Fix unreliable timers 2019-03-28 08:28:01 +01:00
Benjamin Saunders 3e56beee3c Spawn connection driver in client example and interop tool 2019-03-28 08:28:01 +01:00
Benjamin Saunders 08f663b1c6 More readable timer diagnostics 2019-03-28 08:28:01 +01:00
Benjamin Saunders 5b7b0d1173 Simplify timer handling 2019-03-28 08:28:01 +01:00
Benjamin Saunders de43f8e477 More convenient Timer iterator 2019-03-28 08:28:01 +01:00
Benjamin Saunders 82f6c2e14f Close unreferenced connections 2019-03-28 08:28:01 +01:00
Benjamin Saunders 399d6d58a2 Detailed must_use diagnostic 2019-03-28 08:28:01 +01:00
Benjamin Saunders 3195c757c3 Clean up after prematurely dropped connections 2019-03-28 08:28:01 +01:00
Benjamin Saunders 9fc7ddf129 Silence spurious warning 2019-03-28 08:28:01 +01:00
Benjamin Saunders cd4240e2a2 Improve key_update_reordered test robustness 2019-03-28 08:28:01 +01:00
Benjamin Saunders 29587e8552 Clarify handling of a lost endpoint driver 2019-03-28 08:28:01 +01:00
Benjamin Saunders f949a5981c Tweak comment 2019-03-28 08:28:01 +01:00
Benjamin Saunders 237e405889 Fix handling of STOP_SENDING on closed or unopened streams 2019-03-28 08:26:40 +01:00
Benjamin Saunders 1ed29db73b Fix receiving MAX_STREAM_DATA after closing the stream 2019-03-28 08:26:40 +01:00
Benjamin Saunders 21b8b99c53 Avoid redundant recv stream lookup 2019-03-28 08:26:40 +01:00
Dirkjan Ochtman d2f454ebc6 Return Connections from Endpoints after creation 2019-03-27 18:20:24 -07:00
Dirkjan Ochtman 6c8f3e0ea0 Enable key log in quinn tests 2019-03-27 18:20:24 -07:00
Dirkjan Ochtman 1a4eb4793d Optimize stream assembler (see #258) 2019-03-27 18:53:51 +01:00
Benjamin Saunders 75d5c730de Fix unreliable unblocking of ordered reads
If an ordered read was blocked on a stream that had pending unordered
data and became blocked, `Recv::is_blocked` would have returned false,
leading to the application never getting notified. We could detect
whether *either* readiness boundary has been crossed, but the
more conservative approach is simple and obviously correct, and
spurious notifications are not known to be an issue.
2019-03-27 01:52:09 -07:00
Benjamin Saunders 1c24492c86 Don't start close timer on stateless reset 2019-03-27 01:52:09 -07:00
Benjamin Saunders bf6cf7387e Less error-prone timer cleanup 2019-03-27 01:52:09 -07:00
Benjamin Saunders 67de213a5a Only send PING in 1-RTT packets
In particular, don't send it in handshake packets we retransmit after
reaching 1-RTT.
2019-03-27 01:52:09 -07:00
Benjamin Saunders bc8bc6a17a Clarify logging 2019-03-27 01:52:09 -07:00
Benjamin Saunders 8be6ec3661 Don't set keep-alive during handshake 2019-03-27 01:52:09 -07:00
Benjamin Saunders 662b9483b8 Don't reset streams on dead connections
Fixes a panic that could happen when dropping streams from a
connection that's been closed.
2019-03-26 07:09:33 +01:00
Benjamin Saunders 2fb452259b Don't send PING in Handshake packets 2019-03-26 07:09:33 +01:00
Nikita Baksalyar 762bcf277b Add more debug info for the PROTOCOL_VIOLATION error
The error type should contain the frame causing the protocol violation
2019-03-25 20:21:21 +01:00
Dirkjan Ochtman eade6f4d9a Initialize EndpointInner in same file as definition 2019-03-23 21:40:06 +01:00
Dirkjan Ochtman b9410ce895 Import mpsc module for shorter type paths 2019-03-23 21:40:06 +01:00
Dirkjan Ochtman 5872661b8d Split up Driver::poll() into manageable parts 2019-03-23 19:10:36 +01:00
Dirkjan Ochtman ef0fb2b869 Pass datagram to Connection as a ConnectionEvent 2019-03-23 19:10:36 +01:00
Dirkjan Ochtman a6fec82b44 Change variable names in Endpoint that match Connection usage 2019-03-23 19:10:36 +01:00
Dirkjan Ochtman 5bbaf6d4b4 Tweak formatting for better readability 2019-03-23 19:10:36 +01:00
Dirkjan Ochtman 46ad36e34b Trigger connection forgetting through EndpointEvent 2019-03-23 19:10:36 +01:00