diff options
Diffstat (limited to 'http')
| -rw-r--r-- | http/file_server_test.ts | 4 | ||||
| -rw-r--r-- | http/racing_server_test.ts | 4 | ||||
| -rw-r--r-- | http/server.ts | 34 | ||||
| -rw-r--r-- | http/server_test.ts | 15 |
4 files changed, 29 insertions, 28 deletions
diff --git a/http/file_server_test.ts b/http/file_server_test.ts index 1bd4e8160..52d6ec688 100644 --- a/http/file_server_test.ts +++ b/http/file_server_test.ts @@ -3,7 +3,7 @@ const { readFile, run } = Deno; import { test } from "../testing/mod.ts"; import { assert, assertEquals } from "../testing/asserts.ts"; -import { BufReader, EOF } from "../io/bufio.ts"; +import { BufReader } from "../io/bufio.ts"; import { TextProtoReader } from "../textproto/mod.ts"; let fileServer: Deno.Process; @@ -24,7 +24,7 @@ async function startFileServer(): Promise<void> { // Once fileServer is ready it will write to its stdout. const r = new TextProtoReader(new BufReader(fileServer.stdout!)); const s = await r.readLine(); - assert(s !== EOF && s.includes("server listening")); + assert(s !== Deno.EOF && s.includes("server listening")); } function killFileServer(): void { diff --git a/http/racing_server_test.ts b/http/racing_server_test.ts index 543366501..428e339a5 100644 --- a/http/racing_server_test.ts +++ b/http/racing_server_test.ts @@ -2,7 +2,7 @@ const { dial, run } = Deno; import { test, runIfMain } from "../testing/mod.ts"; import { assert, assertEquals } from "../testing/asserts.ts"; -import { BufReader, EOF } from "../io/bufio.ts"; +import { BufReader } from "../io/bufio.ts"; import { TextProtoReader } from "../textproto/mod.ts"; let server: Deno.Process; @@ -14,7 +14,7 @@ async function startServer(): Promise<void> { // Once fileServer is ready it will write to its stdout. const r = new TextProtoReader(new BufReader(server.stdout!)); const s = await r.readLine(); - assert(s !== EOF && s.includes("Racing server listening...")); + assert(s !== Deno.EOF && s.includes("Racing server listening...")); } function killServer(): void { server.close(); 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. diff --git a/http/server_test.ts b/http/server_test.ts index 6b50057ea..04ff4ba15 100644 --- a/http/server_test.ts +++ b/http/server_test.ts @@ -18,14 +18,13 @@ import { import { BufReader, BufWriter, - EOF, ReadLineResult, UnexpectedEOFError } from "../io/bufio.ts"; import { StringReader } from "../io/readers.ts"; -function assertNotEOF<T extends {}>(val: T | EOF): T { - assertNotEquals(val, EOF); +function assertNotEOF<T extends {}>(val: T | Deno.EOF): T { + assertNotEquals(val, Deno.EOF); return val as T; } @@ -276,7 +275,7 @@ test(async function writeUint8ArrayResponse(): Promise<void> { assertEquals(r.more, false); const eof = await reader.readLine(); - assertEquals(eof, EOF); + assertEquals(eof, Deno.EOF); }); test(async function writeStringReaderResponse(): Promise<void> { @@ -345,7 +344,7 @@ test(async function testReadRequestError(): Promise<void> { in: "GET / HTTP/1.1\r\nheader:foo\r\n", err: UnexpectedEOFError }, - { in: "", err: EOF }, + { in: "", err: Deno.EOF }, { in: "HEAD / HTTP/1.1\r\nContent-Length:4\r\n\r\n", err: "http: method cannot contain a Content-Length" @@ -407,15 +406,15 @@ test(async function testReadRequestError(): Promise<void> { } catch (e) { err = e; } - if (test.err === EOF) { - assertEquals(req, EOF); + if (test.err === Deno.EOF) { + assertEquals(req, Deno.EOF); } else if (typeof test.err === "string") { assertEquals(err.message, test.err); } else if (test.err) { assert(err instanceof (test.err as typeof UnexpectedEOFError)); } else { assertEquals(err, undefined); - assertNotEquals(req, EOF); + assertNotEquals(req, Deno.EOF); for (const h of test.headers!) { assertEquals((req! as ServerRequest).headers.get(h.key), h.value); } |
