fix a race condition issue (#3536)

This commit is contained in:
fatedier
2023-07-20 22:32:32 +08:00
committed by GitHub
parent 90861b6821
commit efcc028a3d
12 changed files with 34 additions and 14 deletions

View File

@@ -143,7 +143,9 @@ func (pxy *BaseProxy) HandleTCPWorkConnection(workConn net.Conn, m *msg.StartWor
}
}
if baseConfig.UseCompression {
remote = libio.WithCompression(remote)
var releaseFn func()
remote, releaseFn = libio.WithCompressionFromPool(remote)
defer releaseFn()
}
// check if we need to send proxy protocol info

View File

@@ -97,7 +97,9 @@ func (pxy *SUDPProxy) InWorkConn(conn net.Conn, m *msg.StartWorkConn) {
}
}
if pxy.cfg.UseCompression {
rwc = libio.WithCompression(rwc)
var releaseFn func()
rwc, releaseFn = libio.WithCompressionFromPool(rwc)
defer releaseFn()
}
conn = utilnet.WrapReadWriteCloserToConn(rwc, conn)

View File

@@ -108,7 +108,9 @@ func (pxy *UDPProxy) InWorkConn(conn net.Conn, m *msg.StartWorkConn) {
}
}
if pxy.cfg.UseCompression {
rwc = libio.WithCompression(rwc)
var releaseFn func()
rwc, releaseFn = libio.WithCompressionFromPool(rwc)
defer releaseFn()
}
conn = utilnet.WrapReadWriteCloserToConn(rwc, conn)

View File

@@ -126,7 +126,9 @@ func (sv *STCPVisitor) handleConn(userConn net.Conn) {
}
if sv.cfg.UseCompression {
remote = libio.WithCompression(remote)
var releaseFn func()
remote, releaseFn = libio.WithCompressionFromPool(remote)
defer releaseFn()
}
libio.Join(userConn, remote)

View File

@@ -200,7 +200,9 @@ func (sv *XTCPVisitor) handleConn(userConn net.Conn) {
}
}
if sv.cfg.UseCompression {
muxConnRWCloser = libio.WithCompression(muxConnRWCloser)
var releaseFn func()
muxConnRWCloser, releaseFn = libio.WithCompressionFromPool(muxConnRWCloser)
defer releaseFn()
}
_, _, errs := libio.Join(userConn, muxConnRWCloser)