From a9924d2ab76ae3399ced776e8df9931320f1e560 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 17 May 2024 22:45:52 +0530 Subject: [PATCH] oops --- tools/cmd/at/socket_io.go | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/tools/cmd/at/socket_io.go b/tools/cmd/at/socket_io.go index b5c15e60d..fcc86394b 100644 --- a/tools/cmd/at/socket_io.go +++ b/tools/cmd/at/socket_io.go @@ -52,23 +52,25 @@ type response_reader struct { func (r *response_reader) read_response_from_conn(conn *net.Conn, timeout time.Duration) (serialized_response []byte, err error) { keep_going := true - r.parser.HandleDCS = func(data []byte) error { - if bytes.HasPrefix(data, []byte("@kitty-cmd")) { - r.pending_responses = append(r.pending_responses, append([]byte{}, data[len("@kitty-cmd"):]...)) - keep_going = false + if len(r.pending_responses) == 0 { + r.parser.HandleDCS = func(data []byte) error { + if bytes.HasPrefix(data, []byte("@kitty-cmd")) { + r.pending_responses = append(r.pending_responses, append([]byte{}, data[len("@kitty-cmd"):]...)) + keep_going = false + } + return nil } - return nil - } - buf := r.storage[:] - for keep_going { - var n int - (*conn).SetDeadline(time.Now().Add(timeout)) - n, err = (*conn).Read(buf) - if err != nil { - keep_going = false - break + buf := r.storage[:] + for keep_going { + var n int + (*conn).SetDeadline(time.Now().Add(timeout)) + n, err = (*conn).Read(buf) + if err != nil { + keep_going = false + break + } + r.parser.Parse(buf[:n]) } - r.parser.Parse(buf[:n]) } if len(r.pending_responses) > 0 { serialized_response = r.pending_responses[0]