Bound HTTP/1 request metadata queue under pipelining
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 58/100
- Tipo di issue
- Bug
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Tranquilla
- Stack tecnologico
- rust
- Ambito
- networking
Direzione di ricerca
Inizia in src/http_proxy.rs, in proxy_http1_rewriting e rewrite_request_stream, quindi traccia come i metadati della richiesta corrispondono alle richieste ordinarie, HEAD, alle risposte provvisorie 1xx, Upgrade e CONNECT. Esegui i test esistenti di riscrittura HTTP/1 prima di aggiungere un test upstream con risposta trattenuta che dimostri che i metadati rimangono entro i limiti, e includi il caso di rifiuto MAX_HEADER_SIZE + 1 per il limite esatto di 64 KiB.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Follow-up from the post-merge review of #23.
Problem
The HTTP/1 rewriting path creates a tokio::sync::mpsc::unbounded_channel for request/response correspondence. rewrite_request_stream queues one RequestMeta before every forwarded request.
If an upstream continues reading requests but delays its responses, an unauthenticated client can pipeline requests indefinitely. The request pump continues adding metadata while the response pump cannot drain it, allowing per-connection memory growth without a defined bound.
This affects routes using HTTP header rewriting for X-Forwarded-For or JA3/JA4 forwarding.
Location
src/http_proxy.rs:proxy_http1_rewriting,rewrite_request_stream- Introduced by #23 while fixing Upgrade/CONNECT response correspondence.
Acceptance criteria
- Replace the unbounded metadata channel with bounded backpressure or enforce a documented maximum number of outstanding pipelined requests.
- The request pump must stop advancing when the response side reaches that limit.
- Preserve correct correspondence for ordinary requests, HEAD, interim 1xx responses, Upgrade, and CONNECT.
- Add a test with an upstream that reads requests but withholds responses, proving queued metadata remains bounded.
- Include the exact 64 KiB request-header boundary in the test cleanup:
MAX_HEADER_SIZE + 1must be rejected rather than relying on the current 70 KiB case.
- Lingua principale
- Rust
- Stelle
- 1
- Fork
- 0
- Merge medio
- 19h 12m
- PR unite (30g)
- 13
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di HarperFast/symphony
-
Don't route to a restarted upstream until it serves, not just acceptsForse già presa @kriszyp l’ha presa 5 giorni fa. Aperta
HarperFast/symphony#84 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Forward to a peer when the local upstream connect fails on a TLS-terminating failover routeForse già presa @kriszyp l’ha presa 5 giorni fa. Aperta
HarperFast/symphony#83 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 48/100
HarperFast/symphony#80 ·
I maintainer di solito rispondono entro 1 giorno
-
Forward a connection to a peer when its local upstream connect failsForse già presa @kriszyp l’ha presa 5 giorni fa. Aperta
HarperFast/symphony#79 · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
HarperFast/symphony#77 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di HarperFast/symphony
Issue simili
-
area: cli kind:docs priority: P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
swc-project/swc-ai-issues#164 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 85/100
pop-os/cosmic-player#367 ·
-
good first issue help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
servo/rust-smallvec#873 ·