mirror of
https://github.com/3proxy/3proxy.git
synced 2026-10-17 08:55:49 +08:00
After a reload, unless noforce, a client of an old service goes by the rules of the newest service on its listener, the one accepting there now. It takes one of that service's maxconn slots, which counts it there and keeps that service and its configuration alive until the client is done, and is re-authenticated as its client: access lists, users, authentication, bandwidth limits and traffic counters come from the new configuration. A later reload moves it on, giving the slot back. The client stays its own service's child, which keeps its filters and TLS state. It is dropped if its service was removed or is of another type now (26), or if the newest service has no free slot (27); what the re-authentication refuses ends it as before. A service without a listener (UDP, connecting back) keeps its clients as they are. This restores what force did before the configuration was kept per service: since then a client compared its version with its own service's configuration, which never changes, and was never checked again. Services now take their configuration's version as it is: a reload numbers the new configuration before reading it, and so does startup now, where services were numbered one ahead. A listener now stays with its old service until that service's last client is gone, those clients looking the newest service up through it; the socket itself is still closed as soon as nobody accepts on it. Connection limits are given back in the configuration they were taken in. PSRV() is the service whose rules apply to a client. The reload case checks that a download of a user the new configuration keeps finishes under it, and that one of a user it removes is cut. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| admin.py | ||
| auto.py | ||
| counters.py | ||
| dnspr.py | ||
| httpsrv_auth.py | ||
| httpsrv_files.py | ||
| httpsrv_keepalive.py | ||
| httpsrv_ops.py | ||
| httpsrv_parsing.py | ||
| httpsrv_proxypass.py | ||
| httpsrv_rules.py | ||
| ipv6.py | ||
| ktls.py | ||
| maxconn.py | ||
| parent_failover.py | ||
| parent_ports.py | ||
| parent_weights.py | ||
| pcre.py | ||
| portmap.py | ||
| proxy_http.py | ||
| reload.py | ||
| socks.py | ||
| splice.py | ||
| ssl.py | ||
| takeover.py | ||
| timeouts.py | ||
| tlspr.py | ||
| transparent.py | ||