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
Benjamin Saunders
0a967f66e2
Relax 0-RTT frame type restrictions
2019-03-15 16:32:35 +01:00
Dirkjan Ochtman
f5b066574a
Move maybe_cleanup() method into Streams
2019-03-06 10:14:45 -08:00
Dirkjan Ochtman
65c3f2c7c6
Let Connection handle stream cleanup if necessary
2019-03-06 10:14:45 -08:00
Benjamin Saunders
27b5dfe541
Account for all UDP datagram bytes in anti-amplification
...
Authentication/correctness is an independent concern. Improves
behavior when coalesced 0-RTT is rejected.
2019-03-05 06:49:15 +01:00
Benjamin Saunders
5a3034b957
Update persistent congestion detection logic
2019-02-28 13:22:09 +01:00
Benjamin Saunders
7da5188ba8
Enable backtraces in CI
2019-02-28 13:17:09 +01:00
Benjamin Saunders
d50edb67fb
Expand ECN support
...
libc's CMSG macros got built out to many more platforms. There may
remain some obscure platforms where this will still fail to build, but
we can account for them as they show up in practice.
2019-02-28 13:17:09 +01:00