fix race condition

This commit is contained in:
ginuerzh
2023-10-19 23:47:47 +08:00
parent f2fd6554ad
commit cc4310106b
29 changed files with 157 additions and 156 deletions

View File

@ -41,13 +41,6 @@ func (l *mwsListener) parseMetadata(md mdata.Metadata) (err error) {
readBufferSize = "readBufferSize"
writeBufferSize = "writeBufferSize"
enableCompression = "enableCompression"
muxKeepAliveDisabled = "muxKeepAliveDisabled"
muxKeepAliveInterval = "muxKeepAliveInterval"
muxKeepAliveTimeout = "muxKeepAliveTimeout"
muxMaxFrameSize = "muxMaxFrameSize"
muxMaxReceiveBuffer = "muxMaxReceiveBuffer"
muxMaxStreamBuffer = "muxMaxStreamBuffer"
)
l.md.path = mdutil.GetString(md, path)

View File

@ -23,7 +23,7 @@ func (c *redirConn) Read(b []byte) (n int, err error) {
c.once.Do(func() {
n = copy(b, c.buf)
bufpool.Put(&c.buf)
bufpool.Put(c.buf)
})
if n == 0 {

View File

@ -45,7 +45,7 @@ func (l *redirectListener) listenUDP(addr string) (*net.UDPConn, error) {
func (l *redirectListener) accept() (conn net.Conn, err error) {
b := bufpool.Get(l.md.readBufferSize)
n, raddr, dstAddr, err := readFromUDP(l.ln, *b)
n, raddr, dstAddr, err := readFromUDP(l.ln, b)
if err != nil {
l.logger.Error(err)
return
@ -65,7 +65,7 @@ func (l *redirectListener) accept() (conn net.Conn, err error) {
conn = &redirConn{
Conn: c,
buf: (*b)[:n],
buf: b[:n],
ttl: l.md.ttl,
}
return
@ -81,12 +81,12 @@ func readFromUDP(conn *net.UDPConn, b []byte) (n int, remoteAddr *net.UDPAddr, d
oob := bufpool.Get(1024)
defer bufpool.Put(oob)
n, oobn, _, remoteAddr, err := conn.ReadMsgUDP(b, *oob)
n, oobn, _, remoteAddr, err := conn.ReadMsgUDP(b, oob)
if err != nil {
return 0, nil, nil, err
}
msgs, err := unix.ParseSocketControlMessage((*oob)[:oobn])
msgs, err := unix.ParseSocketControlMessage(oob[:oobn])
if err != nil {
return 0, nil, nil, fmt.Errorf("parsing socket control message: %s", err)
}

View File

@ -24,7 +24,7 @@ func (d *tunDevice) Read(p []byte) (n int, err error) {
b := bufpool.Get(rbuf)
defer bufpool.Put(b)
n, err = d.dev.Read(*b, tunOffsetBytes)
n, err = d.dev.Read(b, tunOffsetBytes)
if n <= tunOffsetBytes || err != nil {
d.dev.Flush()
if n <= tunOffsetBytes {
@ -33,7 +33,7 @@ func (d *tunDevice) Read(p []byte) (n int, err error) {
return
}
n = copy(p, (*b)[tunOffsetBytes:tunOffsetBytes+n])
n = copy(p, b[tunOffsetBytes:tunOffsetBytes+n])
return
}
@ -41,8 +41,8 @@ func (d *tunDevice) Write(p []byte) (n int, err error) {
b := bufpool.Get(tunOffsetBytes + len(p))
defer bufpool.Put(b)
copy((*b)[tunOffsetBytes:], p)
return d.dev.Write(*b, tunOffsetBytes)
copy(b[tunOffsetBytes:], p)
return d.dev.Write(b, tunOffsetBytes)
}
func (d *tunDevice) Close() error {