Commit acc8c6f
authored
fix(http): preserve keep-alive after reading request body (#36690)
Fixes #36657.
The raw HTTP/1 server path treated every non-prebuffered request body as
non-reusable, even after JavaScript had reached end-of-stream. Track
when the JS reader finishes, preserve keep-alive only after the reader
releases the connection, and drain any cancelled remainder before
parsing the next pipelined request. Unread and in-flight bodies still
close the connection.
Tests:
- `cargo build --bin deno`
- `cargo test -p deno_http_h1`
- `tests/unit/serve_test.ts`
- scoped Clippy and formatting checks
AI disclosure: This change was developed with assistance from OpenAI
Codex.1 parent 5d5600f commit acc8c6f
2 files changed
Lines changed: 115 additions & 17 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1606 | 1606 | | |
1607 | 1607 | | |
1608 | 1608 | | |
| 1609 | + | |
| 1610 | + | |
| 1611 | + | |
| 1612 | + | |
| 1613 | + | |
| 1614 | + | |
| 1615 | + | |
1609 | 1616 | | |
1610 | 1617 | | |
1611 | 1618 | | |
| |||
1653 | 1660 | | |
1654 | 1661 | | |
1655 | 1662 | | |
1656 | | - | |
1657 | | - | |
1658 | | - | |
1659 | | - | |
1660 | | - | |
| 1663 | + | |
| 1664 | + | |
| 1665 | + | |
| 1666 | + | |
| 1667 | + | |
| 1668 | + | |
| 1669 | + | |
1661 | 1670 | | |
1662 | 1671 | | |
1663 | 1672 | | |
| |||
1691 | 1700 | | |
1692 | 1701 | | |
1693 | 1702 | | |
1694 | | - | |
| 1703 | + | |
| 1704 | + | |
| 1705 | + | |
| 1706 | + | |
| 1707 | + | |
| 1708 | + | |
| 1709 | + | |
1695 | 1710 | | |
1696 | 1711 | | |
1697 | 1712 | | |
| |||
3743 | 3758 | | |
3744 | 3759 | | |
3745 | 3760 | | |
3746 | | - | |
| 3761 | + | |
3747 | 3762 | | |
3748 | 3763 | | |
3749 | 3764 | | |
| |||
3827 | 3842 | | |
3828 | 3843 | | |
3829 | 3844 | | |
| 3845 | + | |
| 3846 | + | |
| 3847 | + | |
| 3848 | + | |
| 3849 | + | |
| 3850 | + | |
| 3851 | + | |
| 3852 | + | |
| 3853 | + | |
| 3854 | + | |
| 3855 | + | |
| 3856 | + | |
| 3857 | + | |
| 3858 | + | |
3830 | 3859 | | |
3831 | 3860 | | |
3832 | 3861 | | |
| |||
4855 | 4884 | | |
4856 | 4885 | | |
4857 | 4886 | | |
| 4887 | + | |
| 4888 | + | |
| 4889 | + | |
| 4890 | + | |
| 4891 | + | |
4858 | 4892 | | |
4859 | 4893 | | |
4860 | | - | |
4861 | 4894 | | |
4862 | 4895 | | |
4863 | 4896 | | |
4864 | 4897 | | |
4865 | 4898 | | |
4866 | | - | |
| 4899 | + | |
4867 | 4900 | | |
4868 | 4901 | | |
4869 | 4902 | | |
4870 | 4903 | | |
4871 | 4904 | | |
4872 | 4905 | | |
4873 | 4906 | | |
4874 | | - | |
| 4907 | + | |
4875 | 4908 | | |
4876 | 4909 | | |
4877 | 4910 | | |
| |||
4911 | 4944 | | |
4912 | 4945 | | |
4913 | 4946 | | |
| 4947 | + | |
| 4948 | + | |
| 4949 | + | |
| 4950 | + | |
| 4951 | + | |
| 4952 | + | |
| 4953 | + | |
| 4954 | + | |
| 4955 | + | |
| 4956 | + | |
| 4957 | + | |
4914 | 4958 | | |
4915 | 4959 | | |
4916 | | - | |
4917 | | - | |
4918 | | - | |
4919 | | - | |
4920 | | - | |
4921 | | - | |
| 4960 | + | |
| 4961 | + | |
4922 | 4962 | | |
4923 | 4963 | | |
4924 | | - | |
| 4964 | + | |
4925 | 4965 | | |
4926 | 4966 | | |
4927 | 4967 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3301 | 3301 | | |
3302 | 3302 | | |
3303 | 3303 | | |
| 3304 | + | |
| 3305 | + | |
| 3306 | + | |
| 3307 | + | |
| 3308 | + | |
| 3309 | + | |
| 3310 | + | |
| 3311 | + | |
| 3312 | + | |
| 3313 | + | |
| 3314 | + | |
| 3315 | + | |
| 3316 | + | |
| 3317 | + | |
| 3318 | + | |
| 3319 | + | |
| 3320 | + | |
| 3321 | + | |
| 3322 | + | |
| 3323 | + | |
| 3324 | + | |
| 3325 | + | |
| 3326 | + | |
| 3327 | + | |
| 3328 | + | |
| 3329 | + | |
| 3330 | + | |
| 3331 | + | |
| 3332 | + | |
| 3333 | + | |
| 3334 | + | |
| 3335 | + | |
| 3336 | + | |
| 3337 | + | |
| 3338 | + | |
| 3339 | + | |
| 3340 | + | |
| 3341 | + | |
| 3342 | + | |
| 3343 | + | |
| 3344 | + | |
| 3345 | + | |
| 3346 | + | |
| 3347 | + | |
| 3348 | + | |
| 3349 | + | |
| 3350 | + | |
| 3351 | + | |
| 3352 | + | |
| 3353 | + | |
| 3354 | + | |
| 3355 | + | |
| 3356 | + | |
| 3357 | + | |
| 3358 | + | |
| 3359 | + | |
| 3360 | + | |
| 3361 | + | |
3304 | 3362 | | |
3305 | 3363 | | |
3306 | 3364 | | |
| |||
0 commit comments