Commit Graph

2620 Commits

Author SHA1 Message Date
dependabot-preview[bot] a141a16e0d Update proptest requirement from 0.9.1 to 0.10.0
Updates the requirements on [proptest](https://github.com/altsysrq/proptest) to permit the latest version.
- [Release notes](https://github.com/altsysrq/proptest/releases)
- [Changelog](https://github.com/AltSysrq/proptest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/altsysrq/proptest/compare/v0.9.1...0.10.0)

Signed-off-by: dependabot-preview[bot] <support@dependabot.com>
2020-06-01 21:20:54 -07:00
Benjamin Saunders 605a5a5f19 Style tweak 2020-06-01 11:52:34 +02:00
Benjamin Saunders 8250afc34f Simplify stream state disposal
We dispose of stream states when a receive stream is fully read or
reset or a send stream's finish or reset is acked. There are no subtle
qualifiers, so we can take immediate unconditional action.
2020-06-01 11:52:34 +02:00
Benjamin Saunders df390ddf07 Remove transport-layer implicit reset on stop
Defers responsibility for closing send streams to the
application. This simplifies the stream lifecycle, because we no
longer need to track whether a stop was observed in a write error and
potentially free stream state after returning one. Fixes a stream
state leak for applications which don't necessarily observe write
errors.
2020-06-01 11:52:34 +02:00
Benjamin Saunders cf7f492631 Clarify method name 2020-06-01 11:52:34 +02:00
Benjamin Saunders 64d357650c Remove obsolete comment 2020-06-01 11:52:34 +02:00
Benjamin Saunders 888b617c16 Decouple incoming STOP_SENDING and outgoing RESET_STREAM handling 2020-06-01 11:52:34 +02:00
Benjamin Saunders 949068138f Factor stop_reason out of SendState 2020-06-01 11:52:34 +02:00
Benjamin Saunders 333c3acb19 Reduce duplication 2020-05-29 16:04:52 +02:00
Benjamin Saunders de44b35393 Additional RangeSet docs 2020-05-29 16:04:52 +02:00
Benjamin Saunders fe10e89409 Return a read error on ordered-after-unordered reads 2020-05-29 16:04:52 +02:00
Benjamin Saunders f5c01d4d8d Insurance against panic on reading a closed stream
This was probably unreachable as we dispose of closed receive streams
immediately after they become such, but if that ever changes we still
don't want to panic.
2020-05-29 16:04:52 +02:00
Benjamin Saunders 39e370e785 Rename Assembler::limit to Assembler::end for clarity 2020-05-29 16:04:52 +02:00
Benjamin Saunders de4323ed24 Proactively deduplicate stream data when using unordered reads
Ensures we don't yield the same data to the application repeatedly,
and only issue flow control credit in response to new data.
2020-05-29 16:04:52 +02:00
Benjamin Saunders bdedc0ab2e Remove unused fine-grained received range tracking 2020-05-29 16:04:52 +02:00
Benjamin Saunders a604266fa7 Remove redundant receive stream state
DataRecvd was used to identify when all data has been received but not
yet read by the application, but we can determine that on-demand in
the Recvd state.
2020-05-29 16:04:52 +02:00
Benjamin Saunders dbe26a7ba1 Fix incorrect initial offset in Assembler::defragment
When there's a leading gap in the buffered data or unordered reads are
in use, `self.offset` does not represent the starting point of the
first chunk.
2020-05-29 16:04:52 +02:00
Benjamin Saunders cdb3074402 Fix miscounting of unordered bytes read 2020-05-29 16:04:52 +02:00
Jean-Christophe BEGUE cbbd76ec60 H3: poll for STOP_SENDING 2020-05-29 15:22:26 +02:00
Jean-Christophe BEGUE 58a3c057c4 Stopped event for SendStream 2020-05-29 15:22:26 +02:00
Benjamin Saunders 29b3bba38f More generous default receive buffer size 2020-05-29 07:37:28 +02:00
Dirkjan Ochtman 01bb2f1162 Clarify documentation on setting up mTLS (fixes #772) 2020-05-27 18:53:52 -07:00
Benjamin Saunders ed6a8ac778 Fold reset/retry tokens into the same module 2020-05-25 06:22:35 +02:00
Benjamin Saunders a0b7e19aeb Apply our usual contractions to transport parameter names 2020-05-25 06:22:35 +02:00
Benjamin Saunders 17dae925f0 Clarify token payload 2020-05-25 06:22:35 +02:00
Benjamin Saunders bd217aecf1 Shorter retry token
A well-behaved client sends retried Initial packets to the source
CID provided in the Retry packet, i.e. the retry_src_cid. Just like
the source address, this means that it's present in the incoming
packet already so we don't need to encode it explicitly in the retry
token, just authenticate it.
2020-05-25 06:22:35 +02:00
Benjamin Saunders 14920a516b Remove unnecessary unwrap 2020-05-25 06:22:35 +02:00
Benjamin Saunders d0d6afbffe Refactor transport parameter CID encode/decode 2020-05-25 06:22:35 +02:00
Benjamin Saunders f2178ff91c Factor out common connection ID encode/decode logic 2020-05-25 06:22:35 +02:00
Benjamin Saunders 47dad2292e Bundle retry token payload into a struct 2020-05-25 06:22:35 +02:00
Benjamin Saunders ca689d33d6 Update version numbers for draft 28 2020-05-25 06:22:35 +02:00
Benjamin Saunders 075fbb2ab9 Don't reset PTO backoff when our address need not be validated 2020-05-25 06:22:35 +02:00
Benjamin Saunders 8c81bb7c6e Remove dead state 2020-05-25 06:22:35 +02:00
Benjamin Saunders 7f7717ba46 Correct errors on illegal stream limits 2020-05-25 06:22:35 +02:00
Benjamin Saunders 5329a047ab Discard spurious version negotiation packets 2020-05-25 06:22:35 +02:00
Benjamin Saunders f9ef94f155 Discard Retry packets after successfully decrypting anything else 2020-05-25 06:22:35 +02:00
Benjamin Saunders b5021d46dd Don't leak application close details during handshake 2020-05-25 06:22:35 +02:00
Benjamin Saunders f5d4ab5624 Capture connection ID from preferred address TP
Previously, that slot in the active connection ID limit would be
leaked.
2020-05-25 06:22:35 +02:00
Benjamin Saunders 1d7a32f70f Simplify sending of initial close packets 2020-05-25 06:22:35 +02:00
Benjamin Saunders 085236b2f4 Fix inverted 0-RTT transport parameter validation 2020-05-25 06:22:35 +02:00
Benjamin Saunders e15b2be713 Rename Connection.params to peer_params for clarity 2020-05-25 06:22:35 +02:00
Benjamin Saunders b4ae98b0b3 Move retry token logic into a dedicated module 2020-05-25 06:22:35 +02:00
Benjamin Saunders 0422deada1 Draft 28 transport parameters 2020-05-25 06:22:35 +02:00
Benjamin Saunders 9085f457e8 Update rustls for interop fixes 2020-05-24 11:03:11 -07:00
Benjamin Saunders d92a567034 Return UnknownStream from Connection::reset for closed/reset streams
Improves consistency with other stream interfaces. H3 logic was
updated to ignore errors to preserve existing behavior, but future
work might want to insert some unwraps there if static correctness
guarantees are available.
2020-05-23 19:08:46 +02:00
Benjamin Saunders cd63774c0b Don't reference a hidden interface in documentation 2020-05-23 19:08:46 +02:00
Dirkjan Ochtman de5dc88782 Move DecodeHeaders into data module 2020-05-22 15:21:36 +02:00
Dirkjan Ochtman 7117e01929 Move WriteFrame into data module 2020-05-22 15:21:36 +02:00
Dirkjan Ochtman aa1ebbab76 H3: simplify ownership of SendStream (fixes #768) 2020-05-22 15:21:36 +02:00
Jean-Christophe BEGUE 68b866bc63 H3: Ignore unknown incoming uni stream 2020-05-21 10:42:26 +02:00