- do not wait ready game server too long, force it's ready after 5 seconds
- a2s: support Compressed Fragment
- do not spam TimeoutError to logs when it's normal
- downgrade min python to 3.7
- make i/o more stable
- support new uvloop + python 3.11
- transport: ignore udp errors on sending/receiving
- adapt to Py3.10 and Py3.11, no more deprecation warnings
- deps: support asyncio_dgram==2.*
- protocol: support a2s_info with challenge number
- now src_query_port_lifetime ignored; Reconnect on each request
values
subsection removed fromdefaults
section
- config: support old-style config section - defaults.values
- ebpf: bind_ip now passed to sqredirect (v1.2.0 required) https://github.com/sqproxy/sqredirect/releases
- config: bind_ip/bind_port now optional and will be selected automatically
- config: defaults.global renamed into
defaults.__global__
- proxy: allow ignore incoming client request by returning special object NO_RESPONSE
- logging: no more ignoring loglevel
- ebpf: script_path now optional, respect running as sudo with custom executable
- ebpf: allow set executable as list, useful for 'sudo ...'
- default error log path changed from /var/log/sqproxy/error.log to /dev/null, you need to set it manually now
- ebpf: allow disable auto redirection; clarify server_port/bind_port options
- logging: now you can set logging level via SQPROXY_LOGLEVEL (default is INFO
- proxy: allow override default QueryProxy class implementation with your own
- ebpf: allow use '0.0.0.0' bind_ip with ebpf program (interpreted like default interface)
- config: we guarantee that the configuration files will be iterated by name in ascending order
- config: deep config merging
- proxy: no random stuck anymore
- proxy: allow disable a2s_rules request
- *****: start eBPF after got all responses from Game Server
- config: fix typo
/etc/sqporxy
->/etc/sqproxy
- proxy: no stuck if gameserver do not respond
- logging: logging setup as soon as possible; add sentry integration option; new SQPROXY_ERROR_LOG env
- messages: Message.encode don't require nosplit_header=True anymore. Now it's default.
- *****: pypi ready