diff options
author | Ryan Dahl <ry@tinyclouds.org> | 2020-04-02 15:20:17 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-02 15:20:17 -0400 |
commit | c8fc29fcca0171166b7093d278bfbe03d970f1a5 (patch) | |
tree | a35816104d6ebe94d3c689d212b41fde2fc77aac /std/http/io.ts | |
parent | 7a9273d9cfa8736575317bb3cc9465e07ed4ed18 (diff) |
Revert "Respond with 400 on request parse failure" (#4593)
readRequest should not write a response.
This reverts commit 017a611131a35ccf5dbfce6a2a665fa569e32ec1.
Diffstat (limited to 'std/http/io.ts')
-rw-r--r-- | std/http/io.ts | 35 |
1 files changed, 7 insertions, 28 deletions
diff --git a/std/http/io.ts b/std/http/io.ts index d16489767..b6bbfa17b 100644 --- a/std/http/io.ts +++ b/std/http/io.ts @@ -342,38 +342,17 @@ export function parseHTTPVersion(vers: string): [number, number] { export async function readRequest( conn: Deno.Conn, - // The reader and writer buffers may be constructed externally so they can be - // shared by requests on the same connection -- see `Server`. - reader?: BufReader, - writer?: BufWriter + bufr: BufReader ): Promise<ServerRequest | Deno.EOF> { - reader = reader ?? new BufReader(conn); - writer = writer ?? new BufWriter(conn); - const tp = new TextProtoReader(reader); - let firstLine: string | Deno.EOF; - let headers: Headers | Deno.EOF; - try { - firstLine = await tp.readLine(); // e.g. GET /index.html HTTP/1.0 - if (firstLine == Deno.EOF) { - return Deno.EOF; - } - headers = await tp.readMIMEHeader(); - if (headers == Deno.EOF) { - throw new Deno.errors.UnexpectedEof(); - } - } catch (error) { - // An error was thrown while parsing request headers. - await writeResponse(writer, { - status: 400, - body: encoder.encode(`${error.message}\r\n\r\n`), - }); - throw error; - } + const tp = new TextProtoReader(bufr); + const firstLine = await tp.readLine(); // e.g. GET /index.html HTTP/1.0 + if (firstLine === Deno.EOF) return Deno.EOF; + const headers = await tp.readMIMEHeader(); + if (headers === Deno.EOF) throw new Deno.errors.UnexpectedEof(); const req = new ServerRequest(); req.conn = conn; - req.r = reader; - req.w = writer; + req.r = bufr; [req.method, req.url, req.proto] = firstLine.split(" ", 3); [req.protoMinor, req.protoMajor] = parseHTTPVersion(req.proto); req.headers = headers; |