Commit Graph

2620 Commits

Author SHA1 Message Date
stammw 60949bc0df H3: make streams reset() take &mut, not ownership 2020-05-04 17:59:05 +02:00
stammw ae4b61cf1e H3: impl HttpBody for Body 2020-05-04 17:59:05 +02:00
Dirkjan Ochtman 8a97c8d397 H3: change structure of Body 2020-05-04 17:59:05 +02:00
stammw 74d8798b5d H3: create Error variant for Body errors
This is preparing the HttpBody integration: Error::Body(HttpBody::Error)
2020-05-04 17:59:05 +02:00
stammw 90008bf7fb H3: make payload-frames carry a Buf impl
The HttpBody trait make use of `bytes::Buf` to reference the data. As
the code was holding `Bytes`, a copy would have been necessary.
Introduces a parameter type bound on Buf instead of Bytes for
payload-frames transmits.
2020-05-04 17:59:05 +02:00
Benjamin Saunders 09ac124ae6 Pass header/packet keys together when sensible 2020-05-04 16:39:43 +02:00
Benjamin Saunders d91f9c2b39 Rename connection::spaces::CryptoSpace to crypto::Keys 2020-05-04 16:39:43 +02:00
Benjamin Saunders 167faaaa66 Rename crypto::Session::Key to PacketKey 2020-05-04 16:39:43 +02:00
Benjamin Saunders 07f42f99ee Split keys by direction
Allows 0-RTT keys, which are one-way only, to be more gracefully
represented.
2020-05-04 16:39:43 +02:00
Benjamin Saunders 5ee014937d Isolate secrets from keys
Paves the way for secrets to become internal to rustls
2020-05-04 16:39:43 +02:00
Benjamin Saunders 120a72bbd3 Move initial key construction into crypto::Session
Paves the way for further key decomposition.
2020-05-04 16:39:43 +02:00
Benjamin Saunders 4a5d9cd632 Compute new 1-RTT keys without reference to prior ones
Prerequisite to moving secrets out of keys
2020-05-04 16:39:43 +02:00
Benjamin Saunders 882ca19d88 More debuggable key update test 2020-05-04 16:39:43 +02:00
Benjamin Saunders ca6776658a Listen on IPv6 by default in h3 server example 2020-05-04 07:10:50 +02:00
Benjamin Saunders 31d1a4c0db Add license to interop crate 2020-05-04 07:10:50 +02:00
Benjamin Saunders fc77a98445 Send 0.5-RTT responses from interop server 2020-05-03 08:58:03 +02:00
Benjamin Saunders e9e03766d6 Don't duplicate key update logic provided by rustls 2020-05-02 12:00:59 -07:00
Benjamin Saunders d641dc2014 Rename TLS to crypto in crypto-agnostic code 2020-05-02 12:00:59 -07:00
Benjamin Saunders 386cc04bf9 Report cryptographic alert codes 2020-05-01 10:47:32 +02:00
Benjamin Saunders 16126d29b7 Minimal siduck support in interop client 2020-05-01 10:47:32 +02:00
Benjamin Saunders 715106f480 Support siduck in interop server 2020-05-01 10:47:32 +02:00
Benjamin Saunders e8d0ef724f Style tweaks 2020-05-01 10:47:32 +02:00
Benjamin Saunders e6e8bb45c0 Remove obsolete exports 2020-04-30 07:32:55 +02:00
Dirkjan Ochtman 81cbbd5f87 Rename increase_max_data() to received_max_data() for consistency 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman a6de6b96ca Clean up unnecessary helper functions
Undo the borrow checker workarounds.
2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 41de76db35 Refactor incoming stream ID validation to clean up code 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 4e58e7d83b Extract logic for STOP_SENDING into Streams::is_peer_finished() 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 1f434a6474 Write stream control frames from inside Streams 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 9aba2955a3 Keep configured stream_receive_window in Streams 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 545cfbd4e5 Move local_max_data state into Streams 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 261d0f7f54 Move data_recvd state into Streams 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman eef5baca82 Move handling of MaxStreams frames into Streams 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman be720e1315 Privatize many more streams APIs 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman aec6f7208c Move call to on_stream_frame() into Streams::reset() 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman ea8b59c9f3 Move incoming ResetStream handling into Streams 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 41dd45da66 Call on_stream_frame() directly from increase_max_stream_data() 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman d108cefc0d Handle received stream frames in Streams 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 65429d6097 Move on_stream_frame() into Streams 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 20c8ee1a69 Keep side state in Streams 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 4eedff0653 Handle MaxStreamData frame in Streams 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman b65e78009d Let Streams::reset() prepare events 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman ccf6a0b5e0 Let Streams::ack() prepare events 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman fb544ad43f Store stream events in Streams 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 682c5863d5 Introduce separate StreamEvent enum 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 9b7757664e Move stream opened state into Streams 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 6482674762 Move Streams update from parameters into Streams 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 7f883511bf Move acked stream reset logic into Streams 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 0aebc7592f Split config module out of shared module 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 2541e56961 Group modules used to build Connection 2020-04-28 13:06:10 -07:00
Dirkjan Ochtman 349925bd95 Collect Connection public API together at the top 2020-04-28 13:06:10 -07:00