Correct repeated Transfer-Encoding and Content-Length response framing
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 52/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Ít trao đổi
- Công nghệ
- rust
- Lĩnh vực
- networking
Hướng nghiên cứu
Bắt đầu trong src/http_proxy.rs bằng cách đọc header_field, content_length, is_transfer_encoding_chunked và response_body, sau đó lần theo response pump được giới thiệu bởi #23. Bổ sung coverage ở phía response cho các trường hợp Transfer-Encoding và Content-Length lặp lại và sai định dạng, bao gồm cả trường hợp mỗi trường hợp đều được theo sau bởi một keep-alive response. Hoàn tất khi framing, việc từ chối và sự tương ứng của response khớp với mọi tiêu chí chấp nhận.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Follow-up from the post-merge review of #23.
Problem
The new HTTP/1 response pump uses header_field, which returns only the first field with a given name. Response framing therefore does not correctly handle repeated Transfer-Encoding or Content-Length fields.
Examples:
Transfer-Encoding: gzipfollowed byTransfer-Encoding: chunkedis validly terminated by chunked framing, but the proxy sees only the first field and treats the response as read-to-close.- Conflicting Content-Length fields are not rejected.
- A malformed first Content-Length becomes indistinguishable from no framing and is treated as read-to-close.
On keep-alive connections this can consume subsequent responses as part of the preceding body, break request/response correspondence, or stall until the upstream closes.
Location
src/http_proxy.rs:header_field,content_length,is_transfer_encoding_chunked, andresponse_body- Response pump introduced by #23.
Acceptance criteria
- Combine all Transfer-Encoding field values in wire order and frame as chunked only when the final coding is
chunked. - Validate every Content-Length occurrence, including comma-list normalization where supported; reject conflicting or malformed values.
- Define and test behavior when Transfer-Encoding and Content-Length coexist in a response.
- Add response-side tests for:
- repeated TE ending in chunked;
- repeated TE not ending in chunked;
- identical repeated CL;
- conflicting CL;
- malformed CL;
- each case followed by another keep-alive response to verify correspondence.
- Ngôn ngữ chính
- Rust
- Star
- 1
- Fork
- 0
- Merge trung bình
- 19 giờ 12 phút
- Pull request đã merge (30 ngày)
- 13
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của HarperFast/symphony
-
Don't route to a restarted upstream until it serves, not just acceptsCó thể đã có người làm @kriszyp đã nhận 5 ngày trước. Đang mở
HarperFast/symphony#84 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Forward to a peer when the local upstream connect fails on a TLS-terminating failover routeCó thể đã có người làm @kriszyp đã nhận 5 ngày trước. Đang mở
HarperFast/symphony#83 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
HarperFast/symphony#80 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Forward a connection to a peer when its local upstream connect failsCó thể đã có người làm @kriszyp đã nhận 5 ngày trước. Đang mở
HarperFast/symphony#79 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
HarperFast/symphony#77 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của HarperFast/symphony
Issue tương tự
-
area: cli kind:docs priority: P3
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
swc-project/swc-ai-issues#164 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
pop-os/cosmic-player#367 ·
-
good first issue help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
servo/rust-smallvec#873 ·