fix: DetectPostHandshakeRecordsLens background probe bugs (panic, leak, race) (#36)

Co-authored-by: 风扇滑翔翼 <Fangliding.fshxy@outlook.com>
This commit is contained in:
hexonal
2026-09-08 04:58:12 +00:00
committed by GitHub
co-authored by 风扇滑翔翼
parent 393f8de3ee
commit e1986a4d31
+7 -1
View File
@@ -34,6 +34,7 @@ func DetectPostHandshakeRecordsLens(config *Config) {
if err != nil {
return
}
defer target.Close()
if config.Xver == 1 || config.Xver == 2 {
if _, err = proxyproto.HeaderProxyFromAddrs(config.Xver, target.LocalAddr(), target.RemoteAddr()).WriteTo(target); err != nil {
return
@@ -68,6 +69,7 @@ func DetectPostHandshakeRecordsLens(config *Config) {
if err != nil {
return
}
defer target.Close()
if config.Xver == 1 || config.Xver == 2 {
if _, err = proxyproto.HeaderProxyFromAddrs(config.Xver, target.LocalAddr(), target.RemoteAddr()).WriteTo(target); err != nil {
return
@@ -124,6 +126,10 @@ func (c *PostHandshakeRecordDetectConn) Read(b []byte) (n int, err error) {
for {
if len(data) >= 5 && bytes.Equal(data[:3], []byte{23, 3, 3}) {
length := int(binary.BigEndian.Uint16(data[3:5])) + 5
// illegal dada
if length > len(data) {
break
}
postHandshakeRecordsLens = append(postHandshakeRecordsLens, length)
data = data[length:]
} else {
@@ -148,7 +154,7 @@ func (c *CCSDetectConn) Write(b []byte) (n int, err error) {
defer hasAlert.Store(true)
buf := make([]byte, 512)
for {
_, err = c.Conn.Read(buf)
_, err := c.Conn.Read(buf)
if err != nil {
return
}