change []byte bufpool to *[]byte
This commit is contained in:
@ -116,14 +116,14 @@ func (h *dnsHandler) Handle(ctx context.Context, conn net.Conn) {
|
||||
b := bufpool.Get(4096)
|
||||
defer bufpool.Put(b)
|
||||
|
||||
n, err := conn.Read(b)
|
||||
n, err := conn.Read(*b)
|
||||
if err != nil {
|
||||
h.logger.Error(err)
|
||||
return
|
||||
}
|
||||
h.logger.Info("read data: ", n)
|
||||
|
||||
reply, err := h.exchange(ctx, b[:n])
|
||||
reply, err := h.exchange(ctx, (*b)[:n])
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ func (r *UDPRelay) Run() (err error) {
|
||||
b := bufpool.Get(bufSize)
|
||||
defer bufpool.Put(b)
|
||||
|
||||
n, raddr, err := r.pc1.ReadFrom(b)
|
||||
n, raddr, err := r.pc1.ReadFrom(*b)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -64,7 +64,7 @@ func (r *UDPRelay) Run() (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
if _, err := r.pc2.WriteTo(b[:n], raddr); err != nil {
|
||||
if _, err := r.pc2.WriteTo((*b)[:n], raddr); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@ func (r *UDPRelay) Run() (err error) {
|
||||
b := bufpool.Get(bufSize)
|
||||
defer bufpool.Put(b)
|
||||
|
||||
n, raddr, err := r.pc2.ReadFrom(b)
|
||||
n, raddr, err := r.pc2.ReadFrom(*b)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -102,7 +102,7 @@ func (r *UDPRelay) Run() (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
if _, err := r.pc1.WriteTo(b[:n], raddr); err != nil {
|
||||
if _, err := r.pc1.WriteTo((*b)[:n], raddr); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -196,7 +196,7 @@ func (h *relayHandler) tunnelServerUDP(tunnel, c net.PacketConn) (err error) {
|
||||
b := bufpool.Get(bufSize)
|
||||
defer bufpool.Put(b)
|
||||
|
||||
n, raddr, err := tunnel.ReadFrom(b)
|
||||
n, raddr, err := tunnel.ReadFrom(*b)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -206,7 +206,7 @@ func (h *relayHandler) tunnelServerUDP(tunnel, c net.PacketConn) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
if _, err := c.WriteTo(b[:n], raddr); err != nil {
|
||||
if _, err := c.WriteTo((*b)[:n], raddr); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -229,7 +229,7 @@ func (h *relayHandler) tunnelServerUDP(tunnel, c net.PacketConn) (err error) {
|
||||
b := bufpool.Get(bufSize)
|
||||
defer bufpool.Put(b)
|
||||
|
||||
n, raddr, err := c.ReadFrom(b)
|
||||
n, raddr, err := c.ReadFrom(*b)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -239,7 +239,7 @@ func (h *relayHandler) tunnelServerUDP(tunnel, c net.PacketConn) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
if _, err := tunnel.WriteTo(b[:n], raddr); err != nil {
|
||||
if _, err := tunnel.WriteTo((*b)[:n], raddr); err != nil {
|
||||
return err
|
||||
}
|
||||
h.logger.Debugf("%s <<< %s data: %d",
|
||||
|
@ -120,13 +120,13 @@ func (h *sniHandler) Handle(ctx context.Context, conn net.Conn) {
|
||||
|
||||
buf := bufpool.Get(int(length) + dissector.RecordHeaderLen)
|
||||
defer bufpool.Put(buf)
|
||||
if _, err := io.ReadFull(conn, buf[dissector.RecordHeaderLen:]); err != nil {
|
||||
if _, err := io.ReadFull(conn, (*buf)[dissector.RecordHeaderLen:]); err != nil {
|
||||
h.logger.Error(err)
|
||||
return
|
||||
}
|
||||
copy(buf, hdr[:])
|
||||
copy(*buf, hdr[:])
|
||||
|
||||
buf, host, err := h.decodeHost(bytes.NewReader(buf))
|
||||
opaque, host, err := h.decodeHost(bytes.NewReader(*buf))
|
||||
if err != nil {
|
||||
h.logger.Error(err)
|
||||
return
|
||||
@ -149,7 +149,7 @@ func (h *sniHandler) Handle(ctx context.Context, conn net.Conn) {
|
||||
}
|
||||
defer cc.Close()
|
||||
|
||||
if _, err := cc.Write(buf); err != nil {
|
||||
if _, err := cc.Write(opaque); err != nil {
|
||||
h.logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
@ -128,7 +128,7 @@ func (h *ssuHandler) relayPacket(pc1, pc2 net.PacketConn) (err error) {
|
||||
b := bufpool.Get(bufSize)
|
||||
defer bufpool.Put(b)
|
||||
|
||||
n, addr, err := pc1.ReadFrom(b)
|
||||
n, addr, err := pc1.ReadFrom(*b)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -138,7 +138,7 @@ func (h *ssuHandler) relayPacket(pc1, pc2 net.PacketConn) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
if _, err = pc2.WriteTo(b[:n], addr); err != nil {
|
||||
if _, err = pc2.WriteTo((*b)[:n], addr); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -160,7 +160,7 @@ func (h *ssuHandler) relayPacket(pc1, pc2 net.PacketConn) (err error) {
|
||||
b := bufpool.Get(bufSize)
|
||||
defer bufpool.Put(b)
|
||||
|
||||
n, raddr, err := pc2.ReadFrom(b)
|
||||
n, raddr, err := pc2.ReadFrom(*b)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -170,7 +170,7 @@ func (h *ssuHandler) relayPacket(pc1, pc2 net.PacketConn) (err error) {
|
||||
return nil
|
||||
}
|
||||
|
||||
if _, err = pc1.WriteTo(b[:n], raddr); err != nil {
|
||||
if _, err = pc1.WriteTo((*b)[:n], raddr); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -192,7 +192,7 @@ func (h *tapHandler) transport(tap net.Conn, conn net.PacketConn, raddr net.Addr
|
||||
b := bufpool.Get(h.md.bufferSize)
|
||||
defer bufpool.Put(b)
|
||||
|
||||
n, err := tap.Read(b)
|
||||
n, err := tap.Read(*b)
|
||||
if err != nil {
|
||||
select {
|
||||
case h.exit <- struct{}{}:
|
||||
@ -201,22 +201,22 @@ func (h *tapHandler) transport(tap net.Conn, conn net.PacketConn, raddr net.Addr
|
||||
return err
|
||||
}
|
||||
|
||||
src := waterutil.MACSource(b[:n])
|
||||
dst := waterutil.MACDestination(b[:n])
|
||||
eType := etherType(waterutil.MACEthertype(b[:n]))
|
||||
src := waterutil.MACSource((*b)[:n])
|
||||
dst := waterutil.MACDestination((*b)[:n])
|
||||
eType := etherType(waterutil.MACEthertype((*b)[:n]))
|
||||
|
||||
h.logger.Debugf("%s >> %s %s %d", src, dst, eType, n)
|
||||
|
||||
// client side, deliver frame directly.
|
||||
if raddr != nil {
|
||||
_, err := conn.WriteTo(b[:n], raddr)
|
||||
_, err := conn.WriteTo((*b)[:n], raddr)
|
||||
return err
|
||||
}
|
||||
|
||||
// server side, broadcast.
|
||||
if waterutil.IsBroadcast(dst) {
|
||||
go h.routes.Range(func(k, v interface{}) bool {
|
||||
conn.WriteTo(b[:n], v.(net.Addr))
|
||||
conn.WriteTo((*b)[:n], v.(net.Addr))
|
||||
return true
|
||||
})
|
||||
return nil
|
||||
@ -231,7 +231,7 @@ func (h *tapHandler) transport(tap net.Conn, conn net.PacketConn, raddr net.Addr
|
||||
return nil
|
||||
}
|
||||
|
||||
if _, err := conn.WriteTo(b[:n], addr); err != nil {
|
||||
if _, err := conn.WriteTo((*b)[:n], addr); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -251,21 +251,21 @@ func (h *tapHandler) transport(tap net.Conn, conn net.PacketConn, raddr net.Addr
|
||||
b := bufpool.Get(h.md.bufferSize)
|
||||
defer bufpool.Put(b)
|
||||
|
||||
n, addr, err := conn.ReadFrom(b)
|
||||
n, addr, err := conn.ReadFrom(*b)
|
||||
if err != nil &&
|
||||
err != shadowaead.ErrShortPacket {
|
||||
return err
|
||||
}
|
||||
|
||||
src := waterutil.MACSource(b[:n])
|
||||
dst := waterutil.MACDestination(b[:n])
|
||||
eType := etherType(waterutil.MACEthertype(b[:n]))
|
||||
src := waterutil.MACSource((*b)[:n])
|
||||
dst := waterutil.MACDestination((*b)[:n])
|
||||
eType := etherType(waterutil.MACEthertype((*b)[:n]))
|
||||
|
||||
h.logger.Debugf("%s >> %s %s %d", src, dst, eType, n)
|
||||
|
||||
// client side, deliver frame to tap device.
|
||||
if raddr != nil {
|
||||
_, err := tap.Write(b[:n])
|
||||
_, err := tap.Write((*b)[:n])
|
||||
return err
|
||||
}
|
||||
|
||||
@ -284,7 +284,7 @@ func (h *tapHandler) transport(tap net.Conn, conn net.PacketConn, raddr net.Addr
|
||||
if waterutil.IsBroadcast(dst) {
|
||||
go h.routes.Range(func(k, v interface{}) bool {
|
||||
if k.(tapRouteKey) != rkey {
|
||||
conn.WriteTo(b[:n], v.(net.Addr))
|
||||
conn.WriteTo((*b)[:n], v.(net.Addr))
|
||||
}
|
||||
return true
|
||||
})
|
||||
@ -292,11 +292,11 @@ func (h *tapHandler) transport(tap net.Conn, conn net.PacketConn, raddr net.Addr
|
||||
|
||||
if v, ok := h.routes.Load(hwAddrToTapRouteKey(dst)); ok {
|
||||
h.logger.Debugf("find route: %s -> %s", dst, v)
|
||||
_, err := conn.WriteTo(b[:n], v.(net.Addr))
|
||||
_, err := conn.WriteTo((*b)[:n], v.(net.Addr))
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err := tap.Write(b[:n]); err != nil {
|
||||
if _, err := tap.Write((*b)[:n]); err != nil {
|
||||
select {
|
||||
case h.exit <- struct{}{}:
|
||||
default:
|
||||
|
@ -29,7 +29,7 @@ func copyBuffer(dst io.Writer, src io.Reader) error {
|
||||
buf := bufpool.Get(16 * 1024)
|
||||
defer bufpool.Put(buf)
|
||||
|
||||
_, err := io.CopyBuffer(dst, src, buf)
|
||||
_, err := io.CopyBuffer(dst, src, *buf)
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -193,7 +193,7 @@ func (h *tunHandler) transport(tun net.Conn, conn net.PacketConn, raddr net.Addr
|
||||
b := bufpool.Get(h.md.bufferSize)
|
||||
defer bufpool.Put(b)
|
||||
|
||||
n, err := tun.Read(b)
|
||||
n, err := tun.Read(*b)
|
||||
if err != nil {
|
||||
select {
|
||||
case h.exit <- struct{}{}:
|
||||
@ -203,19 +203,19 @@ func (h *tunHandler) transport(tun net.Conn, conn net.PacketConn, raddr net.Addr
|
||||
}
|
||||
|
||||
var src, dst net.IP
|
||||
if waterutil.IsIPv4(b[:n]) {
|
||||
header, err := ipv4.ParseHeader(b[:n])
|
||||
if waterutil.IsIPv4((*b)[:n]) {
|
||||
header, err := ipv4.ParseHeader((*b)[:n])
|
||||
if err != nil {
|
||||
h.logger.Error(err)
|
||||
return nil
|
||||
}
|
||||
h.logger.Debugf("%s >> %s %-4s %d/%-4d %-4x %d",
|
||||
header.Src, header.Dst, ipProtocol(waterutil.IPv4Protocol(b[:n])),
|
||||
header.Src, header.Dst, ipProtocol(waterutil.IPv4Protocol((*b)[:n])),
|
||||
header.Len, header.TotalLen, header.ID, header.Flags)
|
||||
|
||||
src, dst = header.Src, header.Dst
|
||||
} else if waterutil.IsIPv6(b[:n]) {
|
||||
header, err := ipv6.ParseHeader(b[:n])
|
||||
} else if waterutil.IsIPv6((*b)[:n]) {
|
||||
header, err := ipv6.ParseHeader((*b)[:n])
|
||||
if err != nil {
|
||||
h.logger.Warn(err)
|
||||
return nil
|
||||
@ -233,7 +233,7 @@ func (h *tunHandler) transport(tun net.Conn, conn net.PacketConn, raddr net.Addr
|
||||
|
||||
// client side, deliver packet directly.
|
||||
if raddr != nil {
|
||||
_, err := conn.WriteTo(b[:n], raddr)
|
||||
_, err := conn.WriteTo((*b)[:n], raddr)
|
||||
return err
|
||||
}
|
||||
|
||||
@ -245,7 +245,7 @@ func (h *tunHandler) transport(tun net.Conn, conn net.PacketConn, raddr net.Addr
|
||||
|
||||
h.logger.Debugf("find route: %s -> %s", dst, addr)
|
||||
|
||||
if _, err := conn.WriteTo(b[:n], addr); err != nil {
|
||||
if _, err := conn.WriteTo((*b)[:n], addr); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
@ -264,27 +264,27 @@ func (h *tunHandler) transport(tun net.Conn, conn net.PacketConn, raddr net.Addr
|
||||
b := bufpool.Get(h.md.bufferSize)
|
||||
defer bufpool.Put(b)
|
||||
|
||||
n, addr, err := conn.ReadFrom(b)
|
||||
n, addr, err := conn.ReadFrom(*b)
|
||||
if err != nil &&
|
||||
err != shadowaead.ErrShortPacket {
|
||||
return err
|
||||
}
|
||||
|
||||
var src, dst net.IP
|
||||
if waterutil.IsIPv4(b[:n]) {
|
||||
header, err := ipv4.ParseHeader(b[:n])
|
||||
if waterutil.IsIPv4((*b)[:n]) {
|
||||
header, err := ipv4.ParseHeader((*b)[:n])
|
||||
if err != nil {
|
||||
h.logger.Warn(err)
|
||||
return nil
|
||||
}
|
||||
|
||||
h.logger.Debugf("%s >> %s %-4s %d/%-4d %-4x %d",
|
||||
header.Src, header.Dst, ipProtocol(waterutil.IPv4Protocol(b[:n])),
|
||||
header.Src, header.Dst, ipProtocol(waterutil.IPv4Protocol((*b)[:n])),
|
||||
header.Len, header.TotalLen, header.ID, header.Flags)
|
||||
|
||||
src, dst = header.Src, header.Dst
|
||||
} else if waterutil.IsIPv6(b[:n]) {
|
||||
header, err := ipv6.ParseHeader(b[:n])
|
||||
} else if waterutil.IsIPv6((*b)[:n]) {
|
||||
header, err := ipv6.ParseHeader((*b)[:n])
|
||||
if err != nil {
|
||||
h.logger.Warn(err)
|
||||
return nil
|
||||
@ -303,7 +303,7 @@ func (h *tunHandler) transport(tun net.Conn, conn net.PacketConn, raddr net.Addr
|
||||
|
||||
// client side, deliver packet to tun device.
|
||||
if raddr != nil {
|
||||
_, err := tun.Write(b[:n])
|
||||
_, err := tun.Write((*b)[:n])
|
||||
return err
|
||||
}
|
||||
|
||||
@ -321,11 +321,11 @@ func (h *tunHandler) transport(tun net.Conn, conn net.PacketConn, raddr net.Addr
|
||||
if addr := h.findRouteFor(dst); addr != nil {
|
||||
h.logger.Debugf("find route: %s -> %s", dst, addr)
|
||||
|
||||
_, err := conn.WriteTo(b[:n], addr)
|
||||
_, err := conn.WriteTo((*b)[:n], addr)
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err := tun.Write(b[:n]); err != nil {
|
||||
if _, err := tun.Write((*b)[:n]); err != nil {
|
||||
select {
|
||||
case h.exit <- struct{}{}:
|
||||
default:
|
||||
|
Reference in New Issue
Block a user