From f20bea757b547fee6dcf732ab3bfd97b918f8c6a Mon Sep 17 00:00:00 2001 From: naiba Date: Tue, 13 Aug 2024 09:53:01 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20WebSSH=20=E6=97=A0=E6=B3=95=E9=80=80?= =?UTF-8?q?=E5=87=BA=EF=BC=8C=E5=85=B3=E9=97=AD=E5=90=8E=20CPU=20100%?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/agent/main.go | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/cmd/agent/main.go b/cmd/agent/main.go index 6e5afca..80eda5d 100644 --- a/cmd/agent/main.go +++ b/cmd/agent/main.go @@ -701,12 +701,25 @@ func handleTerminalTask(task *pb.Task) { println("terminal init", terminal.StreamID) clientIn, stdinPipe := io.Pipe() + defer stdinPipe.Close() 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() if err != nil { 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() { for {