refactor(std/http/server): Remove bad error handling (#4435)

This commit is contained in:
Nayeem Rahman 2020-03-20 16:12:27 +00:00 committed by GitHub
parent 1c6f177d19
commit b22f48970f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -9,7 +9,6 @@ import {
writeResponse,
readRequest
} from "./io.ts";
import { encode } from "../strings/mod.ts";
import Listener = Deno.Listener;
import Conn = Deno.Conn;
import Reader = Deno.Reader;
@ -149,7 +148,7 @@ export class Server implements AsyncIterable<ServerRequest> {
): AsyncIterableIterator<ServerRequest> {
const bufr = new BufReader(conn);
const w = new BufWriter(conn);
let req: ServerRequest | Deno.EOF | undefined;
let req: ServerRequest | Deno.EOF = Deno.EOF;
let err: Error | undefined;
while (!this.closing) {
@ -157,9 +156,8 @@ export class Server implements AsyncIterable<ServerRequest> {
req = await readRequest(conn, bufr);
} catch (e) {
err = e;
break;
}
if (req === Deno.EOF) {
if (err != null || req === Deno.EOF) {
break;
}
@ -180,24 +178,6 @@ export class Server implements AsyncIterable<ServerRequest> {
await req.finalize();
}
if (req === Deno.EOF) {
// The connection was gracefully closed.
} else if (err && req) {
// An error was thrown while parsing request headers.
try {
await writeResponse(req.w, {
status: 400,
body: encode(`${err.message}\r\n\r\n`)
});
} catch (_) {
// The connection is destroyed.
// Ignores the error.
}
} else if (this.closing) {
// There are more requests incoming but the server is closing.
// TODO(ry): send a back a HTTP 503 Service Unavailable status.
}
this.untrackConnection(conn);
try {
conn.close();