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