From 533b0dabdbc0cea4657b5231ff5ab021e46530ce Mon Sep 17 00:00:00 2001 From: zarazaex69 Date: Thu, 9 Apr 2026 18:18:14 +0300 Subject: [PATCH] feat(client,mux): Improve stream readiness detection and add safe buffer access --- internal/client/client.go | 7 ++++--- internal/mux/mux.go | 6 ++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/internal/client/client.go b/internal/client/client.go index 2e2d017..998b9bb 100644 --- a/internal/client/client.go +++ b/internal/client/client.go @@ -218,10 +218,11 @@ func (c *Client) handleSOCKS5(conn net.Conn) { defer timeout.Stop() go func() { - for i := 0; i < 100; i++ { + for i := 0; i < 200; i++ { time.Sleep(50 * time.Millisecond) - data := c.mux.ReadStream(sid) - if len(data) > 0 { + + stream := c.mux.GetStream(sid) + if stream != nil && len(stream.RecvBuf()) > 0 { connected <- true return } diff --git a/internal/mux/mux.go b/internal/mux/mux.go index 9963567..9149cb1 100644 --- a/internal/mux/mux.go +++ b/internal/mux/mux.go @@ -17,6 +17,12 @@ type Stream struct { mu sync.Mutex } +func (s *Stream) RecvBuf() []byte { + s.mu.Lock() + defer s.mu.Unlock() + return s.recvBuf +} + type Multiplexer struct { streams map[uint16]*Stream nextID uint16