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