mirror of
https://blitiri.com.ar/repos/chasquid
synced 2025-12-18 14:47:03 +00:00
smtpsrv: Set connection deadline before the initial greeting
When handling a connection, today we only set a deadline after each command received. However, this does not cover our initial greeting, or the initial TLS handshake (if the socket is TLS), so a connection can hang indefininitely at that stage. This patch fixes that by setting a deadline earlier, before we send or receive anythong on the connection.
This commit is contained in:
@@ -163,6 +163,10 @@ func (c *Conn) Handle() {
|
|||||||
defer c.tr.Finish()
|
defer c.tr.Finish()
|
||||||
c.tr.Debugf("Connected, mode: %s", c.mode)
|
c.tr.Debugf("Connected, mode: %s", c.mode)
|
||||||
|
|
||||||
|
// Set the first deadline, which covers possibly the TLS handshake and
|
||||||
|
// then our initial greeting.
|
||||||
|
c.conn.SetDeadline(time.Now().Add(c.commandTimeout))
|
||||||
|
|
||||||
if tc, ok := c.conn.(*tls.Conn); ok {
|
if tc, ok := c.conn.(*tls.Conn); ok {
|
||||||
// For TLS connections, complete the handshake and get the state, so
|
// For TLS connections, complete the handshake and get the state, so
|
||||||
// it can be used when we say hello below.
|
// it can be used when we say hello below.
|
||||||
|
|||||||
Reference in New Issue
Block a user