~/Projects/sing
git clone https://code.lsong.org/sing
Commit
- Commit
- 834794b006ea89ceed9f157f1843a840511dfa47
- Author
- 世界 <[email protected]>
- Date
- 2022-09-16 15:11:48 +0800 +0800
- Diffstat
common/control/bind.go | 6 ++++++
Skip bind for local addr
diff --git a/common/control/bind.go b/common/control/bind.go index e41bd39d40c75094c6b7f4f5a7f71d4131d7b1f0..62a3f8bb5250aadfb50e50f6128d9b8f3dfed159 100644 --- a/common/control/bind.go +++ b/common/control/bind.go @@ -4,6 +4,9 @@ import ( "os" "runtime" "syscall" + + M "github.com/sagernet/sing/common/metadata" + N "github.com/sagernet/sing/common/network" ) func BindToInterface(finder InterfaceFinder, interfaceName string, interfaceIndex int) Func { @@ -22,6 +25,9 @@ const useInterfaceName = runtime.GOOS == "linux" || runtime.GOOS == "android" func BindToInterface0(finder InterfaceFinder, conn syscall.RawConn, network string, address string, interfaceName string, interfaceIndex int) error { + if addr := M.ParseSocksaddr(address).Addr; addr.IsValid() && !N.IsPublicAddr(addr) { + return nil + } if interfaceName == "" && interfaceIndex == -1 { return nil }