Bound HTTP/1 request metadata queue under pipelining
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 58/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Tranquilo
- Stack tecnológico
- rust
- Área
- networking
Línea de trabajo
Empieza en src/http_proxy.rs, en proxy_http1_rewriting y rewrite_request_stream, y luego sigue cómo los metadatos de la solicitud corresponden a las solicitudes ordinarias, HEAD, las respuestas provisionales 1xx, Upgrade y CONNECT. Ejecuta las pruebas existentes de reescritura HTTP/1 antes de añadir una prueba upstream con respuesta retenida que demuestre que los metadatos permanecen acotados, e incluye el caso de rechazo MAX_HEADER_SIZE + 1 para el límite exacto de 64 KiB.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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.
- Lenguaje dominante
- Rust
- Estrellas
- 1
- Forks
- 0
- Merge medio
- 19 h 12 min
- PR fusionados (30 d)
- 13
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de HarperFast/symphony
-
Don't route to a restarted upstream until it serves, not just acceptsPosiblemente ocupada @kriszyp la tomó hace 5 días. Abierto
HarperFast/symphony#84 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Forward to a peer when the local upstream connect fails on a TLS-terminating failover routePosiblemente ocupada @kriszyp la tomó hace 5 días. Abierto
HarperFast/symphony#83 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
HarperFast/symphony#80 ·
Los mantenedores suelen responder en 1 día
-
Forward a connection to a peer when its local upstream connect failsPosiblemente ocupada @kriszyp la tomó hace 5 días. Abierto
HarperFast/symphony#79 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
HarperFast/symphony#77 ·
Los mantenedores suelen responder en 1 día
Todos los issues de HarperFast/symphony
Issues similares
-
area: cli kind:docs priority: P3
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
swc-project/swc-ai-issues#164 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
pop-os/cosmic-player#367 ·
-
good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
servo/rust-smallvec#873 ·