summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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");
+});