Files
tunnel-please/server/handler.go
bagas c4dd086fb3
All checks were successful
Docker Build and Push / build-and-push (push) Successful in 4m20s
fix: ensure SSH connections close on client disconnect
2025-07-23 12:40:20 +07:00

37 lines
758 B
Go

package server
import (
"golang.org/x/crypto/ssh"
"log"
"net"
"tunnel_pls/session"
)
func (s *Server) handleConnection(conn net.Conn) {
sshConn, chans, forwardingReqs, err := ssh.NewServerConn(conn, s.Config)
if err != nil {
log.Printf("failed to establish SSH connection: %v", err)
err := conn.Close()
if err != nil {
log.Printf("failed to close SSH connection: %v", err)
return
}
return
}
log.Println("SSH connection established:", sshConn.User())
newSession := session.New(sshConn, forwardingReqs)
for ch := range chans {
newSession.ChannelChan <- ch
}
defer func(newSession *session.Session) {
err := newSession.Close()
if err != nil {
log.Printf("failed to close session: %v", err)
}
}(newSession)
return
}