summaryrefslogtreecommitdiff
path: root/http/server.ts
diff options
context:
space:
mode:
authorYoshiya Hinosawa <stibium121@gmail.com>2019-07-08 04:20:41 +0900
committerRyan Dahl <ry@tinyclouds.org>2019-07-07 15:20:41 -0400
commit9a01d6455ec3cfa955967102f576cb542999321a (patch)
tree82a4ab5776a09432f23b9ed99a31306c884c833e /http/server.ts
parent6a0858bd5d9d327ac7f46bee5f5b2fab642f2a3f (diff)
Upgrade to v0.11.0 (update Reader interface) (denoland/deno_std#527)
Original: https://github.com/denoland/deno_std/commit/3ea90d54f6dad4bcc3d32e63601096a6c0ff3ce4
Diffstat (limited to 'http/server.ts')
-rw-r--r--http/server.ts34
1 files changed, 18 insertions, 16 deletions
diff --git a/http/server.ts b/http/server.ts
index 5c56a2ec2..265dde943 100644
--- a/http/server.ts
+++ b/http/server.ts
@@ -4,7 +4,7 @@ type Listener = Deno.Listener;
type Conn = Deno.Conn;
type Reader = Deno.Reader;
type Writer = Deno.Writer;
-import { BufReader, BufWriter, EOF, UnexpectedEOFError } from "../io/bufio.ts";
+import { BufReader, BufWriter, UnexpectedEOFError } from "../io/bufio.ts";
import { TextProtoReader } from "../textproto/mod.ts";
import { STATUS_TEXT } from "./http_status.ts";
import { assert } from "../testing/asserts.ts";
@@ -116,14 +116,16 @@ export class ServerRequest {
}
let buf = new Uint8Array(1024);
let rr = await this.r.read(buf);
- let nread = rr.nread;
- while (!rr.eof && nread < len) {
- yield buf.subarray(0, rr.nread);
+ let nread = rr === Deno.EOF ? 0 : rr;
+ let nreadTotal = nread;
+ while (rr !== Deno.EOF && nreadTotal < len) {
+ yield buf.subarray(0, nread);
buf = new Uint8Array(1024);
rr = await this.r.read(buf);
- nread += rr.nread;
+ nread = rr === Deno.EOF ? 0 : rr;
+ nreadTotal += nread;
}
- yield buf.subarray(0, rr.nread);
+ yield buf.subarray(0, nread);
} else {
if (this.headers.has("transfer-encoding")) {
const transferEncodings = this.headers
@@ -134,7 +136,7 @@ export class ServerRequest {
// Based on https://tools.ietf.org/html/rfc2616#section-19.4.6
const tp = new TextProtoReader(this.r);
let line = await tp.readLine();
- if (line === EOF) throw new UnexpectedEOFError();
+ if (line === Deno.EOF) throw new UnexpectedEOFError();
// TODO: handle chunk extension
let [chunkSizeString] = line.split(";");
let chunkSize = parseInt(chunkSizeString, 16);
@@ -143,17 +145,17 @@ export class ServerRequest {
}
while (chunkSize > 0) {
const data = new Uint8Array(chunkSize);
- if ((await this.r.readFull(data)) === EOF) {
+ if ((await this.r.readFull(data)) === Deno.EOF) {
throw new UnexpectedEOFError();
}
yield data;
await this.r.readLine(); // Consume \r\n
line = await tp.readLine();
- if (line === EOF) throw new UnexpectedEOFError();
+ if (line === Deno.EOF) throw new UnexpectedEOFError();
chunkSize = parseInt(line, 16);
}
const entityHeaders = await tp.readMIMEHeader();
- if (entityHeaders !== EOF) {
+ if (entityHeaders !== Deno.EOF) {
for (let [k, v] of entityHeaders) {
this.headers.set(k, v);
}
@@ -282,12 +284,12 @@ export function parseHTTPVersion(vers: string): [number, number] {
export async function readRequest(
bufr: BufReader
-): Promise<ServerRequest | EOF> {
+): Promise<ServerRequest | Deno.EOF> {
const tp = new TextProtoReader(bufr);
const firstLine = await tp.readLine(); // e.g. GET /index.html HTTP/1.0
- if (firstLine === EOF) return EOF;
+ if (firstLine === Deno.EOF) return Deno.EOF;
const headers = await tp.readMIMEHeader();
- if (headers === EOF) throw new UnexpectedEOFError();
+ if (headers === Deno.EOF) throw new UnexpectedEOFError();
const req = new ServerRequest();
req.r = bufr;
@@ -314,7 +316,7 @@ export class Server implements AsyncIterable<ServerRequest> {
): AsyncIterableIterator<ServerRequest> {
const bufr = new BufReader(conn);
const w = new BufWriter(conn);
- let req: ServerRequest | EOF;
+ let req: ServerRequest | Deno.EOF;
let err: Error | undefined;
while (!this.closing) {
@@ -324,7 +326,7 @@ export class Server implements AsyncIterable<ServerRequest> {
err = e;
break;
}
- if (req === EOF) {
+ if (req === Deno.EOF) {
break;
}
@@ -336,7 +338,7 @@ export class Server implements AsyncIterable<ServerRequest> {
await req!.done;
}
- if (req! === EOF) {
+ if (req! === Deno.EOF) {
// The connection was gracefully closed.
} else if (err) {
// An error was thrown while parsing request headers.