Xirsys.Sockets.Config (xturn_sockets v2.2.0)
View SourceRuntime configuration for :xturn_sockets.
Lookup order for get/2: host app (:config_app), then :xturn_sockets,
then the caller's default.
Set config :xturn_sockets, config_app: :my_app so config :my_app, ...
overrides library defaults without copying every key.
Summary
Functions
Socket options to re-arm UDP/TCP listeners and relay sockets after each read.
Per-connection receive/send buffer size in bytes. Default 262_144.
Fixed-window request counter for one client IP.
Looks up key with host-app precedence.
Buffer size for shared listener sockets (UDP listen, TCP accept).
Maximum concurrent per-peer UDP sessions. Default 100_000.
Whether check_rate_limit/1 is armed. Default true.
Merged reorder tunables for a named tier.
Advertised IPv6 bind address. Default {0, 0, 0, 0, 0, 0, 0, 0}.
Advertised IPv4 bind address. Default {0, 0, 0, 0}.
Local IPv6 address used when sockname/1 is unavailable.
Default {0, 0, 0, 0, 0, 0, 0, 0}.
Local IPv4 address used when sockname/1 is unavailable. Default {0, 0, 0, 0}.
TLS/DTLS handshake timeout in milliseconds. Default 10_000.
Default :pool dispatch size when a tier omits :pool_size.
Falls back to System.schedulers_online/0.
UDP {active, N} batch size. 1 means active: :once. Default 32.
Idle lifetime for per-peer UDP sessions, in milliseconds. Default 30_000.
Interval for sweeping idle UDP sessions, in milliseconds. Default 5_000.
Functions
@spec active_socket_opts() :: keyword()
Socket options to re-arm UDP/TCP listeners and relay sockets after each read.
Uses {active, N} when udp_active_n/0 > 1, else active: :once.
@spec buffer_size() :: pos_integer()
Per-connection receive/send buffer size in bytes. Default 262_144.
@spec check_rate_limit(:inet.ip_address()) :: :ok | {:error, :rate_limited}
Fixed-window request counter for one client IP.
Intended for control-plane requests only. Do not apply this to relayed media: a request-shaped budget is exhausted in seconds at packet rates.
Each IP holds one row (window index + count), so check and update are O(1).
Parameters
client_ip- peer address used as the ETS keyiex> Xirsys.Sockets.Config.check_rate_limit({203, 0, 113, 1}) :ok
Looks up key with host-app precedence.
Parameters
key- atom stored under:xturn_socketsor the host:config_appdefault- returned when neither application defineskeyiex> Xirsys.Sockets.Config.get(:absent_doctest_key, :fallback) :fallback
@spec listener_buffer_size() :: pos_integer()
Buffer size for shared listener sockets (UDP listen, TCP accept).
Defaults to 4_194_304 so the kernel queue can absorb bursts while workers
drain. Relay sockets set their own buffers in Transport.UDP.open_relay/2.
@spec max_udp_sessions() :: pos_integer()
Maximum concurrent per-peer UDP sessions. Default 100_000.
@spec rate_limit_enabled?() :: boolean()
Whether check_rate_limit/1 is armed. Default true.
Merged reorder tunables for a named tier.
Precedence (lowest to highest): library defaults, :xturn_sockets :reorder
config, host :config_app :reorder config, explicit keys in opts.
Parameters
name- tier lookup key (e.g.:rtp), ornilfor library defaults onlyopts- explicit overrides (:enabled,:window,:max_delay_ms,:on_overflow)iex> opts = Xirsys.Sockets.Config.reorder_opts(nil, []) iex> opts[:window] 16 iex> opts[:enabled] true iex> opts[:on_overflow] :flush_oldest
@spec server_ip6() :: :inet.ip_address()
Advertised IPv6 bind address. Default {0, 0, 0, 0, 0, 0, 0, 0}.
@spec server_ip() :: :inet.ip_address()
Advertised IPv4 bind address. Default {0, 0, 0, 0}.
@spec server_local_ip6() :: :inet.ip_address()
Local IPv6 address used when sockname/1 is unavailable.
Default {0, 0, 0, 0, 0, 0, 0, 0}.
@spec server_local_ip() :: :inet.ip_address()
Local IPv4 address used when sockname/1 is unavailable. Default {0, 0, 0, 0}.
@spec ssl_handshake_timeout() :: pos_integer()
TLS/DTLS handshake timeout in milliseconds. Default 10_000.
@spec tier_pool_size() :: pos_integer()
Default :pool dispatch size when a tier omits :pool_size.
Falls back to System.schedulers_online/0.
@spec udp_active_n() :: pos_integer()
UDP {active, N} batch size. 1 means active: :once. Default 32.
@spec udp_session_idle_ms() :: pos_integer()
Idle lifetime for per-peer UDP sessions, in milliseconds. Default 30_000.
@spec udp_session_sweep_ms() :: pos_integer()
Interval for sweeping idle UDP sessions, in milliseconds. Default 5_000.