diff --git a/std/http/_io.ts b/std/http/_io.ts index b7efaf8e53..4ff3dd4e6b 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 14675a799c..7c1a80a2fc 100644 --- a/std/http/_io_test.ts +++ b/std/http/_io_test.ts @@ -407,6 +407,11 @@ Deno.test("testReadRequestError", async function (): Promise { 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 { 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);