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
..
2026-06-27 15:42:22 +02:00
2026-06-27 15:42:22 +02:00
2026-06-27 15:42:22 +02:00
2026-06-28 18:10:38 +02:00
2026-06-27 15:42:22 +02:00
2026-06-20 10:35:46 +02:00
2026-06-27 12:08:20 +02:00
2026-06-10 15:19:22 +02:00
2026-06-10 15:19:22 +02:00
2026-06-27 15:42:22 +02:00
2026-06-27 15:42:22 +02:00
2026-06-29 13:39:03 +02:00
2026-07-02 09:17:47 +02:00
2026-07-02 09:17:47 +02:00
2026-06-24 13:02:42 +02:00
2026-06-10 15:19:22 +02:00
2026-06-14 20:57:14 +02:00
2026-06-11 12:04:02 +02:00
2026-06-17 15:55:56 +02:00
2026-07-02 09:17:47 +02:00
2026-07-02 09:17:47 +02:00
2026-06-28 15:18:28 +02:00
2026-06-28 00:44:38 +02:00
2026-06-10 15:19:22 +02:00
2026-06-24 13:02:42 +02:00
2026-06-10 15:19:22 +02:00
2026-07-02 09:17:47 +02:00
2026-06-10 15:19:22 +02:00
2026-06-10 15:19:22 +02:00
2026-07-02 09:17:47 +02:00
2026-06-29 13:39:03 +02:00
2026-06-28 00:44:38 +02:00
2026-06-28 14:41:24 +02:00
2026-06-28 14:41:24 +02:00
2026-06-10 15:19:22 +02:00
2026-06-10 23:01:33 +02:00
2026-06-27 15:42:22 +02:00
2026-06-27 15:42:22 +02:00
2026-06-22 00:22:28 +02:00
2026-06-17 12:06:55 +02:00
2026-06-17 12:06:55 +02:00
2026-06-20 10:35:46 +02:00
2026-06-10 15:19:22 +02:00
2026-06-10 15:19:22 +02:00
2026-06-10 15:19:22 +02:00
2026-06-27 15:42:22 +02:00
2026-06-27 15:42:22 +02:00
2026-06-24 13:02:42 +02:00
2026-06-24 13:02:42 +02:00
2026-06-27 13:50:06 +02:00
2026-06-12 13:00:04 +02:00
2026-06-15 15:17:03 +02:00
2026-06-27 15:42:22 +02:00
2026-06-12 17:58:45 +02:00
2026-06-22 20:20:55 +02:00
2026-06-22 20:20:55 +02:00
2026-06-14 23:10:52 +02:00
2026-06-27 15:42:22 +02:00
2026-06-11 12:04:02 +02:00
2026-06-11 12:04:02 +02:00
2026-06-12 12:03:22 +02:00
2026-06-27 11:22:45 +02:00
2026-06-11 15:14:08 +02:00
2026-07-02 09:17:47 +02:00
2026-06-27 15:42:22 +02:00
2026-06-12 12:03:22 +02:00
2026-06-29 00:50:34 +02:00
2026-06-26 00:10:30 +02:00
2026-06-25 23:30:13 +02:00
2026-06-27 15:42:22 +02:00
2026-06-22 20:20:55 +02:00
2026-06-15 15:46:19 +02:00
2026-06-27 15:42:22 +02:00
2026-06-20 01:09:53 +02:00
2026-06-29 18:35:38 +02:00
2026-06-27 15:42:22 +02:00
2026-06-16 12:19:33 +02:00
2026-06-16 12:19:33 +02:00
2026-06-22 20:20:55 +02:00
2026-06-22 20:20:55 +02:00
2026-06-10 15:19:22 +02:00
2026-06-11 20:48:26 +02:00
2026-06-10 15:19:22 +02:00
2026-06-22 20:20:55 +02:00
2026-06-29 18:35:38 +02:00
2026-06-23 10:48:01 +02:00
2026-06-27 15:42:22 +02:00
2026-06-27 15:42:22 +02:00
2026-06-15 17:21:06 +02:00
2026-06-26 22:18:47 +02:00
2026-06-26 22:18:47 +02:00
2026-06-20 10:35:46 +02:00
2026-06-24 21:22:42 +02:00
2026-06-20 00:37:35 +02:00
2026-06-28 14:57:43 +02:00
2026-06-16 12:19:33 +02:00
2026-06-16 12:19:33 +02:00
2026-06-28 15:17:15 +02:00
2026-06-28 18:10:38 +02:00
2026-06-17 14:11:35 +02:00
2026-06-10 15:19:22 +02:00
2026-06-27 15:42:22 +02:00
2026-06-10 15:19:22 +02:00
2026-06-17 15:55:47 +02:00
2026-06-10 15:19:22 +02:00
2026-06-12 17:58:45 +02:00
2026-06-15 21:03:41 +02:00
2026-06-20 01:18:31 +02:00
2026-06-20 01:18:31 +02:00
2026-06-10 15:19:22 +02:00
2026-06-27 15:42:22 +02:00
2026-06-15 00:43:49 +02:00
2026-06-28 00:44:38 +02:00
2026-06-23 17:38:16 +02:00
2026-07-02 09:26:53 +02:00