cloudflare / cloudflare/quiche

tokio-quiche: Client cancels HTTP3 request

Open
#2,288 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
11.8k
Forks
1.1k
Avg merge
21h 9m
Merged PRs (30d)
6

Description

Hi!
While debugging a different issue in tokio-quiche I rebased my work and noticed that my examples aren't working anymore. Specifically, the handshake completes, but my server sends a reset request after the client cancels the HTTP3 request (as the error code in the reset_stream is 0x10c).

I've tried debugging why this happens, but haven't made any real progress and would be helpful about any help.
Steps to reproduce:
1. My used examples can be found in https://github.com/Nadel1/quiche/tree/crypto_fail/tokio-quiche/src/bin . The examples tokio-server and tokio-client are based on the example code given in https://github.com/cloudflare/quiche/blob/master/tokio-quiche/README.md
2. Set environment variable `SSLKEYLOGFILE` to log keys
3. Start wireshark and log loopback
4. Start server with `cargo run --bin tokio-server -- --root . ` (I wanted to modify the README code as little as possible, so the paths to the certificate and key are hardcoded, requiring this command to be executed in the `tokio-quiche` folder)
5. Start client with `cargo run --bin tokio-client`

The client will receive the Reset event, but never the requested file. I extended the server code to deal with non-existent requested files, but that is apparently not triggered at all, since it doesnt matter whether I request correct or incorrect file paths, so it doesnt seem like the request itself is the issue.

I'd be grateful for any debugging pointers you might provide me with!

Natia

Contributor guide

Open the contributing guide

Research direction

Start with the tokio-quiche/src/bin examples and the tokio-quiche README example, then reproduce with the listed cargo run commands while capturing loopback traffic in Wireshark and using SSLKEYLOGFILE. Done means tokio-client receives the requested file instead of a Reset event, for both valid and invalid requested paths.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.