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:
@@ -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 {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user