3x-ui/internal
Farhan Zare 95f19b192f
Some checks failed
CI / go-test (push) Has been cancelled
CI / postgres-durable-first (push) Has been cancelled
CI / codegen (push) Has been cancelled
CI / govulncheck (push) Has been cancelled
CI / race (push) Has been cancelled
CI / fuzz-smoke (push) Has been cancelled
CI / golangci (push) Has been cancelled
CI / frontend (push) Has been cancelled
CodeQL Advanced / Analyze (go) (push) Has been cancelled
CodeQL Advanced / Analyze (actions) (push) Has been cancelled
CodeQL Advanced / Analyze (javascript-typescript) (push) Has been cancelled
Release 3X-UI / build (386) (push) Has been cancelled
Release 3X-UI / build (amd64) (push) Has been cancelled
Release 3X-UI / build (arm64) (push) Has been cancelled
Release 3X-UI / build (armv5) (push) Has been cancelled
Release 3X-UI / build (armv6) (push) Has been cancelled
Release 3X-UI / build (armv7) (push) Has been cancelled
Release 3X-UI / build (s390x) (push) Has been cancelled
Release 3X-UI / Build for Windows (push) Has been cancelled
Release 3X-UI / Publish rolling dev release (push) Has been cancelled
fix(nodes): stop a restarting panel from reporting itself as down
Adding a node fails right after that node's panel restarts. nodes/add
probes the node's /panel/api/server/status first, and that endpoint
returns whatever the @2s ticker last sampled - nil until the first tick
lands, so the master reads a healthy panel as unreachable and rejects it
with "Add node (remote returned success=false: )", an error whose
message is empty because the node answered success with a null obj.

The window is far wider than one tick: GetStatus resolved the public
IPv4/IPv6 addresses inline and held s.mu across every lookup, so a box
with no IPv6 route spent 3s per service - about 15s of nil status after
each restart, and the same stall on a fresh panel's first sample.

- status now answers from CurrentStatus, which samples on demand when
  the ticker has not run yet instead of returning a null obj
- the public-IP lookups run in the background and outside s.mu, so a
  status sample never waits on them
- probe tells "no status yet" apart from a genuine success=false, so the
  master's error says something when it meets an older node
2026-09-18 13:25:24 +03:00
..
amneziawg fix(amneziawg): read the outbound pseudo-protocol id like the core (#6531) 2026-09-15 08:23:18 +03:00
amneziawgnet fix(ports): refuse an inbound on a port an AmneziaWG peer forwards (#6554) 2026-09-15 16:58:21 +03:00
config v3.8.5 2026-09-16 02:08:08 +02:00
crypto/nodetoken
database feat(hosts): add a cipher suites override and accept custom suites 2026-09-16 11:56:20 +02:00
eventbus
logger fix(logger): fix data race in InitLogger 2026-09-16 02:29:42 +02:00
mtproto
pia
sub fix(sub): send stable X-HWID on external subscription fetch (#6567) 2026-09-16 12:16:26 +02:00
tuic
tunnelmonitor
util fix(outbounds): keep subscription tags on their server when reality params rotate 2026-09-15 22:39:59 +02:00
web fix(nodes): stop a restarting panel from reporting itself as down 2026-09-18 13:25:24 +03:00
xray fix(node): drop online clients and sub-nodes of nodes no longer synced 2026-09-15 19:27:38 +02:00