fix: WebSSH 无法退出,关闭后 CPU 100%

This commit is contained in:
naiba 2024-08-13 09:53:01 +08:00
parent f4d9db28a2
commit f20bea757b

View File

@ -701,12 +701,25 @@ func handleTerminalTask(task *pb.Task) {
println("terminal init", terminal.StreamID) println("terminal init", terminal.StreamID)
clientIn, stdinPipe := io.Pipe() clientIn, stdinPipe := io.Pipe()
defer stdinPipe.Close()
stdoutPipe, clientOut := io.Pipe() stdoutPipe, clientOut := io.Pipe()
defer stdinPipe.Close()
defer clientOut.Close()
ttyForFilter, ttyForFilterWriter := io.Pipe()
defer ttyForFilterWriter.Close()
go func() {
io.Copy(ttyForFilterWriter, tty)
stdoutPipe.Close()
}()
width, _, err := tty.Getsize() width, _, err := tty.Getsize()
if err != nil { if err != nil {
println("Terminal tty.Getsize失败", err) println("Terminal tty.Getsize失败", err)
} }
trzszFilter := trzsz.NewTrzszFilter(clientIn, clientOut, tty, tty, trzsz.TrzszOptions{TerminalColumns: int32(width), EnableZmodem: true})
trzszFilter := trzsz.NewTrzszFilter(clientIn, clientOut, tty, ttyForFilter, trzsz.TrzszOptions{TerminalColumns: int32(width), EnableZmodem: true})
defer trzszFilter.StopTransferringFiles(true)
go func() { go func() {
for { for {