Commit b015ac66 authored by ginuerzh's avatar ginuerzh

fix buffer size

parent d8af58ce
...@@ -334,16 +334,18 @@ func (c *relayConn) Write(b []byte) (n int, err error) { ...@@ -334,16 +334,18 @@ func (c *relayConn) Write(b []byte) (n int, err error) {
if !c.udp { if !c.udp {
return c.Conn.Write(b) return c.Conn.Write(b)
} }
nsize := 2 + len(b)
var buf []byte var buf []byte
if 2+len(b) <= mediumBufferSize { if nsize <= mediumBufferSize {
buf = mPool.Get().([]byte) buf = mPool.Get().([]byte)
defer mPool.Put(buf) defer mPool.Put(buf)
} else { } else {
buf = make([]byte, 2+len(b)) buf = make([]byte, nsize)
} }
binary.BigEndian.PutUint16(buf[:2], uint16(len(b))) binary.BigEndian.PutUint16(buf[:2], uint16(len(b)))
n = copy(buf[2:], b) n = copy(buf[2:], b)
_, err = c.Conn.Write(buf) _, err = c.Conn.Write(buf[:nsize])
return return
} }
......
...@@ -336,7 +336,7 @@ func (h *tunHandler) transportTun(tun net.Conn, conn net.PacketConn, raddr net.A ...@@ -336,7 +336,7 @@ func (h *tunHandler) transportTun(tun net.Conn, conn net.PacketConn, raddr net.A
for { for {
err := func() error { err := func() error {
b := sPool.Get().([]byte) b := sPool.Get().([]byte)
defer mPool.Put(b) defer sPool.Put(b)
n, addr, err := conn.ReadFrom(b) n, addr, err := conn.ReadFrom(b)
if err != nil && if err != nil &&
...@@ -698,7 +698,7 @@ func (h *tapHandler) transportTap(tap net.Conn, conn net.PacketConn, raddr net.A ...@@ -698,7 +698,7 @@ func (h *tapHandler) transportTap(tap net.Conn, conn net.PacketConn, raddr net.A
for { for {
err := func() error { err := func() error {
b := sPool.Get().([]byte) b := sPool.Get().([]byte)
defer mPool.Put(b) defer sPool.Put(b)
n, addr, err := conn.ReadFrom(b) n, addr, err := conn.ReadFrom(b)
if err != nil && if err != nil &&
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment