Fix copy with src buffer to headroom writer

This commit is contained in:
世界
2022-07-30 17:43:58 +08:00
parent 2ce09b6ffd
commit 2d3d46eb34
6 changed files with 59 additions and 18 deletions

View File

@@ -323,6 +323,10 @@ func (c *ClientPacketConn) WriteBuffer(buffer *buf.Buffer) error {
return c.ExtendedConn.WriteBuffer(buffer)
}
func (c *ClientPacketConn) Headroom() int {
return 2
}
func (c *ClientPacketConn) WritePacket(buffer *buf.Buffer, destination M.Socksaddr) error {
return c.WriteBuffer(buffer)
}
@@ -471,6 +475,10 @@ func (c *ClientPacketAddrConn) LocalAddr() net.Addr {
return c.ExtendedConn.LocalAddr()
}
func (c *ClientPacketAddrConn) Headroom() int {
return 2 + M.MaxSocksaddrLength
}
func (c *ClientPacketAddrConn) Upstream() any {
return c.ExtendedConn
}

View File

@@ -112,6 +112,17 @@ func (c *ServerConn) WriteBuffer(buffer *buf.Buffer) error {
return c.ExtendedConn.WriteBuffer(buffer)
}
func (c *ServerConn) Headroom() int {
if !c.responseWrite {
return 1
}
return 0
}
func (c *ServerConn) Upstream() any {
return c.ExtendedConn
}
var (
_ N.HandshakeConn = (*ServerPacketConn)(nil)
_ N.PacketConn = (*ServerPacketConn)(nil)
@@ -160,6 +171,17 @@ func (c *ServerPacketConn) WritePacket(buffer *buf.Buffer, destination M.Socksad
return c.ExtendedConn.WriteBuffer(buffer)
}
func (c *ServerPacketConn) Upstream() any {
return c.ExtendedConn
}
func (c *ServerPacketConn) Headroom() int {
if !c.responseWrite {
return 3
}
return 2
}
var (
_ N.HandshakeConn = (*ServerPacketAddrConn)(nil)
_ N.PacketConn = (*ServerPacketAddrConn)(nil)
@@ -210,3 +232,14 @@ func (c *ServerPacketAddrConn) WritePacket(buffer *buf.Buffer, destination M.Soc
}
return c.ExtendedConn.WriteBuffer(buffer)
}
func (c *ServerPacketAddrConn) Upstream() any {
return c.ExtendedConn
}
func (c *ServerPacketAddrConn) Headroom() int {
if !c.responseWrite {
return 3 + M.MaxSocksaddrLength
}
return 2 + M.MaxSocksaddrLength
}