summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorKevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com>2018-12-31 04:00:28 -0500
committerRyan Dahl <ry@tinyclouds.org>2018-12-31 09:00:28 +0000
commit95e378a28b0e0ba1d05f2a41bc27a7368aac66f4 (patch)
tree4df653a73ffbbe4d62a79d69d743fe6f6224ae50 /net
parentb5f6f972342dbc5e1a4a3116743d812ec6baddea (diff)
Avoid textproto crashing on empty reader (denoland/deno_std#50)
Original: https://github.com/denoland/deno_std/commit/9eb6aa5fd9da9da9cd2b96a5199cf9b9128fd456
Diffstat (limited to 'net')
-rw-r--r--net/textproto.ts5
-rw-r--r--net/textproto_test.ts7
2 files changed, 10 insertions, 2 deletions
diff --git a/net/textproto.ts b/net/textproto.ts
index 342d74b33..832299e1c 100644
--- a/net/textproto.ts
+++ b/net/textproto.ts
@@ -118,11 +118,12 @@ export class TextProtoReader {
async readLineSlice(): Promise<[Uint8Array, BufState]> {
// this.closeDot();
- let line: null | Uint8Array;
+ let line: Uint8Array;
while (true) {
let [l, more, err] = await this.r.readLine();
if (err != null) {
- return [null, err];
+ // Go's len(typed nil) works fine, but not in JS
+ return [new Uint8Array(0), err];
}
// Avoid the copy if the first call produced a full line.
if (line == null && !more) {
diff --git a/net/textproto_test.ts b/net/textproto_test.ts
index ad7e6a2c4..3af21247a 100644
--- a/net/textproto_test.ts
+++ b/net/textproto_test.ts
@@ -93,3 +93,10 @@ test(async function textprotoAppend() {
const joined = append(u1, u2);
assertEqual(dec.decode(joined), "Hello World");
});
+
+test(async function textprotoReadEmpty() {
+ let r = reader("");
+ let [m, err] = await r.readMIMEHeader();
+ // Should not crash!
+ assertEqual(err, "EOF");
+});