src/net/smtp/smtp_test.go | 6 +++--- src/net/textproto/reader.go | 14 +++++++------- src/net/textproto/reader_test.go | 6 ++++-- src/net/textproto/textproto.go | 2 +- diff --git a/src/net/smtp/smtp_test.go b/src/net/smtp/smtp_test.go index b272b29dc54c367a40acf41364491355cac64cb2..7995fb7d80d41bd6179ad9c853fe4706df36db36 100644 --- a/src/net/smtp/smtp_test.go +++ b/src/net/smtp/smtp_test.go @@ -695,7 +695,7 @@ } err = c.Hello("customhost") case 1: err = c.StartTLS(nil) - if err.Error() == "502 Not implemented" { + if err.Error() == `502 "Not implemented"` { err = nil } case 2: @@ -953,8 +953,8 @@ err = c.Auth(PlainAuth("", "user", "pass", "smtp.google.com")) if err == nil { t.Error("Auth: expected error; got none") - } else if err.Error() != "535 Invalid credentials\nplease see www.example.com" { - t.Errorf("Auth: got error: %v, want: %s", err, "535 Invalid credentials\nplease see www.example.com") + } else if err.Error() != `535 "Invalid credentials\nplease see www.example.com"` { + t.Errorf("Auth: got error: %v, want: %s", err, `535 "Invalid credentials\nplease see www.example.com"`) } bcmdbuf.Flush() diff --git a/src/net/textproto/reader.go b/src/net/textproto/reader.go index 6df3a630917d783baabcca33570d9412294a7015..8673ddcb48c5c51ebff9ef70d893ae01a6a4273a 100644 --- a/src/net/textproto/reader.go +++ b/src/net/textproto/reader.go @@ -215,13 +215,13 @@ } func parseCodeLine(line string, expectCode int) (code int, continued bool, message string, err error) { if len(line) < 4 || line[3] != ' ' && line[3] != '-' { - err = ProtocolError("short response: " + line) + err = ProtocolError(fmt.Sprintf("short response: %q", line)) return } continued = line[3] == '-' code, err = strconv.Atoi(line[0:3]) if err != nil || code < 100 { - err = ProtocolError("invalid response code: " + line) + err = ProtocolError(fmt.Sprintf("invalid response code: %q", line)) return } message = line[4:] @@ -253,7 +253,7 @@ // An expectCode <= 0 disables the check of the status code. func (r *Reader) ReadCodeLine(expectCode int) (code int, message string, err error) { code, continued, message, err := r.readCodeLine(expectCode) if err == nil && continued { - err = ProtocolError("unexpected multi-line response: " + message) + err = ProtocolError(fmt.Sprintf("unexpected multi-line response: %q", message)) } return } @@ -541,7 +541,7 @@ line, err := r.readLineSlice(errorLimit) if err != nil { return m, err } - return m, ProtocolError("malformed MIME header initial line: " + string(line)) + return m, ProtocolError(fmt.Sprintf("malformed MIME header initial line: %q", line)) } for { @@ -553,15 +553,15 @@ // Key ends at first colon. k, v, ok := bytes.Cut(kv, colon) if !ok { - return m, ProtocolError("malformed MIME header line: " + string(kv)) + return m, ProtocolError(fmt.Sprintf("malformed MIME header line: %q", kv)) } key, ok := canonicalMIMEHeaderKey(k) if !ok { - return m, ProtocolError("malformed MIME header line: " + string(kv)) + return m, ProtocolError(fmt.Sprintf("malformed MIME header line: %q", kv)) } for _, c := range v { if !validHeaderValueByte(c) { - return m, ProtocolError("malformed MIME header line: " + string(kv)) + return m, ProtocolError(fmt.Sprintf("malformed MIME header line: %q", kv)) } } diff --git a/src/net/textproto/reader_test.go b/src/net/textproto/reader_test.go index d510f9b338673f1406b83952d1679aa88dc9bb2f..3b2d003bcf2f07d1cd8843b2a3db04a1fb624dc8 100644 --- a/src/net/textproto/reader_test.go +++ b/src/net/textproto/reader_test.go @@ -411,6 +411,8 @@ "5.1.1 unnecessary spaces. Learn more at\n" + "Unexpected but legal text!\n" + "5.1.1 https://support.google.com/mail/answer/6596 h20si25154304pfd.166 - gsmtp" + wantError := `550 "5.1.1 The email account that you tried to reach does not exist. Please try\n5.1.1 double-checking the recipient's email address for typos or\n5.1.1 unnecessary spaces. Learn more at\nUnexpected but legal text!\n5.1.1 https://support.google.com/mail/answer/6596 h20si25154304pfd.166 - gsmtp"` + code, msg, err := r.ReadResponse(250) if err == nil { t.Errorf("ReadResponse: no error, want error") @@ -421,8 +423,8 @@ } if msg != wantMsg { t.Errorf("ReadResponse: msg=%q, want %q", msg, wantMsg) } - if err != nil && err.Error() != "550 "+wantMsg { - t.Errorf("ReadResponse: error=%q, want %q", err.Error(), "550 "+wantMsg) + if err != nil && err.Error() != wantError { + t.Errorf("ReadResponse: error=%q, want %q", err.Error(), wantError) } } diff --git a/src/net/textproto/textproto.go b/src/net/textproto/textproto.go index 00dc8cbee52b4899fdb357ae2dca84afb0857777..8d323e1f16eef0fac2894070d959b134d9aede17 100644 --- a/src/net/textproto/textproto.go +++ b/src/net/textproto/textproto.go @@ -41,7 +41,7 @@ Msg string } func (e *Error) Error() string { - return fmt.Sprintf("%03d %s", e.Code, e.Msg) + return fmt.Sprintf("%03d %q", e.Code, e.Msg) } // A ProtocolError describes a protocol violation such