3x-ui/internal/xray
MHSanaei e5b56c9444 fix(xray): reconcile client auto-disable through the API instead of a forced restart
When a client expired or hit its traffic limit, XrayTrafficJob called
RestartXray(true), stopping the whole process and dropping every live
connection on every inbound (#5712 reported this as XHTTP on 443 dying) —
even though disableInvalidClients had already removed the user from the
running core over gRPC. The force restart existed only to re-sync the
process's config snapshot.

Switch the job to a non-forced restart and teach ComputeHotDiff to express
a client-only inbound change as per-user AlterInbound operations for
vless/vmess/trojan, so the reconcile is a no-op RemoveUser plus a snapshot
update rather than a handler swap that would still blip that inbound's
listener. Anything beyond the clients list still falls back to handler
replacement or a full restart as before.

Closes #5712
2026-07-02 09:26:53 +02:00
..
api.go fix(xray): reconcile client auto-disable through the API instead of a forced restart 2026-07-02 09:26:53 +02:00
api_e2e_test.go feat(online): use xray online-stats API for onlines and access-log-free IP limit 2026-06-11 19:42:03 +02:00
api_test.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
api_wireguard_test.go feat(wireguard): multi-client support 2026-06-28 00:44:38 +02:00
client_traffic.go perf(scale): speed up traffic, auto-renew, and node bulk ops at 50k-100k clients 2026-06-20 10:35:46 +02:00
config.go feat: apply inbound/outbound/routing changes live via Xray gRPC API 2026-06-10 23:01:33 +02:00
config_test.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
hot_diff.go fix(xray): reconcile client auto-disable through the API instead of a forced restart 2026-07-02 09:26:53 +02:00
hot_diff_test.go fix(xray): reconcile client auto-disable through the API instead of a forced restart 2026-07-02 09:26:53 +02:00
inbound.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
inbound_test.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
log_writer.go fix(xray): guard log-writer race and bound handler gRPC deadlines (#5442) 2026-06-20 18:10:18 +02:00
log_writer_race_test.go Use efficient APIs and simplify loops 2026-06-23 14:12:28 +02:00
mutation_audit_test.go refactor(frontend): move form-item hints from extra to tooltip 2026-06-17 17:24:16 +02:00
online_test.go feat(online): use xray online-stats API for onlines and access-log-free IP limit 2026-06-11 19:42:03 +02:00
process.go style: adopt golangci-lint v2 and resolve all findings 2026-06-27 15:42:22 +02:00
process_other.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
process_race_test.go Use efficient APIs and simplify loops 2026-06-23 14:12:28 +02:00
process_test.go style: adopt golangci-lint v2 and resolve all findings 2026-06-27 15:42:22 +02:00
process_windows.go style: adopt golangci-lint v2 and resolve all findings 2026-06-27 15:42:22 +02:00
traffic.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00