Commit Graph

1284 Commits

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