diff --git a/sftpd/handler.go b/sftpd/handler.go index 61ca3417..2dd05a9b 100644 --- a/sftpd/handler.go +++ b/sftpd/handler.go @@ -579,6 +579,10 @@ func (c Connection) createMissingDirs(filePath string) error { return nil } +func (c Connection) close() error { + return c.netConn.Close() +} + func getOSOpenFlags(requestFlags sftp.FileOpenFlags) (flags int) { var osFlags int if requestFlags.Read && requestFlags.Write { diff --git a/sftpd/sftpd.go b/sftpd/sftpd.go index acd911b3..68908d83 100644 --- a/sftpd/sftpd.go +++ b/sftpd/sftpd.go @@ -173,8 +173,8 @@ func CloseActiveConnection(connectionID string) bool { defer mutex.RUnlock() for _, c := range openConnections { if c.ID == connectionID { - err := c.netConn.Close() - c.Log(logger.LevelDebug, logSender, "close connection requested, err: %v", err) + err := c.close() + c.Log(logger.LevelDebug, logSender, "close connection requested, close err: %v", err) result = true break } @@ -254,11 +254,8 @@ func CheckIdleConnections() { } } if idleTime > idleTimeout { - c.Log(logger.LevelInfo, logSender, "close idle connection, idle time: %v", idleTime) - err := c.netConn.Close() - if err != nil { - c.Log(logger.LevelWarn, logSender, "idle connection close failed: %v", err) - } + err := c.close() + c.Log(logger.LevelInfo, logSender, "close idle connection, idle time: %v, close error: %v", idleTime, err) } } logger.Debug(logSender, "", "check idle connections ended")