diff options
author | Noxazer <Noxazer-FR@users.noreply.github.com> | 2020-12-31 00:17:41 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-31 00:17:41 +0100 |
commit | 0163cedd804110cd410eb2cb92b299b0e555527f (patch) | |
tree | 5f67fa73cfafbf62851283e8edaf14914ae680eb | |
parent | e568ddf99687f635abe931c1eff2b8b37be3bc54 (diff) |
fix(std/http): parsing of HTTP version header (#8902)
-rw-r--r-- | std/http/_io.ts | 2 | ||||
-rw-r--r-- | std/http/_io_test.ts | 11 |
2 files changed, 12 insertions, 1 deletions
diff --git a/std/http/_io.ts b/std/http/_io.ts index b7efaf8e5..4ff3dd4e6 100644 --- a/std/http/_io.ts +++ b/std/http/_io.ts @@ -346,7 +346,7 @@ export async function readRequest( req.conn = conn; req.r = bufr; [req.method, req.url, req.proto] = firstLine.split(" ", 3); - [req.protoMinor, req.protoMajor] = parseHTTPVersion(req.proto); + [req.protoMajor, req.protoMinor] = parseHTTPVersion(req.proto); req.headers = headers; fixLength(req); return req; diff --git a/std/http/_io_test.ts b/std/http/_io_test.ts index 14675a799..7c1a80a2f 100644 --- a/std/http/_io_test.ts +++ b/std/http/_io_test.ts @@ -407,6 +407,11 @@ Deno.test("testReadRequestError", async function (): Promise<void> { in: "GET / HTTP/1.1\r\nheader:foo\r\n", err: Deno.errors.UnexpectedEof, }, + { + in: "POST / HTTP/1.0\r\n\r\n", + headers: [], + version: true, + }, { in: "", eof: true }, { in: "HEAD / HTTP/1.1\r\nContent-Length:4\r\n\r\n", @@ -472,6 +477,12 @@ Deno.test("testReadRequestError", async function (): Promise<void> { assert(err instanceof (test.err as typeof Deno.errors.UnexpectedEof)); } else { assert(req instanceof ServerRequest); + if (test.version) { + // return value order of parseHTTPVersion() function have to match with [req.protoMajor, req.protoMinor]; + const version = parseHTTPVersion(test.in.split(" ", 3)[2]); + assertEquals(req.protoMajor, version[0]); + assertEquals(req.protoMinor, version[1]); + } assert(test.headers); assertEquals(err, undefined); assertNotEquals(req, null); |