package dialer

import (
	"syscall"

	"github.com/sagernet/sing/common/control"
	M "github.com/sagernet/sing/common/metadata"
	N "github.com/sagernet/sing/common/network"
)

func skipIfPrivate(next control.Func) control.Func {
	return func(network, address string, conn syscall.RawConn) error {
		destination := M.ParseSocksaddr(address)
		if !N.IsPublicAddr(destination.Addr) {
			return nil
		}
		return next(network, address, conn)
	}
}