Commit Graph

1257 Commits

Author SHA1 Message Date
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
Dirkjan Ochtman 149bec5f8c Handle timer events as ConnectionEvent variants 2019-03-23 19:10:36 +01:00
Dirkjan Ochtman d29f186418 Rename poll_io() and remove unnecessary Io wrapper enum 2019-03-23 19:10:36 +01:00
Dirkjan Ochtman 753bddadb2 Retire connection identifiers through EndpointEvent 2019-03-23 19:10:36 +01:00
Dirkjan Ochtman 11cf1336a5 Send new connection IDs as a single event 2019-03-23 19:10:36 +01:00
Dirkjan Ochtman b689cfcecd Use events to communicate from Connection to Endpoint 2019-03-23 19:10:36 +01:00
Dirkjan Ochtman 18cfea2145 Keep local CIDs state in Endpoint 2019-03-23 19:10:36 +01:00
Dirkjan Ochtman d28dc2bb64 Move Endpoint-only state from Connection into Endpoint 2019-03-23 19:10:36 +01:00
Dirkjan Ochtman 41f7551e10 Leave debugging hint for stupid future me 2019-03-23 19:10:36 +01:00
Dirkjan Ochtman 481e7286c7 Return new ConnectionHandle from Endpoint::handle() 2019-03-23 19:10:36 +01:00
Dirkjan Ochtman 385fd39411 Clarify connection setup flow 2019-03-23 19:10:36 +01:00
Dirkjan Ochtman e4bd3f1597 Disable dual-stack IP test for now 2019-03-23 19:10:36 +01:00
Benjamin Saunders cada5cc194 Update quinn/src/lib.rs
Review incorporated

Co-Authored-By: ustulation <ustulation@gmail.com>
2019-03-21 11:10:34 +01:00
ustulation e468390802 API for obtaining our local endpoint
This is especially useful if we were binding to port 0 intending the OS to allocate us a random port. Then we would like to know what port was actually allocated. Besides it's a useful API anyway as it's natural to want to know this detail from a bound socket for completeness.
2019-03-21 11:10:34 +01:00