Commit Graph

2976 Commits

Author SHA1 Message Date
Dezhi Wu cc1fed3500 docs: fix broken item link
There is no `generic` module in version 0.8.x, so fix the link.
2022-03-05 10:28:08 -08:00
Timon 7fcf5657b1 Expose Write Structs like Read structs. (#1317) 2022-02-26 21:49:08 +01:00
Benjamin Saunders 33d75c0aca Bump quinn/quinn-udp versions 2022-02-19 20:32:41 +01:00
Benjamin Saunders a2a8c69c9b Require rustls version with working QUIC 0-RTT support 0.8.1 2022-02-19 19:55:13 +01:00
Dirkjan Ochtman ec718762a3 Don't build fuzz targets against MSRV 2022-02-18 13:05:09 +01:00
Benjamin Saunders 3523c1718d Bump version 2022-02-18 13:05:09 +01:00
Benjamin Saunders 50dfd28356 Bump MSRV to 1.53 2022-02-18 13:05:09 +01:00
Benjamin Saunders 74ccc32b95 Fix unsound Vec::set_len in test 2022-02-18 13:05:09 +01:00
Dirkjan Ochtman 04076f7597 Fix clippy suggestions from 1.57 2022-02-18 13:05:09 +01:00
Benjamin Saunders b7c670f15f Suppress noisy inapplicable advisory 2022-02-18 13:05:09 +01:00
Benjamin Saunders da9fa9b2cf Rely on rustls to check for ALPN failure 2022-02-18 13:05:09 +01:00
Jonathan Johnson e2e66608a8 Add os-poll feature to mio
Closes #1303

This feature flag was always needed, and in some situations, tokio was
enabling that feature flag as well. With the new release of tokio 1.17,
the lack of this flag causes runtime errors because mio 0.7 doesn't have
the required flag as tokio is enabling it in 0.8.
2022-02-18 13:05:09 +01:00
Benjamin Saunders 7a679aa2a2 Limit volume of CIDs retired at peer's request 2022-02-18 13:05:09 +01:00
Benjamin Saunders 3be575abcb Fix the spin bit becoming immediately disabled for servers
We were disabling it every time we updated the remote CID, and we like
to update the remote CID ASAP for servers to enable client-side
stateless resets. Instead, we should disable it only when switching
remote CIDs due to a migration.
2022-02-18 13:05:09 +01:00
Benjamin Saunders 1146db7356 Replace dubious CidQueue::is_active_retired logic
This predicate was based on whether an entry in the circular CID
buffer was unset. However, that entry might have already been
overwritten with newer data. Meanwhile, because we guarantee that the
active CID is always at the start of the sliding window of CID
sequence numbers, we can easily infer whether the previously-active
CID was retired and replaced by retire_prior_to by whether the retired
set it returns is empty.
2022-02-18 13:05:09 +01:00
Benjamin Saunders 37337e3287 Don't update remote client CIDs gratuitously
Handling retire_prior_to might have already moved us off the initial
CID.
2022-02-18 13:05:09 +01:00
Benjamin Saunders d00a59bce1 Fix missing default-features = false in quinn-udp 2022-02-18 13:05:09 +01:00
Benjamin Saunders 769277a803 Fix quinn build w/ no default features
EndpointConfig::default is only provided by proto when ring is
available.
2022-02-18 13:05:09 +01:00
Benjamin Saunders bb4abd8ec6 Add new backport branches to CI 2022-02-18 13:05:09 +01:00
Dirkjan Ochtman 48b33cdf4e Bump version numbers for 0.8.0 release 0.8.0 2021-11-14 12:51:41 -08:00
Benjamin Saunders 9a769f29ed Remove obsolete HTTP feature note 2021-11-11 07:37:50 +01:00
Dirkjan Ochtman d902b143ba Allocate a single local CID 2021-11-10 14:19:08 -08:00
Dirkjan Ochtman d9beb088f5 Sort Endpoint::add_connection() below handle_first_packet()
Also apply some trivial style tweaks.
2021-11-10 14:19:08 -08:00
Dirkjan Ochtman 1081180bd2 Simplify setup of server TransportParameters 2021-11-10 14:19:08 -08:00
Dirkjan Ochtman 843c18c446 Simplify Endpoint::add_connection() interface to avoid unwrapping 2021-11-10 14:19:08 -08:00
Dirkjan Ochtman 41bdfd17f2 Avoid unwrapping server config 2021-11-10 14:19:08 -08:00
Dirkjan Ochtman c1a4a67ae8 Simplify PartialDecode interface 2021-11-10 14:19:08 -08:00
Benjamin Saunders b7adfd6295 Sort crypto::ServerConfig methods by call order 2021-11-10 11:25:19 +01:00
Benjamin Saunders 81e69ddf2d Test multi-version interop 2021-11-10 11:25:19 +01:00
Benjamin Saunders a7cd22f683 Move client protocol version into ClientConfig 2021-11-10 11:25:19 +01:00
Benjamin Saunders 1c60cf6ee2 Backwards-compatibility with late draft versions 2021-11-10 11:25:19 +01:00
Benjamin Saunders 1159ae3c65 Non-exhaustive ClientConfig 2021-11-10 11:25:19 +01:00
Benjamin Saunders a3e1409130 Advertise all supported versions in version negotiation 2021-11-10 11:25:19 +01:00
BiagioFesta 25d9a40bf9 followup: rename "stateless retry" -> "retry"
Fix compile error in quinn-proto after field rename
2021-11-06 13:11:56 +01:00
Benjamin Saunders 41ae958679 Rename "stateless retry" to "retry"
This better reflects the final RFC terminology.
2021-11-06 07:23:50 +01:00
Benjamin Saunders 6913ad3f74 Cache dependencies for CI 2021-11-05 07:10:26 +01:00
Benjamin Saunders d03ee11857 Update comment 2021-11-04 11:01:30 +01:00
Benjamin Saunders f97a7eb02a Fix spurious transmit for readiness for stream flow control
When a receive stream had flow control credits to issue but then exits
the receiving w/ unknown size state (e.g. due to receiving a STREAM
frame with the FIN bit set) then a previously queued MAX_STREAM_DATA
frame may become unnecessary. Because this was not accounted for by
Retransmits::is_empty, a transmit might be attempted for the benefit
of that frame, potentially yielding an illegal ACK-only packet.
2021-11-04 11:01:30 +01:00
Benjamin Saunders 2361ace317 Fix spurious transmit readiness for reset streams
When a stream had outgoing data but is then reset, it could cause
StreamsState to indicate readiness and then fail to encode any
streams, potentially yielding an illegal ACK-only packet.
2021-11-04 11:01:30 +01:00
Benjamin Saunders c35e61a9e3 Don't enter persistent congestion without an RTT sample
RFC 9002 §7.6.2: [..] a prior RTT sample existed when these two
packets were sent.
2021-11-04 10:59:10 +01:00
Benjamin Saunders f116fc1adf Persistent congestion is detected only on ACK receipt
RFC 9002 §7.6.2: A sender establishes persistent congestion after the
receipt of an acknowledgment [...]
2021-11-04 10:59:10 +01:00
Benjamin Saunders 77e3fa6e07 Persistent congestion requires ACK-eliciting packets
See RFC 9002 §7.6.2.
2021-11-04 10:59:10 +01:00
Benjamin Saunders e68bb3ca6a Exclude max ACK delay from PTO during handshake
RFC 9002 §6.2.1: When the PTO is armed for Initial or Handshake packet
number spaces, the max_ack_delay in the PTO period computation is set
to 0, since the peer is expected to not delay these packets
intentionally.
2021-11-04 10:59:10 +01:00
Benjamin Saunders 366520020c Style tweak 2021-11-04 10:39:17 +01:00
Benjamin Saunders d4d1664331 Handle persistent congestion
This was missed in the original port.
2021-11-04 10:39:17 +01:00
Benjamin Saunders 61ed855628 Fix window confusion during fast convergence 2021-11-04 10:39:17 +01:00
Benjamin Saunders 46f9a57d3b Apply datagram frame size to entire frame, not just payload
This is, unfortunately, the specified behavior.
2021-11-04 08:57:42 +01:00
Benjamin Saunders f60e8864d7 Skip slow tests under tarpaulin
These were causing coverage to time out.
2021-11-04 08:55:37 +01:00
Benjamin Saunders 87086eade7 Cut header
This is redundant to the banner, among other things.
2021-11-04 08:51:38 +01:00
Benjamin Saunders 3be524c7f7 Update README 2021-11-04 08:51:38 +01:00