summaryrefslogtreecommitdiff
path: root/http/server.ts
diff options
context:
space:
mode:
Diffstat (limited to 'http/server.ts')
-rw-r--r--http/server.ts37
1 files changed, 18 insertions, 19 deletions
diff --git a/http/server.ts b/http/server.ts
index 5ea52a0b8..5c56a2ec2 100644
--- a/http/server.ts
+++ b/http/server.ts
@@ -73,11 +73,10 @@ export async function writeResponse(w: Writer, r: Response): Promise<void> {
let out = `HTTP/${protoMajor}.${protoMinor} ${statusCode} ${statusText}\r\n`;
setContentLength(r);
+ const headers = r.headers!;
- if (r.headers) {
- for (const [key, value] of r.headers) {
- out += `${key}: ${value}\r\n`;
- }
+ for (const [key, value] of headers!) {
+ out += `${key}: ${value}\r\n`;
}
out += "\r\n";
@@ -88,8 +87,8 @@ export async function writeResponse(w: Writer, r: Response): Promise<void> {
if (r.body instanceof Uint8Array) {
const n = await writer.write(r.body);
assert(n === r.body.byteLength);
- } else if (r.headers.has("content-length")) {
- const bodyLength = parseInt(r.headers.get("content-length"));
+ } else if (headers.has("content-length")) {
+ const bodyLength = parseInt(headers.get("content-length")!);
const n = await copy(writer, r.body);
assert(n === bodyLength);
} else {
@@ -99,19 +98,19 @@ export async function writeResponse(w: Writer, r: Response): Promise<void> {
}
export class ServerRequest {
- url: string;
- method: string;
- proto: string;
- protoMinor: number;
- protoMajor: number;
- headers: Headers;
- r: BufReader;
- w: BufWriter;
+ url!: string;
+ method!: string;
+ proto!: string;
+ protoMinor!: number;
+ protoMajor!: number;
+ headers!: Headers;
+ r!: BufReader;
+ w!: BufWriter;
done: Deferred<void> = deferred();
public async *bodyStream(): AsyncIterableIterator<Uint8Array> {
if (this.headers.has("content-length")) {
- const len = +this.headers.get("content-length");
+ const len = +this.headers.get("content-length")!;
if (Number.isNaN(len)) {
return new Uint8Array(0);
}
@@ -128,7 +127,7 @@ export class ServerRequest {
} else {
if (this.headers.has("transfer-encoding")) {
const transferEncodings = this.headers
- .get("transfer-encoding")
+ .get("transfer-encoding")!
.split(",")
.map((e): string => e.trim().toLowerCase());
if (transferEncodings.includes("chunked")) {
@@ -334,14 +333,14 @@ export class Server implements AsyncIterable<ServerRequest> {
// Wait for the request to be processed before we accept a new request on
// this connection.
- await req.done;
+ await req!.done;
}
- if (req === EOF) {
+ if (req! === EOF) {
// The connection was gracefully closed.
} else if (err) {
// An error was thrown while parsing request headers.
- await writeResponse(req.w, {
+ await writeResponse(req!.w, {
status: 400,
body: new TextEncoder().encode(`${err.message}\r\n\r\n`)
});