From 95af34af06f1979cdb804131032c8f0687fdf71e Mon Sep 17 00:00:00 2001 From: wwqgtxx Date: Tue, 14 Jul 2026 09:08:35 +0800 Subject: [PATCH] chore: remove redundant writeFull in shadowquic --- transport/shadowquic/extension.go | 10 +++++--- transport/shadowquic/extension_brutal.go | 6 +++-- transport/shadowquic/protocol.go | 32 ++++++++---------------- 3 files changed, 21 insertions(+), 27 deletions(-) diff --git a/transport/shadowquic/extension.go b/transport/shadowquic/extension.go index e5785309..b8fe2af6 100644 --- a/transport/shadowquic/extension.go +++ b/transport/shadowquic/extension.go @@ -57,11 +57,12 @@ func WriteExtensionConnStatsResult(w io.Writer, stats ExtensionConnStats) error binary.BigEndian.PutUint64(buf[13:21], stats.SentPackets) binary.BigEndian.PutUint64(buf[21:29], math.Float64bits(stats.RTT)) binary.BigEndian.PutUint16(buf[29:31], stats.CurrentMTU) - return writeFull(w, buf[:]) + _, err := w.Write(buf[:]) + return err } func WriteExtensionErrorResult(w io.Writer, code byte, message string) error { - if err := writeFull(w, []byte{extensionResultErr, code}); err != nil { + if _, err := w.Write([]byte{extensionResultErr, code}); err != nil { return err } if code != extensionErrOther { @@ -70,10 +71,11 @@ func WriteExtensionErrorResult(w io.Writer, code byte, message string) error { msg := []byte(message) var lenBuf [4]byte binary.BigEndian.PutUint32(lenBuf[:], uint32(len(msg))) - if err := writeFull(w, lenBuf[:]); err != nil { + if _, err := w.Write(lenBuf[:]); err != nil { return err } - return writeFull(w, msg) + _, err := w.Write(msg) + return err } func shadowQUICConnStats(conn *quic.Conn) ExtensionConnStats { diff --git a/transport/shadowquic/extension_brutal.go b/transport/shadowquic/extension_brutal.go index b181b6ab..c521365c 100644 --- a/transport/shadowquic/extension_brutal.go +++ b/transport/shadowquic/extension_brutal.go @@ -39,7 +39,8 @@ func WriteBrutalNegotiationRequest(w io.Writer, rx uint64) error { buf[0] = CommandExtension binary.BigEndian.PutUint64(buf[1:9], extensionOpcodeMihomoBrutal) writeBrutalNegotiationFrame(buf[9:], 0, rx) - return writeFull(w, buf[:]) + _, err := w.Write(buf[:]) + return err } func ReadBrutalNegotiationRequest(r io.Reader) (uint64, error) { @@ -54,7 +55,8 @@ func WriteBrutalNegotiationResponse(w io.Writer, rx uint64, rxAuto bool) error { flags |= brutalNegotiationFlagRxAuto } writeBrutalNegotiationFrame(buf[:], flags, rx) - return writeFull(w, buf[:]) + _, err := w.Write(buf[:]) + return err } func ReadBrutalNegotiationResponse(r io.Reader) (rx uint64, rxAuto bool, err error) { diff --git a/transport/shadowquic/protocol.go b/transport/shadowquic/protocol.go index d3e0d3fe..560fffed 100644 --- a/transport/shadowquic/protocol.go +++ b/transport/shadowquic/protocol.go @@ -66,10 +66,11 @@ func WriteRequest(w io.Writer, command byte, addr socks5.Addr) error { if addr == nil { return errInvalidAddress } - if err := writeFull(w, []byte{command}); err != nil { + if _, err := w.Write([]byte{command}); err != nil { return err } - return writeFull(w, addr) + _, err := w.Write(addr) + return err } func ReadCommand(r io.Reader) (byte, error) { @@ -96,12 +97,13 @@ func WriteUDPControl(w io.Writer, addr socks5.Addr, id uint16) error { if addr == nil { return errInvalidAddress } - if err := writeFull(w, addr); err != nil { + if _, err := w.Write(addr); err != nil { return err } var buf [2]byte binary.BigEndian.PutUint16(buf[:], id) - return writeFull(w, buf[:]) + _, err := w.Write(buf[:]) + return err } func ReadUDPControl(r io.Reader) (socks5.Addr, uint16, error) { @@ -136,7 +138,8 @@ func DecodeDatagram(packet []byte) (uint16, []byte, error) { func WritePacketStreamHeader(w io.Writer, id uint16) error { var buf [2]byte binary.BigEndian.PutUint16(buf[:], id) - return writeFull(w, buf[:]) + _, err := w.Write(buf[:]) + return err } func WritePacketStreamPayload(w io.Writer, payload []byte) error { @@ -145,10 +148,11 @@ func WritePacketStreamPayload(w io.Writer, payload []byte) error { } var buf [2]byte binary.BigEndian.PutUint16(buf[:], uint16(len(payload))) - if err := writeFull(w, buf[:]); err != nil { + if _, err := w.Write(buf[:]); err != nil { return err } - return writeFull(w, payload) + _, err := w.Write(payload) + return err } func ReadUint16(r io.Reader) (uint16, error) { @@ -159,20 +163,6 @@ func ReadUint16(r io.Reader) (uint16, error) { return binary.BigEndian.Uint16(buf[:]), nil } -func writeFull(w io.Writer, p []byte) error { - for len(p) > 0 { - n, err := w.Write(p) - if err != nil { - return err - } - if n == 0 { - return io.ErrShortWrite - } - p = p[n:] - } - return nil -} - type socksNetAddr struct { addr socks5.Addr }