network

package
v0.5.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 3, 2026 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	MaxThreadsOnLowMemory          = env.GetEnvOrDefault("MEMGUARDIAN_THREADS", 30)
	MaxBytesBufferAllocOnLowMemory = env.GetEnvOrDefault("MEMGUARDIAN_ALLOC", 200)
)

Dialer is a shared fastdialer instance for host DNS resolution. Prefer CurrentDialer() for reads; the variable is exported for backward compatibility but is mutated under mu.

View Source
var ErrDialerPolicyConflict = errors.New(
	"network dialer already initialized with a different network policy; " +
		"concurrent scans cannot use conflicting exclude/resolver settings")

ErrDialerPolicyConflict is returned by Init when the shared dialer already exists and was built from a DIFFERENT network policy.

The dialer is process-global and built once, from whichever options reached Init first. Every later Init silently adopted it. For a deny list that is the wrong direction to fail: a second scan configured to refuse a host would reuse a dialer that allows it, and nothing would say so. The tripwire fails closed instead — the caller learns its policy cannot be honoured rather than running under someone else's.

No current behaviour changes: ExcludeTargets, RestrictLocalNetworkAccess, SystemResolvers, DialerTimeout and DialerKeepAlive are not assigned anywhere in the tree, so every Init today computes the same key. This exists so the first code to wire one of them cannot land the silent-inheritance bug with it; the real fix (a scan-local dialer) is a larger change.

Functions

func Close

func Close()

Close releases one reference to the global shared fastdialer. The dialer is closed and reset to nil only when the final reference is released, allowing a later Init() to re-create it. Extra Close() calls (more than Init()) are ignored rather than tearing down a dialer still in use.

func CurrentDialer

func CurrentDialer() *fastdialer.Dialer

CurrentDialer returns the shared dialer (nil if not initialized), read under the lock so it doesn't race with Init/Close.

func GlobalGuardBytesBufferAlloc

func GlobalGuardBytesBufferAlloc() error

GlobalGuardBytesBufferAlloc reduces buffer pool size when memory is low

func GlobalRestoreBytesBufferAlloc

func GlobalRestoreBytesBufferAlloc()

GlobalRestoreBytesBufferAlloc restores buffer pool size when memory is normal

func GuardThreadsOrDefault

func GuardThreadsOrDefault(current int) int

GuardThreadsOrDefault returns reduced thread count when memory is low

func Init

func Init(options *types.Options) error

Init creates the global Dialer instance based on user configuration, or reuses the existing one, and registers one reference. Every successful Init must be paired with exactly one Close.

Reuse requires the SAME network policy: an Init whose policy differs from the live dialer's returns ErrDialerPolicyConflict and takes no reference, so the caller must not Close. See ErrDialerPolicyConflict.

func IsLowOnMemory

func IsLowOnMemory() bool

func NewDialer

func NewDialer(options *types.Options) (*fastdialer.Dialer, error)

NewDialer creates a new fastdialer instance based on user configuration.

func StartActiveMemGuardian

func StartActiveMemGuardian(ctx context.Context)

func StopActiveMemGuardian

func StopActiveMemGuardian()

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL