Avoid textproto crashing on empty reader (#50)

This commit is contained in:
Kevin (Kun) "Kassimo" Qian 2018-12-31 04:00:28 -05:00 committed by Ryan Dahl
parent 9b8923844f
commit 9eb6aa5fd9
2 changed files with 10 additions and 2 deletions

View File

@ -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) {

View File

@ -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");
});