1
0
mirror of https://github.com/MetaCubeX/mihomo.git synced 2026-10-10 04:03:11 +08:00

chore: remove redundant writeFull in shadowquic

This commit is contained in:
wwqgtxx
2026-07-14 09:08:35 +08:00
parent bfa9ea1d2b
commit 95af34af06
3 changed files with 21 additions and 27 deletions
+6 -4
View File
@@ -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 {
+4 -2
View File
@@ -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) {
+11 -21
View File
@@ -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
}