Fix bind control for auto redirect

This commit is contained in:
世界
2026-08-30 17:41:43 +08:00
parent 2df7a9bac7
commit 719676519d
2 changed files with 7 additions and 8 deletions
+6 -1
View File
@@ -382,7 +382,12 @@ func (d *DefaultDialer) ListenSerialInterfacePacket(ctx context.Context, destina
} }
func (d *DefaultDialer) UDPListenerControl() (control.Func, bool) { func (d *DefaultDialer) UDPListenerControl() (control.Func, bool) {
return d.udpListener.Control, d.autoDetectBindFunc != nil && d.netns == "" egressEnabled := d.autoDetectBindFunc != nil && d.netns == ""
listenerControl := d.udpListener.Control
if egressEnabled && d.networkManager.AutoRedirectOutputMark() != 0 {
listenerControl = control.Append(listenerControl, control.UnbindFromInterface())
}
return listenerControl, egressEnabled
} }
func (d *DefaultDialer) trackConn(conn net.Conn, err error) (net.Conn, error) { func (d *DefaultDialer) trackConn(conn net.Conn, err error) (net.Conn, error) {
+1 -7
View File
@@ -353,7 +353,7 @@ func (r *NetworkManager) AutoDetectInterfaceFunc() control.Func {
if r.interfaceMonitor == nil { if r.interfaceMonitor == nil {
return nil return nil
} }
bindFunc := control.BindToInterfaceFunc(r.interfaceFinder, func(network string, address string) (interfaceName string, interfaceIndex int, err error) { return control.BindToInterfaceFunc(r.interfaceFinder, func(network string, address string) (interfaceName string, interfaceIndex int, err error) {
remoteAddr := M.ParseSocksaddr(address).Addr remoteAddr := M.ParseSocksaddr(address).Addr
if remoteAddr.IsValid() { if remoteAddr.IsValid() {
iif, err := r.interfaceFinder.ByAddr(remoteAddr) iif, err := r.interfaceFinder.ByAddr(remoteAddr)
@@ -367,12 +367,6 @@ func (r *NetworkManager) AutoDetectInterfaceFunc() control.Func {
} }
return defaultInterface.Name, defaultInterface.Index, nil return defaultInterface.Name, defaultInterface.Index, nil
}) })
return func(network, address string, conn syscall.RawConn) error {
if r.autoRedirectOutputMark != 0 {
return nil
}
return bindFunc(network, address, conn)
}
} }
} }