mirror of
https://github.com/XTLS/REALITY.git
synced 2026-09-22 23:08:01 +03:00
fix: DetectPostHandshakeRecordsLens background probe bugs (panic, leak, race) (#36)
Co-authored-by: 风扇滑翔翼 <Fangliding.fshxy@outlook.com>
This commit is contained in:
+7
-1
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user