Add configurable limits for HTTP response bodies
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 52/100
- Type d'issue
- Fonctionnalité
- Clarté
- Plutôt claire
- Activité
- Calme
- Stack technique
- rust
- Domaine
- cli, networking
Piste de recherche
Commencez dans src/http.rs:141-165, en particulier sur response.into_body().collect().await à la ligne 155, et examinez la configuration de request existante ainsi que les exemples HTTP. Définissez comment la limite est sélectionnée et comment l’erreur typée est exposée, puis imposez-la lors de la consommation des corps de longueur fixe comme des corps chunked. Le travail est terminé lorsque les tests d’acceptation couvrent les limites inférieures, égales et supérieures à la limite, ainsi que les limites chunked, et que les exemples existants passent sur les targets prises en charge.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Context
The HTTP host collects the complete response body into memory before returning it to Roc:
src/http.rs:141-165- specifically
response.into_body().collect().awaitat line 155
A slow response can be constrained with the existing request timeout, but there is no response-size limit. A server can therefore return a very large fixed-length or chunked body and cause excessive memory use or an allocation abort.
This matters for a general-purpose CLI platform because URLs and servers are often outside the application's control.
Suggested direction
Add an explicit maximum response-body size to the HTTP API. Design options include:
- a limit on the shared request configuration;
- a platform-level default plus an opt-in override;
- a separate bounded send operation.
Enforce the limit while consuming frames, rather than collecting first and checking afterward. Return a distinct typed error that callers can distinguish from malformed bodies and network failures.
A later streaming response API can be tracked separately; this issue only needs bounded buffering.
Acceptance criteria
- Callers can select or rely on a documented finite response-body limit.
- Both
Content-Lengthresponses and chunked/unknown-length responses are stopped before exceeding the limit. - Exceeding the limit returns a documented typed error rather than panicking or aborting.
- Tests cover a body just below the limit, exactly at it, above it, and a chunked body above it.
- Existing normal HTTP examples continue to pass on every supported target.
- Langage dominant
- Rust
- Étoiles
- 121
- Forks
- 46
- Merge moyen
- 12 h 20 min
- PR mergées (30 j)
- 18
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de roc-lang/basic-cli
-
Unix socket supportOuverte
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
roc-lang/basic-cli#500 · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
roc-lang/basic-cli#482 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 45/100
roc-lang/basic-cli#455 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 32/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de roc-lang/basic-cli
Issues similaires
-
Stack overflow in `check bans` with `include-dependencies = true` and a dev-dependency cycleOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
EmbarkStudios/cargo-deny#910 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
tursodatabase/turso#10054 ·
Les mainteneurs répondent en général sous 1 jour
-
build: Update rust versionPeut-être pris Une pull request liée à cette issue est ouverte ou déjà fusionnée. Ouvertedependencies
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
ibm-granite-community/granite-cli#229 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 2 jours
-
setTargetAtTime booked ahead of time starts its curve early (values blow up before start_time)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
orottier/web-audio-api-rs#658 ·