From 484e5160a98f220452e1e4abc03076aa640add83 Mon Sep 17 00:00:00 2001 From: zarazaex69 Date: Fri, 10 Apr 2026 15:04:47 +0300 Subject: [PATCH] perf(client): Replace event-driven data polling with ticker-based approach --- internal/client/client.go | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/internal/client/client.go b/internal/client/client.go index 4f53819..8185656 100644 --- a/internal/client/client.go +++ b/internal/client/client.go @@ -317,20 +317,22 @@ func (c *Client) handleSOCKS5(conn net.Conn) { defer close(streamClosed) defer c.mux.CleanupDataChannel(sid) + ticker := time.NewTicker(10 * time.Millisecond) + defer ticker.Stop() + for { - dataReady := c.mux.WaitForData(sid) - select { case <-done: return - case <-dataReady: - for { - data := c.mux.ReadStream(sid) - if len(data) == 0 { - break - } - if _, err := conn.Write(data); err != nil { - return + case <-ticker.C: + data := c.mux.ReadStream(sid) + if len(data) > 0 { + for len(data) > 0 { + n, err := conn.Write(data) + if err != nil { + return + } + data = data[n:] } }