浏览代码

connection: add a close method

and use it instead of netConn directly
Nicola Murino 6 年之前
父节点
当前提交
9794ca7ee0
共有 2 个文件被更改,包括 8 次插入7 次删除
  1. 4 0
      sftpd/handler.go
  2. 4 7
      sftpd/sftpd.go

+ 4 - 0
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 {

+ 4 - 7
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")