func()

in pkg/sshd/ssh_exec.go [427:469]


func (srv *Server) connectionHandler(s *session) {
	defer func() {
		s.Close()
		log.Println("session closed")
	}()

	log.Printf("starting ssh session with command '%+v'", s.rawCmd)

	cmd := srv.buildCmd(s)

	//if ssh.AgentRequested(s) {
	//	log.Println("agent requested")
	//	l, err := ssh.NewAgentListener()
	//	if err != nil {
	//		log.Println("failed to start agent", err)
	//		return
	//	}
	//
	//	defer l.Close()
	//	go ssh.ForwardAgentConnections(l, s)
	//	cmd.Env = append(cmd.Env, fmt.Sprintf("%s=%s", "SSH_AUTH_SOCK", l.Addr().String()))
	//}

	ptyReq, winCh, isPty := s.Pty()
	if isPty {
		log.Println("handling PTY session")
		if err := handlePTY(cmd, s, ptyReq, winCh); err != nil {
			sendErrAndExit(s, err)
			return
		}

		s.Exit(0)
		return
	}

	log.Println("handling non PTY session")
	if err := handleNoTTY(cmd, s); err != nil {
		sendErrAndExit(s, err)
		return
	}

	s.Exit(0)
}