3x-ui/internal
MHSanaei d105b2741c
fix(node): stop one rejected inbound from starving a node's traffic sync
A legacy socks inbound (predating the socks-to-mixed protocol rename) fails the node's request validation when pushed. ReconcileNode aborted on the first failed inbound and syncOne then skipped the traffic snapshot entirely and never cleared ConfigDirty, so the whole node re-failed every tick and the master stopped deducting traffic for every client on that node, exactly as reported in #5685.

Three-part fix: ReconcileNode now pushes every inbound and runs the delete sweep even past individual failures, returning the failures joined; syncOne logs a failed reconcile but continues with the traffic pull (dirty stays set, so reconcile retries and the merge stays in its conservative mode); and a migration renames legacy socks inbounds to mixed, which has an identical settings shape, removing the known trigger.

Closes #5685
2026-07-03 09:47:30 +02:00
..
config fix: make all self-managed file downloads/installs atomic, with real completion status (#5711) 2026-07-02 18:19:33 +02:00
database fix(node): stop one rejected inbound from starving a node's traffic sync 2026-07-03 09:47:30 +02:00
eventbus style: adopt golangci-lint v2 and resolve all findings 2026-06-27 15:42:22 +02:00
logger style: adopt golangci-lint v2 and resolve all findings 2026-06-27 15:42:22 +02:00
mtproto style: adopt golangci-lint v2 and resolve all findings 2026-06-27 15:42:22 +02:00
sub feat(sub): show the announcement on the subscription info page 2026-07-03 09:38:37 +02:00
tunnelmonitor style: adopt golangci-lint v2 and resolve all findings 2026-06-27 15:42:22 +02:00
util fix(sub): default https:// for scheme-less support and profile URLs 2026-07-02 13:47:10 +02:00
web fix(node): stop one rejected inbound from starving a node's traffic sync 2026-07-03 09:47:30 +02:00
xray fix(xray): reconcile client auto-disable through the API instead of a forced restart 2026-07-02 09:26:53 +02:00