From bec733dc21b3d7205a6bf0f31eecc74037e35f6a Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Mon, 8 Apr 2024 15:51:07 +0200 Subject: [PATCH] server: add Conn.writeError --- conn.go | 39 +++++++++++++-------------------------- 1 file changed, 13 insertions(+), 26 deletions(-) diff --git a/conn.go b/conn.go index 3e9a056..ea21f45 100644 --- a/conn.go +++ b/conn.go @@ -232,12 +232,7 @@ func (c *Conn) handleGreet(enhanced bool, arg string) { sess, err := c.server.Backend.NewSession(c) if err != nil { c.helo = "" - - if smtpErr, ok := err.(*SMTPError); ok { - c.writeResponse(smtpErr.Code, smtpErr.EnhancedCode, smtpErr.Message) - return - } - c.writeResponse(451, EnhancedCode{4, 0, 0}, err.Error()) + c.writeError(451, EnhancedCode{4, 0, 0}, err) return } @@ -421,11 +416,7 @@ func (c *Conn) handleMail(arg string) { } if err := c.Session().Mail(from, opts); err != nil { - if smtpErr, ok := err.(*SMTPError); ok { - c.writeResponse(smtpErr.Code, smtpErr.EnhancedCode, smtpErr.Message) - return - } - c.writeResponse(451, EnhancedCode{4, 0, 0}, err.Error()) + c.writeError(451, EnhancedCode{4, 0, 0}, err) return } @@ -725,11 +716,7 @@ func (c *Conn) handleRcpt(arg string) { } if err := c.Session().Rcpt(recipient, opts); err != nil { - if smtpErr, ok := err.(*SMTPError); ok { - c.writeResponse(smtpErr.Code, smtpErr.EnhancedCode, smtpErr.Message) - return - } - c.writeResponse(451, EnhancedCode{4, 0, 0}, err.Error()) + c.writeError(451, EnhancedCode{4, 0, 0}, err) return } c.recipients = append(c.recipients, recipient) @@ -796,11 +783,7 @@ func (c *Conn) handleAuth(arg string) { sasl, err := c.auth(mechanism) if err != nil { - if smtpErr, ok := err.(*SMTPError); ok { - c.writeResponse(smtpErr.Code, smtpErr.EnhancedCode, smtpErr.Message) - } else { - c.writeResponse(454, EnhancedCode{4, 7, 0}, err.Error()) - } + c.writeError(454, EnhancedCode{4, 7, 0}, err) return } @@ -808,11 +791,7 @@ func (c *Conn) handleAuth(arg string) { for { challenge, done, err := sasl.Next(response) if err != nil { - if smtpErr, ok := err.(*SMTPError); ok { - c.writeResponse(smtpErr.Code, smtpErr.EnhancedCode, smtpErr.Message) - return - } - c.writeResponse(454, EnhancedCode{4, 7, 0}, err.Error()) + c.writeError(454, EnhancedCode{4, 7, 0}, err) return } @@ -1253,6 +1232,14 @@ func (c *Conn) writeResponse(code int, enhCode EnhancedCode, text ...string) { } } +func (c *Conn) writeError(code int, enhCode EnhancedCode, err error) { + if smtpErr, ok := err.(*SMTPError); ok { + c.writeResponse(smtpErr.Code, smtpErr.EnhancedCode, smtpErr.Message) + } else { + c.writeResponse(code, enhCode, err.Error()) + } +} + // Reads a line of input func (c *Conn) readLine() (string, error) { if c.server.ReadTimeout != 0 {