improve message parsing: allow bare carriage return (unless in pedantic mode), allow empty header, and no longer treat a message with only headers as a message with only a body

This commit is contained in:
Mechiel Lukkien
2023-08-11 14:07:49 +02:00
parent 79d06184ab
commit 48eb530b1f
10 changed files with 129 additions and 79 deletions

View File

@ -10,23 +10,23 @@ func TestMsgWriter(t *testing.T) {
t.Helper()
b := &strings.Builder{}
mw := &Writer{Writer: b}
mw := NewWriter(b)
if _, err := mw.Write([]byte(data)); err != nil {
t.Fatalf("write for message %q: %s", data, err)
}
if mw.HaveHeaders != want {
t.Fatalf("got %v, expected %v, for message %q", mw.HaveHeaders, want, data)
if mw.HaveBody != want {
t.Fatalf("got %v, expected %v, for message %q", mw.HaveBody, want, data)
}
b = &strings.Builder{}
mw = &Writer{Writer: b}
mw = NewWriter(b)
for i := range data {
if _, err := mw.Write([]byte(data[i : i+1])); err != nil {
t.Fatalf("write for message %q: %s", data, err)
}
}
if mw.HaveHeaders != want {
t.Fatalf("got %v, expected %v, for message %q", mw.HaveHeaders, want, data)
if mw.HaveBody != want {
t.Fatalf("got %v, expected %v, for message %q", mw.HaveBody, want, data)
}
}
@ -38,4 +38,5 @@ func TestMsgWriter(t *testing.T) {
check("key: value\r\rbody", false)
check("\r\n\r\n", true)
check("\r\n\r\nbody", true)
check("\r\nbody", true)
}