Benjamin Saunders
f6c1ef0786
Fix panics when a live connection's driver is dropped
2019-04-03 00:28:20 -07:00
Benjamin Saunders
36ac70434a
Don't implicitly close connections with streams being opened
...
Improves ergonomics when an application wishes to perform no
operations beyond opening and manipulating a fixed set of streams.
2019-04-03 00:28:20 -07:00
Benjamin Saunders
010c939984
Wake connection driver on close
...
Fixes potentially long delays in closing a connection
2019-04-03 00:28:20 -07:00
Benjamin Saunders
f6ac24d0b0
Clarify Space.loss_time semantics
2019-04-03 00:28:20 -07:00
Benjamin Saunders
6e9f88e32b
Correct loss timer precedence
...
This turned out to be a misreading of the draft.
2019-04-03 00:28:20 -07:00
Benjamin Saunders
c6be5333e0
Update rustls
...
Incorporates interop-relevant 0-RTT fixes, error reporting
improvements, and wireshark-compatible QUIC key logging.
2019-04-03 00:28:20 -07:00
Benjamin Saunders
856b2f570a
Update EndpointDriver documentation
2019-04-02 06:36:30 +02:00
Benjamin Saunders
55998727bf
Clean up tests
2019-04-02 06:36:30 +02:00
Benjamin Saunders
b3175da8a6
Fix race condition in connection/endpoint reference drop
...
Cleanup could have been missed if two references were dropped
simultaneously, leading to the Arc's reference count going directly
from 3 to 1
2019-04-02 06:36:30 +02:00
Benjamin Saunders
737ee208db
Fix panic when endpoint driver is dropped with live connections
2019-04-02 06:36:30 +02:00
Benjamin Saunders
21c9a98529
Wake up blocked futures on implicit close
2019-04-02 06:36:30 +02:00
Dirkjan Ochtman
5f93f96280
Further clarify implicit close semantics (see #250 )
2019-04-01 12:38:36 -07:00
Dirkjan Ochtman
7417838ea4
Inline fields from Pending type into ConnectionInner
2019-04-01 12:35:55 -07:00
Dirkjan Ochtman
0cf709114c
Log listening address in example server
2019-04-01 21:06:53 +02:00
Dirkjan Ochtman
aae9edecd4
Return new connections as tuples
2019-04-01 10:56:38 +02:00
Dirkjan Ochtman
c0c40891b4
Return driver as first member of endpoint tuple
2019-04-01 10:56:38 +02:00
Dirkjan Ochtman
fc964543e8
Rename Driver to EndpointDriver
2019-04-01 10:56:38 +02:00
Benjamin Saunders
e9b9a3861b
More robust handshake retransmits
...
Revists d36d015c , plus some missing parts
2019-03-31 06:47:44 +02:00
Benjamin Saunders
6a7b55f664
Per-packet-space loss_time tracking
2019-03-31 06:47:44 +02:00
Benjamin Saunders
309d438ac4
Style cleanup
2019-03-31 06:47:44 +02:00
Benjamin Saunders
3e1f0291b5
Simplify persistent congestion threshold
2019-03-31 06:47:44 +02:00
Benjamin Saunders
2fed04fec1
Correct divergence of PTO computation from RFC 6298
2019-03-31 06:47:44 +02:00
Benjamin Saunders
f518fc9bbc
Update recommended initial congestion control window size
2019-03-31 06:47:44 +02:00
Benjamin Saunders
54c8d9e223
Tweak comment
...
We have built-in keep-alives now.
2019-03-31 06:47:44 +02:00
Benjamin Saunders
dd59dacc05
Remove redundant branch
2019-03-30 16:34:16 -07:00
Benjamin Saunders
25d60cca9f
Refactor close behavior
...
Closing the connection is now considered an instantaneous operation,
which causes outstanding I/O futures to fail immediately with a
distinct error and gracefully terminates IncomingStreams and, one
draining has completed, ConnectionDriver.
2019-03-30 16:34:16 -07:00
Benjamin Saunders
83da359acc
Add end-to-end handshake timeout test
2019-03-30 16:34:16 -07:00
Benjamin Saunders
d2d6b5b967
Style cleanup
2019-03-30 16:34:16 -07:00
Benjamin Saunders
73426303c1
Notify endpoint of drained state immediately
...
Now that endpoints no longer own connections, there is no need to
ensure the application has explicitly closed a connection before the
endpoint discards state.
2019-03-30 16:34:16 -07:00
Benjamin Saunders
5be6a0c6f9
Process connection-emitted events after they're generated
2019-03-30 16:34:16 -07:00
Benjamin Saunders
6c0c72b1f1
Fast idle timeout in interop tool
2019-03-30 16:34:16 -07:00
Benjamin Saunders
cf341333b6
Clearer close timer handling
...
No semantic change, but less doing something then immediately undoing it.
2019-03-30 16:34:16 -07:00
Benjamin Saunders
505aef1f47
Update Endpoint::connection_remotes for migrations
...
We also get rid of EndpointEvent::Closed.remote, since storing the
current remote in Endpoint is easy and simplifies both Closed and
Migrated.
2019-03-30 16:34:16 -07:00
Benjamin Saunders
748a52b2dd
Shut down endpoint driver when all references to it are dead
2019-03-30 15:13:48 -07:00
Benjamin Saunders
7c82e3c8a4
Handle dropped Incoming stream gracefully
2019-03-30 15:13:48 -07:00
Benjamin Saunders
9455ce3925
Keep incoming connections alive until they're accepted
2019-03-30 15:13:48 -07:00
Dirkjan Ochtman
d337f29431
Return Err when writing to unknown stream (see #87 )
2019-03-30 21:32:02 +01:00
Dirkjan Ochtman
967044c592
Add new module spaces to contain PacketSpace and dependencies
...
This also helps reducing the size of the connection module.
Fold dedup module into it, since it is relatively small.
2019-03-30 13:02:44 -07:00
Dirkjan Ochtman
5032c0e50f
Privatize more interfaces (in particular for newly-public Connection)
2019-03-30 13:02:44 -07:00
Dirkjan Ochtman
f63fd2b811
Introduce shared module for widely used types
...
This removes the dependency from connection on endpoint which I always found
ugly, and generally shrinks some of our larger modules by extracting types
that are not tightly coupled to their those modules' other contents.
2019-03-30 13:02:44 -07:00
Dirkjan Ochtman
c66937e55b
Move enums from endpoint to connection
2019-03-30 13:02:44 -07:00
Dirkjan Ochtman
340467f632
Move Assembler into its own module
2019-03-30 13:02:44 -07:00
Dirkjan Ochtman
5c5cd687f2
Use default (thread pool) runtime for quinn tests
2019-03-29 18:40:46 +01:00
Dirkjan Ochtman
548d8cc21e
Fix panic when rx_packet_time > now
2019-03-29 18:40:46 +01:00
Dirkjan Ochtman
b9eb025bdc
Make Connection instants deterministic
2019-03-29 18:40:46 +01:00
Dirkjan Ochtman
2fb4336cdb
Use sync oneshot channels for thread safety
2019-03-29 18:40:46 +01:00
Dirkjan Ochtman
a8e07e0d25
Replace Rc<RefCell<>> with Arc<Mutex<>> in quinn
2019-03-29 18:40:46 +01:00
Benjamin Saunders
d36d015c9b
Fix handshake retransmit timing
...
in_flight.crypto can be 0 when retransmitted handshake data is pending
but not yet actually retransmitted.
2019-03-29 05:44:48 +01:00
Benjamin Saunders
3995ea2006
Update protocol version numbers
2019-03-29 05:44:48 +01:00
Benjamin Saunders
5cc3a52088
Cosmetic cleanup
2019-03-29 05:44:48 +01:00