diff options
author | Divy Srivastava <dj.srivastava23@gmail.com> | 2022-04-25 22:50:29 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-25 19:20:29 +0200 |
commit | 609c359dd448f2a7736ba1d93e94e1feff6acadc (patch) | |
tree | 284387075ed07627cff88f2cdba7bb5811dca7e5 /cli | |
parent | c0e3b6096d37e9a4243c7ad461487db291c824fa (diff) |
fix(ext/http): truncate read bytes when streaming bodies (#14389)
stream shutdown wasn't happening correctly (moved it to call op_http_shutdown) & extra zeroed bytes were being sent for when body length not a multiple of 64*1024
Diffstat (limited to 'cli')
-rw-r--r-- | cli/tests/unit/http_test.ts | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/cli/tests/unit/http_test.ts b/cli/tests/unit/http_test.ts index a27fcbc23..39bc82fb0 100644 --- a/cli/tests/unit/http_test.ts +++ b/cli/tests/unit/http_test.ts @@ -856,6 +856,32 @@ Deno.test({ permissions: { net: true } }, async function httpServerPanic() { Deno.test( { permissions: { net: true, write: true, read: true } }, + async function httpServerCorrectSizeResponse() { + const tmpFile = await Deno.makeTempFile(); + const file = await Deno.open(tmpFile, { write: true, read: true }); + await file.write(new Uint8Array(70 * 1024).fill(1)); // 70kb sent in 64kb + 6kb chunks + file.close(); + const promise = (async () => { + const listener = Deno.listen({ port: 4503 }); + const conn = await listener.accept(); + const httpConn = Deno.serveHttp(conn); + const ev = await httpConn.nextRequest(); + const { respondWith } = ev!; + const f = await Deno.open(tmpFile, { read: true }); + await respondWith(new Response(f.readable, { status: 200 })); + httpConn.close(); + listener.close(); + f.close(); + })(); + const resp = await fetch("http://127.0.0.1:4503/"); + const body = await resp.arrayBuffer(); + assertEquals(body.byteLength, 70 * 1024); + await promise; + }, +); + +Deno.test( + { permissions: { net: true, write: true, read: true } }, async function httpServerClosedStream() { const listener = Deno.listen({ port: 4502 }); |