diff --git a/backend.go b/backend.go index 13e7081..ebce6fc 100644 --- a/backend.go +++ b/backend.go @@ -5,16 +5,17 @@ import ( ) var ( - ErrAuthRequired = &SMTPError{ - Code: 502, + ErrAuthRequired = &SMTPError{ + Code: 502, EnhancedCode: EnhancedCode{5, 7, 0}, - Message: "Please authenticate first", + Message: "Please authenticate first", } - ErrAuthUnsupported = &SMTPError{ - Code: 502, + ErrAuthUnsupported = &SMTPError{ + Code: 502, EnhancedCode: EnhancedCode{5, 7, 0}, - Message: "Authentication not supported", - }) + Message: "Authentication not supported", + } +) // A SMTP server backend. type Backend interface { @@ -63,7 +64,10 @@ type MailOptions struct { // The methods are called when the remote client issues the matching command. type Session interface { // Discard currently processed message. - Reset() + Reset() error + + // Check that the connection to the server is okay + Noop() error // Free all resources associated with session. Logout() error @@ -76,7 +80,6 @@ type Session interface { // Add recipient for currently processed message. Rcpt(to string) error // Set currently processed message contents and send it. - // // r must be consumed before Data returns. Data(r io.Reader) error } diff --git a/backendutil/transform.go b/backendutil/transform.go index aae0ab8..ac7f7fe 100755 --- a/backendutil/transform.go +++ b/backendutil/transform.go @@ -29,8 +29,12 @@ type transformSession struct { be *TransformBackend } -func (s *transformSession) Reset() { - s.Session.Reset() +func (s *transformSession) Reset() error { + return s.Session.Reset() +} + +func (s *transformSession) Noop() error { + return s.Session.Noop() } func (s *transformSession) AuthPlain(username, password string) error { diff --git a/backendutil/transform_test.go b/backendutil/transform_test.go index 471bfc1..b2d51a4 100755 --- a/backendutil/transform_test.go +++ b/backendutil/transform_test.go @@ -40,8 +40,13 @@ type session struct { msg *message } -func (s *session) Reset() { +func (s *session) Reset() error { s.msg = &message{} + return nil +} + +func (s *session) Noop() error { + return nil } func (s *session) Logout() error { diff --git a/cmd/smtp-debug-server/main.go b/cmd/smtp-debug-server/main.go index 38d0a90..1b90e85 100644 --- a/cmd/smtp-debug-server/main.go +++ b/cmd/smtp-debug-server/main.go @@ -39,7 +39,13 @@ func (s *session) Data(r io.Reader) error { return nil } -func (s *session) Reset() {} +func (s *session) Reset() error { + return nil +} + +func (s *session) Noop() error { + return nil +} func (s *session) Logout() error { return nil diff --git a/example_test.go b/example_test.go index 89d09f8..410ab1f 100644 --- a/example_test.go +++ b/example_test.go @@ -127,7 +127,13 @@ func (s *Session) Data(r io.Reader) error { return nil } -func (s *Session) Reset() {} +func (s *Session) Reset() error { + return nil +} + +func (s *Session) Noop() error { + return nil +} func (s *Session) Logout() error { return nil diff --git a/server_test.go b/server_test.go index 1b2f47a..97104b0 100644 --- a/server_test.go +++ b/server_test.go @@ -72,8 +72,13 @@ func (s *session) AuthPlain(username, password string) error { return nil } -func (s *session) Reset() { +func (s *session) Reset() error { s.msg = &message{} + return nil +} + +func (s *session) Noop() error { + return nil } func (s *session) Logout() error {