mirror of https://github.com/XTLS/Xray-core
parent
cced1477a0
commit
30e10be95d
|
@ -77,25 +77,25 @@ func (w *tcpWorker) callback(conn stat.Connection) {
|
||||||
case internet.SocketConfig_TProxy:
|
case internet.SocketConfig_TProxy:
|
||||||
dest = net.DestinationFromAddr(conn.LocalAddr())
|
dest = net.DestinationFromAddr(conn.LocalAddr())
|
||||||
}
|
}
|
||||||
// Check if try to connect to this inbound itself (can cause loopback)
|
|
||||||
var isLoopBack bool
|
|
||||||
if w.address == net.AnyIP || w.address == net.AnyIPv6 {
|
|
||||||
if dest.Port.Value() == w.port.Value() && IsLocal(dest.Address.IP()) {
|
|
||||||
isLoopBack = true
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if w.hub.Addr().String() == dest.NetAddr() {
|
|
||||||
isLoopBack = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if isLoopBack {
|
|
||||||
cancel()
|
|
||||||
conn.Close()
|
|
||||||
errors.LogError(ctx, errors.New("loopback connection detected"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if dest.IsValid() {
|
if dest.IsValid() {
|
||||||
|
// Check if try to connect to this inbound itself (can cause loopback)
|
||||||
|
var isLoopBack bool
|
||||||
|
if w.address == net.AnyIP || w.address == net.AnyIPv6 {
|
||||||
|
if dest.Port.Value() == w.port.Value() && IsLocal(dest.Address.IP()) {
|
||||||
|
isLoopBack = true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if w.hub.Addr().String() == dest.NetAddr() {
|
||||||
|
isLoopBack = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if isLoopBack {
|
||||||
|
cancel()
|
||||||
|
conn.Close()
|
||||||
|
errors.LogError(ctx, errors.New("loopback connection detected"))
|
||||||
|
return
|
||||||
|
}
|
||||||
outbounds[0].Target = dest
|
outbounds[0].Target = dest
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue