Commit Graph

2620 Commits

Author SHA1 Message Date
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