Commit 6ef96e7f authored by Eric's avatar Eric

[Bugfix] close connections

parent 5eeea6b0
...@@ -32,12 +32,12 @@ func SftpHandler(sess ssh.Session) { ...@@ -32,12 +32,12 @@ func SftpHandler(sess ssh.Session) {
req := sftp.NewRequestServer(sess, handlers) req := sftp.NewRequestServer(sess, handlers)
if err := req.Serve(); err == io.EOF { if err := req.Serve(); err == io.EOF {
_ = req.Close()
userSftp.Close()
logger.Info("sftp client exited session.") logger.Info("sftp client exited session.")
} else if err != nil { } else if err != nil {
logger.Error("sftp server completed with error:", err) logger.Error("sftp server completed with error:", err)
} }
_ = req.Close()
userSftp.Close()
} }
func NewSFTPHandler(user *model.User, addr string) *sftpHandler { func NewSFTPHandler(user *model.User, addr string) *sftpHandler {
......
...@@ -121,7 +121,20 @@ func OnHostHandler(c *neffos.NSConn, msg neffos.Message) (err error) { ...@@ -121,7 +121,20 @@ func OnHostHandler(c *neffos.NSConn, msg neffos.Message) (err error) {
} }
userR, userW := io.Pipe() userR, userW := io.Pipe()
addr, _, _ := net.SplitHostPort(cc.Socket().Request().RemoteAddr) var addr string
request := cc.Socket().Request()
header := request.Header
remoteAddr := header.Get("X-Forwarded-For")
if remoteAddr == "" {
if host, _, err := net.SplitHostPort(request.RemoteAddr); err == nil {
addr = host
} else {
addr = request.RemoteAddr
}
} else {
addr = strings.Split(remoteAddr, ",")[0]
}
client := &Client{ client := &Client{
Uuid: roomID, addr: addr, Uuid: roomID, addr: addr,
WinChan: make(chan ssh.Window, 100), Conn: c, WinChan: make(chan ssh.Window, 100), Conn: c,
......
...@@ -221,6 +221,8 @@ func (p *ProxyServer) Proxy() { ...@@ -221,6 +221,8 @@ func (p *ProxyServer) Proxy() {
// 创建Session // 创建Session
sw, err := CreateSession(p) sw, err := CreateSession(p)
if err != nil { if err != nil {
// 创建srv成功,但session创建失败,关闭srvConn
_ = srvConn.Close()
return return
} }
defer RemoveSession(sw) defer RemoveSession(sw)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment