From a75e570ccab21cdc97d5ea1e4620b4e5ee3efde5 Mon Sep 17 00:00:00 2001 From: wwqgtxx Date: Wed, 16 Apr 2025 20:38:10 +0800 Subject: [PATCH] fix: vision conn read short buffer error --- transport/vless/vision/conn.go | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/transport/vless/vision/conn.go b/transport/vless/vision/conn.go index 69ccfba0..55662659 100644 --- a/transport/vless/vision/conn.go +++ b/transport/vless/vision/conn.go @@ -5,6 +5,7 @@ import ( "crypto/subtle" gotls "crypto/tls" "encoding/binary" + "errors" "fmt" "io" "net" @@ -117,9 +118,11 @@ func (vc *Conn) ReadBuffer(buffer *buf.Buffer) error { case commandPaddingDirect: needReturn := false if vc.input != nil { - _, err := buffer.ReadFrom(vc.input) + _, err := buffer.ReadOnceFrom(vc.input) if err != nil { - return err + if !errors.Is(err, io.EOF) { + return err + } } if vc.input.Len() == 0 { needReturn = true @@ -129,9 +132,11 @@ func (vc *Conn) ReadBuffer(buffer *buf.Buffer) error { } } if vc.rawInput != nil { - _, err := buffer.ReadFrom(vc.rawInput) + _, err := buffer.ReadOnceFrom(vc.rawInput) if err != nil { - return err + if !errors.Is(err, io.EOF) { + return err + } } needReturn = true if vc.rawInput.Len() == 0 {