From f08402e27b151aa1147b220f28f625ba2278ecf0 Mon Sep 17 00:00:00 2001 From: Antonio Mika Date: Fri, 22 Feb 2019 23:22:47 -0500 Subject: [PATCH] Don't block on SSH connection --- main.go | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/main.go b/main.go index 96bc46e..e9ca680 100644 --- a/main.go +++ b/main.go @@ -115,23 +115,25 @@ func main() { log.Println("Accepted SSH connection for:", conn.RemoteAddr()) - sshConn, chans, reqs, err := ssh.NewServerConn(conn, sshConfig) - if err != nil { - conn.Close() - log.Println(err) - continue - } + go func() { + sshConn, chans, reqs, err := ssh.NewServerConn(conn, sshConfig) + if err != nil { + conn.Close() + log.Println(err) + return + } - holderConn := &SSHConnection{ - SSHConn: sshConn, - Listeners: &sync.Map{}, - Close: make(chan bool), - Messages: make(chan string), - } + holderConn := &SSHConnection{ + SSHConn: sshConn, + Listeners: &sync.Map{}, + Close: make(chan bool), + Messages: make(chan string), + } - state.SSHConnections.Store(sshConn.RemoteAddr(), holderConn) + state.SSHConnections.Store(sshConn.RemoteAddr(), holderConn) - go handleRequests(reqs, holderConn, state) - go handleChannels(chans, holderConn, state) + go handleRequests(reqs, holderConn, state) + go handleChannels(chans, holderConn, state) + }() } }