Skip to content

Commit 249ced1

Browse files
committed
net/mail: Fix EOF error while reading header-only message
1 parent 29d7e54 commit 249ced1

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

src/net/mail/message.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,13 @@ func ReadMessage(r io.Reader) (msg *Message, err error) {
5454
tp := textproto.NewReader(bufio.NewReader(r))
5555

5656
hdr, err := tp.ReadMIMEHeader()
57+
// Header-Only messages
58+
if err == io.EOF && len(hdr) > 0 {
59+
return &Message{
60+
Header: Header(hdr),
61+
Body: tp.R,
62+
}, nil
63+
}
5764
if err != nil {
5865
return nil, err
5966
}

src/net/mail/message_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,19 @@ So, "Hello".
3939
},
4040
body: "This is a message just to say hello.\nSo, \"Hello\".\n",
4141
},
42+
{
43+
// RFC 5965, Appendix B.1, a part of the multipart message (a header-only sub message)
44+
in: `Feedback-Type: abuse
45+
User-Agent: SomeGenerator/1.0
46+
Version: 1
47+
`,
48+
header: Header{
49+
"Feedback-Type": []string{"abuse"},
50+
"User-Agent": []string{"SomeGenerator/1.0"},
51+
"Version": []string{"1"},
52+
},
53+
body: "",
54+
},
4255
}
4356

4457
func TestParsing(t *testing.T) {

0 commit comments

Comments
 (0)