Commit Graph

2620 Commits

Author SHA1 Message Date
Dirkjan Ochtman 9327784e99 Move transmit_handshake() into Connection type 2018-09-06 16:05:04 +02:00
Dirkjan Ochtman e5558cb821 Move gen_initial_packet_num() into Context 2018-09-06 16:05:04 +02:00
Dirkjan Ochtman 4bc02e4b32 Introduce Context type to hold connection-accessible Endpoint state 2018-09-06 16:05:04 +02:00
Dirkjan Ochtman 6149d76ec7 Move core integration tests into library module 2018-09-06 16:05:04 +02:00
Dirkjan Ochtman 5a98c1fa8e Move Connection type and related code into separate module 2018-09-06 16:04:55 +02:00
Dirkjan Ochtman f2d4bb42a5 Move TLS code into a separate module 2018-09-05 21:17:49 +02:00
Dirkjan Ochtman b1d912c555 Abstract creation of TLS context into separate function 2018-09-04 16:15:01 +02:00
Dirkjan Ochtman 1c122c8fa3 Fix formatting with cargo fmt 2018-08-30 17:32:09 +02:00
Benjamin Saunders 36f1724586 Update recommended OpenSSL version
Fix tests to match its NewSessionTicket behavior while we're at it
pre-quinn-quicr
2018-07-29 16:45:41 -07:00
Dirkjan Ochtman 1876cbd28b rustls has draft 28 support on master now pre-quicr-quinn 2018-07-29 21:11:36 +02:00
dependabot[bot] 383ff1d4d5 Update webpki-roots requirement to 0.15
Updates the requirements on [webpki-roots](https://github.com/ctz/webpki-roots) to permit the latest version.
- [Release notes](https://github.com/ctz/webpki-roots/releases)
- [Commits](https://github.com/ctz/webpki-roots/commits)

Signed-off-by: dependabot[bot] <support@dependabot.com>
2018-07-16 16:23:44 +01:00
Dirkjan Ochtman 05d0515c93 Update to new ring/webpki releases 2018-07-13 20:43:39 +01:00
Dirkjan Ochtman 108bfa436f Store protocol version in ConnectionState 2018-07-03 11:28:12 +02:00
Dirkjan Ochtman 066af2b16a Deduplicate code in Client constructors 2018-07-03 11:24:15 +02:00
Dirkjan Ochtman 5bcc87131d Pass version into transport parameters 2018-07-03 11:24:15 +02:00
Dirkjan Ochtman 82455bc917 Use new() to initialize transport parameters types 2018-07-03 11:24:15 +02:00
Dirkjan Ochtman bcb7a231aa Fix formatting with cargo fmt 2018-07-03 11:24:15 +02:00
Benjamin Saunders 845d60ed5d Expose callback for application-level authentication of client certs 2018-06-27 19:49:03 -07:00
Dirkjan Ochtman 68a8dd54a5 Require secure version of untrusted 2018-06-26 10:03:26 +02:00
Benjamin Saunders 6751a02543 Bump versions 2018-06-22 18:33:05 -07:00
Benjamin Saunders 031e852b29 Use released OpenSSL bindings 2018-06-22 18:29:56 -07:00
king6cong 0a447c629d doc: typo fix 2018-06-22 18:27:11 -07:00
Dirkjan Ochtman 19803d4c4e Add paragraph pointing to Patreon 2018-06-22 22:08:30 +02:00
Dirkjan Ochtman 9cca798104 Upgrade to tarpaulin-0.6.0 2018-06-12 09:20:16 +02:00
Dirkjan Ochtman 3ba4932078 Improve error message about unexpected DCID 2018-06-07 15:18:42 +02:00
Dirkjan Ochtman ae21da1f10 Only set new state after queueing packet 2018-06-07 15:18:08 +02:00
Dirkjan Ochtman 55ba306a7b Derive Copy for State enum 2018-06-07 15:17:31 +02:00
Dirkjan Ochtman 6287c0bfb1 Apply formatting changes from newer cargo fmt 2018-06-07 14:54:33 +02:00
Dirkjan Ochtman 2a13a2ae36 Add new Client::connect_with_tls_config() API method 2018-06-07 14:52:38 +02:00
Dirkjan Ochtman 9cd7059741 Link to video from the talk in README 2018-06-03 15:07:19 +02:00
Dirkjan Ochtman b81937b522 Implement careful packetization and use stream buffers for TLS (fixes #3, #18)
This is an unfortunately large commit that intertwines several things:

- Use stream buffers to mediate sending and receiving data
- Use regular stream data transfer for stream 0 (TLS)
- Carefully packetize outgoing messages

The packetization approach is basically to include all non-STREAM frames,
assuming for now that they will always fit into a packet. The packet
size is set conservatively at the maximum allowed path MTU (1232 bytes
for IPv6). Remaining bytes will be filled with STREAM frames.

Additionally, a connection can now queue more than one packet at a time.
2018-06-02 15:51:49 +02:00
Dirkjan Ochtman 37f4c9b4ee Only send ACK frames after receiving non-ACK payloads 2018-06-02 15:47:35 +02:00
Dirkjan Ochtman 8770660228 Rename Streams::queue to Streams::control 2018-06-02 15:47:35 +02:00
Dirkjan Ochtman 6925b216ab Make StreamRef id field public 2018-06-02 15:47:35 +02:00
Dirkjan Ochtman 64b8f3ba92 Always send long headers with two-byte payload length 2018-06-02 15:47:35 +02:00
Dirkjan Ochtman c838c970e4 Change Streams::init_send() to return Result instead of Option 2018-06-02 15:23:49 +02:00
Dirkjan Ochtman ddb73681d1 Open up stream 0 for both sides 2018-06-01 15:13:24 +02:00
Dirkjan Ochtman c50495e111 Use Default::default() for Stream constructor 2018-06-01 15:12:30 +02:00
Dirkjan Ochtman bb92fbb718 Derive Debug for Stream type 2018-06-01 15:11:42 +02:00
Dirkjan Ochtman 94b547c987 Address clippy suggestions 2018-05-31 13:18:52 +02:00
Dirkjan Ochtman 65bf02c924 Fix formatting with cargo fmt 2018-05-31 13:14:02 +02:00
Dirkjan Ochtman 4174627231 Remove final traces of Packet type 2018-05-31 13:13:36 +02:00
Dirkjan Ochtman db77ec5c5e Move PartialDecode::finish() implementation into ConnectionState::handle_partial() 2018-05-31 13:08:41 +02:00
Dirkjan Ochtman eb3ec93934 Move packet encoding into ConnectionState::queue_packet() 2018-05-31 12:57:28 +02:00
Dirkjan Ochtman c641646870 Build packets just in time 2018-05-31 12:05:37 +02:00
Dirkjan Ochtman 4cb49b6d78 Fix formatting with cargo fmt 2018-05-30 15:58:29 +02:00
Dirkjan Ochtman e32f9d99cf Handle errors from creating TLS server configuration 2018-05-30 15:58:23 +02:00
Dirkjan Ochtman 7db2c3753a Use tokio::run() to run the example server 2018-05-30 15:55:24 +02:00
Dirkjan Ochtman 94f31ffef3 Fix client default local addresses to allow any interface 2018-05-30 15:47:55 +02:00
Dirkjan Ochtman b6e436b514 Use current_thread::Runtime for running tests 2018-05-30 13:24:04 +02:00