3x-ui/internal/web/service
Sanaei 2a8c3bc0db fix(clients): stop a stale IP row from blocking a client edit
Saving a client walks every inbound it is attached to and calls
UpdateInboundClient, which re-keys the client's email in inbound_client_ips
to the spelling in the edited settings. The email match is EqualFold, so when
an inbound's settings JSON drifted in case from the client record the panel
issues a case-only rename of the tracking row.

inbound_client_ips.client_email is unique and case-sensitive, and the
IP-limit job keys its rows on whatever casing Xray reports, so both spellings
can already be present. The rename then aborts the whole edit with
"duplicate key value violates unique constraint
uni_inbound_client_ips_client_email" — the client could not be saved at all,
including when only adding an inbound to it.

The caller only renames onto an identity no live client holds, so a row on
the target email is stale IP tracking: delete it before renaming. The blob is
rebuilt by the next scan anyway.
2026-08-02 12:32:45 +02:00
..
email Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
integration Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
outbound feat: Add outbound egress metadata (IP + country) (#5886) 2026-07-12 15:09:52 +02:00
panel fix: make all self-managed file downloads/installs atomic, with real completion status (#5711) 2026-07-02 18:19:33 +02:00
tgbot fix(database): create SQLite backup snapshots online (#6137) 2026-07-29 21:04:55 +02:00
access_log_parse_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
api_scale_postgres_test.go perf(scale): speed up traffic, auto-renew, and node bulk ops at 50k-100k clients 2026-06-20 10:35:46 +02:00
backup_filename_test.go feat(backup): prefix backup filenames with date and time (#5606) 2026-06-27 12:08:20 +02:00
bulk_clients_test.go fix(node): stop client edits from tearing down node inbounds and harden reconcile fingerprints 2026-07-05 02:06:58 +02:00
bulk_traffic_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
client.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
client_add_dedupe_test.go fix(client): stop duplicate client entries accumulating in inbound settings 2026-07-05 21:17:25 +02:00
client_apply_field_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
client_bulk.go fix(node): stop the node sync from deleting clients it never meant to 2026-08-01 15:19:08 +02:00
client_bulk_flow_test.go style: adopt golangci-lint v2 and resolve all findings 2026-06-27 15:42:22 +02:00
client_bulk_reenable_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
client_bulk_reset_reenable_test.go fix(clients): surface bulk-reset auto-enable failures (#5763) 2026-07-08 20:53:42 +02:00
client_create_fanout_test.go perf(clients): take one email snapshot per client fan-out, not one per inbound (#6091) 2026-07-25 00:51:48 +02:00
client_create_reuse_test.go fix(clients): reuse stored credentials when re-adding an existing identity 2026-07-11 22:48:51 +02:00
client_crud.go fix(node): stop the node sync from deleting clients it never meant to 2026-08-01 15:19:08 +02:00
client_delete_continue_test.go fix(clients): finish deleting from every inbound when one fails 2026-07-11 22:48:57 +02:00
client_delete_node_baseline_test.go fix(client): clean node_client_traffics rows when deleting a client 2026-07-07 15:05:22 +02:00
client_delete_node_full_test.go fix(node): fully delete clients on nodes instead of only detaching them 2026-07-05 20:28:26 +02:00
client_delete_tombstone_test.go fix(node): stop the node sync from deleting clients it never meant to 2026-08-01 15:19:08 +02:00
client_effective_flow_test.go fix(flow): restore XTLS Vision when an inbound becomes flow-eligible (#5520) 2026-06-24 13:02:42 +02:00
client_email_validation_test.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
client_external_link.go feat(sub): per-client external links and remote subscriptions 2026-06-14 20:57:14 +02:00
client_flow_isolation_test.go fix: enable XTLS vision flow for VLESS+XHTTP+vlessenc in UI and share links (#5157) (#5185) 2026-06-11 12:04:02 +02:00
client_group_node_sync_test.go fix(client): clear group when removed in the single-client editor 2026-06-17 15:55:56 +02:00
client_group_reset_test.go fix(groups): keep group traffic totals stable across client resets and deletes 2026-07-02 09:17:47 +02:00
client_groups.go refactor: use the built-in max/min to simplify the code (#5751) 2026-07-05 01:58:18 +03:00
client_inbound_apply.go fix(xray): stop the runtime user API from crashing xray-core 2026-07-28 13:52:10 +02:00
client_link.go fix(node): stop the node sync from deleting clients it never meant to 2026-08-01 15:19:08 +02:00
client_locks.go fix(node): stop the node sync from deleting clients it never meant to 2026-08-01 15:19:08 +02:00
client_locks_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
client_lookup.go feat(api): add GET endpoint to look up clients by Telegram ID (#5945) 2026-07-28 22:38:44 +02:00
client_lookup_test.go feat(api): add GET endpoint to look up clients by Telegram ID (#5945) 2026-07-28 22:38:44 +02:00
client_paging.go perf(clients): make the clients page scale to large panels 2026-07-30 02:49:32 +02:00
client_paging_test.go perf(clients): make the clients page scale to large panels 2026-07-30 02:49:32 +02:00
client_portable.go fix(groups): keep group traffic totals stable across client resets and deletes 2026-07-02 09:17:47 +02:00
client_stat_reuse_test.go fix: refresh stale client_traffics row when an inbound-deleted client's email is reused (#6003) 2026-07-21 15:57:55 +02:00
client_sync_mtproto_test.go feat(mtproto): per-client ad-tags, management-API auth, and record secret sync 2026-07-07 12:00:43 +02:00
client_sync_multiprotocol_test.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
client_sync_orphan.go fix(node): stop the node sync from deleting clients it never meant to 2026-08-01 15:19:08 +02:00
client_sync_orphan_test.go fix(node): stop the node sync from deleting clients it never meant to 2026-08-01 15:19:08 +02:00
client_test.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
client_traffic.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
client_update_enable_test.go fix(clients): re-enable depleted clients on API renewal (#5619) 2026-06-29 13:39:03 +02:00
client_update_no_inbound_test.go fix(clients): persist all editable fields for clients with no inbound (#6053) 2026-07-21 15:49:43 +02:00
client_update_rename_test.go fix(clients): stop a stale IP row from blocking a client edit 2026-08-02 12:32:45 +02:00
client_wireguard.go fix(wireguard): widen the client address pool past a full /24 (#6089) 2026-07-24 22:21:18 +02:00
client_wireguard_crud_test.go fix(node): fully delete clients on nodes instead of only detaching them 2026-07-05 20:28:26 +02:00
client_wireguard_test.go fix(wireguard): widen the client address pool past a full /24 (#6089) 2026-07-24 22:21:18 +02:00
config.json Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
del_shared_email_runtime_test.go fix(node): fully delete clients on nodes instead of only detaching them 2026-07-05 20:28:26 +02:00
fallback.go style: adopt golangci-lint v2 and resolve all findings 2026-06-27 15:42:22 +02:00
finalmask_rand_packet_test.go fix(xray): reject configs xray-core refuses, and check the fixtures against it 2026-07-28 14:43:55 +02:00
global_traffic_test.go style: drop the line comments added with the triage fixes 2026-07-27 14:37:57 +02:00
golden_fixtures_xray_test.go chore: refresh dependencies and modernize Go test idioms 2026-07-30 03:14:22 +02:00
host.go fix(hosts): assign group ids to imported hosts and repair empty ones 2026-07-23 18:52:42 +02:00
host_test.go feat(hosts): bulk-add multiple hosts to multiple inbounds (#5677) 2026-07-08 23:35:20 +02:00
inbound.go fix(node): stop the node sync from deleting clients it never meant to 2026-08-01 15:19:08 +02:00
inbound_autorenew_shadowsocks_test.go fix(xray): stop the runtime user API from crashing xray-core 2026-07-28 13:52:10 +02:00
inbound_autorenew_test.go perf(scale): speed up traffic, auto-renew, and node bulk ops at 50k-100k clients 2026-06-20 10:35:46 +02:00
inbound_client_ips.go fix(clients): stop a stale IP row from blocking a client edit 2026-08-02 12:32:45 +02:00
inbound_client_ips_merge_test.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
inbound_client_move_test.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
inbound_client_traffic_test.go fix(traffic): persist delayed-start expiry only for converted clients 2026-07-02 16:24:18 +02:00
inbound_clients.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
inbound_disable.go fix(xray): synchronize lifecycle state (#6138) 2026-07-29 21:00:29 +02:00
inbound_durable_postgres_test.go fix(inbounds): apply runtime changes after the DB commit (#5768) 2026-07-08 22:12:28 +02:00
inbound_fallback_runtime_test.go fix(node): stop the node sync from deleting clients it never meant to 2026-08-01 15:19:08 +02:00
inbound_finalmask_reality_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
inbound_finalmask_xmc_test.go feat(xray): update xray-core to v26.7.28 and adapt panel 2026-07-28 13:14:06 +02:00
inbound_flow_restore.go fix(flow): restore XTLS Vision when an inbound becomes flow-eligible (#5520) 2026-06-24 13:02:42 +02:00
inbound_flow_restore_test.go fix(flow): restore XTLS Vision when an inbound becomes flow-eligible (#5520) 2026-06-24 13:02:42 +02:00
inbound_import_external_proxy_test.go fix(inbound): convert legacy externalProxy to hosts on import 2026-06-27 13:50:06 +02:00
inbound_import_shared_clients_test.go fix: refresh stale client_traffics row when an inbound-deleted client's email is reused (#6003) 2026-07-21 15:57:55 +02:00
inbound_migration.go fix: stop deleting client_traffics for detached-but-alive clients (#6110) 2026-07-28 22:14:01 +02:00
inbound_migration_test.go fix: stop deleting client_traffics for detached-but-alive clients (#6110) 2026-07-28 22:14:01 +02:00
inbound_mtproto.go fix(node): stop the node sync from deleting clients it never meant to 2026-08-01 15:19:08 +02:00
inbound_mtproto_apply_test.go fix(mtproto): stop dropping connections on client/inbound edits; add live updates + ad-tag (#5838) 2026-07-07 01:13:24 +02:00
inbound_mtproto_client_test.go fix(mtproto): stop dropping connections on client/inbound edits; add live updates + ad-tag (#5838) 2026-07-07 01:13:24 +02:00
inbound_mtproto_desired_test.go fix(node): stop the node sync from deleting clients it never meant to 2026-08-01 15:19:08 +02:00
inbound_mtproto_test.go fix(mtproto): stop persisting a vestigial inbound-level secret 2026-07-06 17:55:57 +02:00
inbound_mtproto_txfail_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
inbound_node.go fix(node): stop the node sync from deleting clients it never meant to 2026-08-01 15:19:08 +02:00
inbound_node_ips.go fix(node): stop Postgres deadlocks and deleted-client resurrection in node sync 2026-07-02 13:37:06 +02:00
inbound_node_ips_test.go fix(nodes): cloned-node attribution, node-hosted client display (online/speed/counts), and sync robustness (#5488) 2026-06-22 20:20:55 +02:00
inbound_node_reconcile_test.go fix(node): never sweep a node's inbounds before their first adoption 2026-07-11 22:48:57 +02:00
inbound_options_node_address_test.go fix(panel): use the hosting node address for WireGuard client configs (#5679) 2026-07-03 01:12:32 +02:00
inbound_protocol.go fix: enable XTLS vision flow for VLESS+XHTTP+vlessenc in UI and share links (#5157) (#5185) 2026-06-11 12:04:02 +02:00
inbound_protocol_test.go fix: enable XTLS vision flow for VLESS+XHTTP+vlessenc in UI and share links (#5157) (#5185) 2026-06-11 12:04:02 +02:00
inbound_settings_clients.go fix(clients): parse only settings.clients across protocols (#5855) 2026-07-08 20:31:00 +02:00
inbound_settings_clients_test.go fix(clients): parse only settings.clients across protocols (#5855) 2026-07-08 20:31:00 +02:00
inbound_sub_sort_test.go feat(sub): per-inbound sort order for subscription links 2026-06-12 12:03:22 +02:00
inbound_sublink.go feat(inbounds): apply remark template to Export all inbound links 2026-06-27 11:22:45 +02:00
inbound_tgbot_lookup_test.go fix(tgbot): find clients by tgId regardless of settings JSON formatting 2026-07-05 20:18:59 +02:00
inbound_traffic.go fix(xray): synchronize lifecycle state (#6138) 2026-07-29 21:00:29 +02:00
inbound_traffic_global.go fix(node): stop a departed master's frozen traffic from disabling clients (#6113) 2026-07-27 14:21:56 +02:00
inbound_traffic_reset_test.go inbounds: allow custom monthly traffic reset days (#6071) 2026-07-28 23:27:09 +02:00
inbound_update_tag_test.go fix(inbound): scope port-conflict check to the stored node on update (#5833) 2026-07-09 01:18:30 +02:00
inbound_util.go feat(sub): per-inbound sort order for subscription links 2026-06-12 12:03:22 +02:00
key_gen_parse_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
metric_history.go chore: refresh dependencies, fix Linux tool tasks, modernize Go idioms 2026-07-25 16:08:09 +02:00
metric_history_test.go chore: bump deps and modernize test loops 2026-06-26 00:10:30 +02:00
mtproto_fake_test.go fix(mtproto): stop dropping connections on client/inbound edits; add live updates + ad-tag (#5838) 2026-07-07 01:13:24 +02:00
node.go fix(node): stop the node sync from deleting clients it never meant to 2026-08-01 15:19:08 +02:00
node_bulk_dispatch_test.go fix(inbounds): apply runtime changes after the DB commit (#5768) 2026-07-08 22:12:28 +02:00
node_client_breakdown_test.go fix(inbounds): apply runtime changes after the DB commit (#5768) 2026-07-08 22:12:28 +02:00
node_client_expiry_sync_test.go fix(node): show the activated first-use deadline on the Clients page 2026-07-02 09:36:07 +02:00
node_client_renew_sync_test.go fix(node): start a fresh quota window when a node auto-renews a client 2026-07-07 15:05:23 +02:00
node_client_traffic_sum_test.go fix(node): stop Postgres deadlocks and deleted-client resurrection in node sync 2026-07-02 13:37:06 +02:00
node_contract.go fix(nodes): make node API tokens write-only (#5613) 2026-07-23 15:35:11 +02:00
node_credentials_writeonly_test.go fix(nodes): make node API tokens write-only (#5613) 2026-07-23 15:35:11 +02:00
node_delete_orphan_test.go fix(nodes): block node delete while inbounds are still attached (#5394) 2026-06-20 01:09:53 +02:00
node_dirty_test.go fix(node): fully delete clients on nodes instead of only detaching them 2026-07-05 20:28:26 +02:00
node_host_adopt_test.go fix(node): adopt a node inbound's host overrides into the master 2026-07-11 23:17:57 +02:00
node_mtls.go feat(node): node hardening — mTLS, hashed+zstd reconcile transport, per-node net metrics (#5382) 2026-06-16 12:19:33 +02:00
node_mtls_test.go style: adopt golangci-lint v2 and resolve all findings 2026-06-27 15:42:22 +02:00
node_netmetrics_test.go feat(node): node hardening — mTLS, hashed+zstd reconcile transport, per-node net metrics (#5382) 2026-06-16 12:19:33 +02:00
node_origin_guid_test.go fix(nodes): cloned-node attribution, node-hosted client display (online/speed/counts), and sync robustness (#5488) 2026-06-22 20:20:55 +02:00
node_push_payload_test.go fix(node): stop the node sync from deleting clients it never meant to 2026-08-01 15:19:08 +02:00
node_shared_guid_test.go fix(nodes): cloned-node attribution, node-hosted client display (online/speed/counts), and sync robustness (#5488) 2026-06-22 20:20:55 +02:00
node_sweep_guard_test.go fix(node): stop the node sync from deleting clients it never meant to 2026-08-01 15:19:08 +02:00
node_tag_sync_test.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
node_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
node_tree.go fix(nodes): make node API tokens write-only (#5613) 2026-07-23 15:35:11 +02:00
node_tree_test.go fix(inbounds): apply runtime changes after the DB commit (#5768) 2026-07-08 22:12:28 +02:00
outbound_subscription.go fix(xray): synchronize lifecycle state (#6138) 2026-07-29 21:00:29 +02:00
outbound_subscription_ssrf_test.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
outbound_subscription_test.go fix(subscription): bound outbound response body (#5493) 2026-06-23 10:48:01 +02:00
port_conflict.go fix(inbounds): flag conflicts with the reserved Xray API port (#5304) 2026-06-15 17:21:06 +02:00
port_conflict_test.go style: adopt golangci-lint v2 and resolve all findings 2026-06-27 15:42:22 +02:00
reality_scan.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
reality_scan_test.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
reset_writer_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
scale_helpers_test.go refactor: modernize Go with strings.SplitSeq and maps.Copy 2026-07-08 22:10:54 +02:00
server.go fix(database): create SQLite backup snapshots online (#6137) 2026-07-29 21:04:55 +02:00
server_import_sniff_test.go feat(server): sniff sqlite panel restore uploads and keep the fallback on failure 2026-07-12 20:14:22 +02:00
server_import_stage_test.go feat(server): sniff sqlite panel restore uploads and keep the fallback on failure 2026-07-12 20:14:22 +02:00
server_pg_restore_test.go feat(db): add pgclient command to install or upgrade PostgreSQL client tools 2026-07-06 09:24:18 +02:00
server_vlessenc_test.go feat(web): vless encryption new modes (#5517) 2026-06-24 21:22:42 +02:00
server_xray_checksum_test.go fix(xray): verify the release archive checksum before installing (#5396) 2026-06-20 00:37:35 +02:00
setting.go fix(sub): honor trustedProxyCIDRs before forwarded URLs (#6135) 2026-07-29 21:01:59 +02:00
setting_clash_test.go feat(sub): auto-detect subscription format by User-Agent (Updated) (#5826) 2026-07-14 13:01:40 +02:00
setting_factory_defaults_test.go feat(ui): tag settings that sit at their shipped default value (#6128) 2026-07-29 08:03:21 +02:00
setting_mtls.go feat(node): node hardening — mTLS, hashed+zstd reconcile transport, per-node net metrics (#5382) 2026-06-16 12:19:33 +02:00
setting_mtls_test.go feat(node): node hardening — mTLS, hashed+zstd reconcile transport, per-node net metrics (#5382) 2026-06-16 12:19:33 +02:00
setting_security_test.go feat(settings): let users clear stored secrets from the UI 2026-07-02 13:57:34 +02:00
setting_sub_identity_test.go feat(sub): allow identity tokens on every subscription link (#5935) 2026-07-28 22:12:52 +02:00
shadowsocks_client_key_test.go fix(inbound): regenerate SS-2022 client PSKs on method key-size change 2026-06-17 14:11:35 +02:00
stream_network_alias_test.go feat(xray): update xray-core to v26.7.11 and adapt panel 2026-07-12 00:30:47 +02:00
sub_uri_base_test.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
sync_scale_postgres_test.go fix(node): fully delete clients on nodes instead of only detaching them 2026-07-05 20:28:26 +02:00
traffic_commit_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
traffic_poll_scale_test.go test(scale): cover traffic poll, ws payloads, ip-limit job, sub and xray config at 500k 2026-07-02 16:12:46 +02:00
traffic_writer.go fix(service): serialize client/inbound writes to prevent Postgres deadlock 2026-06-17 15:55:47 +02:00
traffic_writer_test.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
url_safety.go refactor: focused service files, leaf subpackages, and an internal/ layout (#5167) 2026-06-10 15:19:22 +02:00
ws_payload_scale_test.go test(scale): cover traffic poll, ws payloads, ip-limit job, sub and xray config at 500k 2026-07-02 16:12:46 +02:00
xray.go fix(xray): synchronize lifecycle state (#6138) 2026-07-29 21:00:29 +02:00
xray_config_clients_test.go style: drop the line comments added with the triage fixes 2026-07-27 14:37:57 +02:00
xray_config_inject_test.go fix(xray): validate generated egress targets (#5989) 2026-07-21 15:57:34 +02:00
xray_config_scale_test.go test(scale): cover traffic poll, ws payloads, ip-limit job, sub and xray config at 500k 2026-07-02 16:12:46 +02:00
xray_lifecycle_test.go fix(xray): synchronize lifecycle state (#6138) 2026-07-29 21:00:29 +02:00
xray_metrics.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
xray_metrics_test.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
xray_restart_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
xray_setting.go fix(xray): synchronize lifecycle state (#6138) 2026-07-29 21:00:29 +02:00
xray_setting_dns_routing.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
xray_setting_dns_routing_test.go Bug-label issue sweep: 16 fixes (#6083) 2026-07-23 15:34:42 +02:00
xray_setting_routing_sync.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
xray_setting_routing_sync_test.go Repo-wide self-correcting audit: 54 verified bug fixes (#5970) 2026-07-17 00:33:06 +02:00
xray_setting_test.go fix: gate embedded unencrypted-outbound rejection on running Xray core version (#6028) 2026-07-21 15:51:46 +02:00
xray_strip_rules_test.go Add Enable/Disable Toggle for Xray Routing Rules (#5296) 2026-06-15 00:43:49 +02:00
xray_wireguard_config_test.go feat(wireguard): multi-client support 2026-06-28 00:44:38 +02:00
xray_xhttp_session_test.go feat(xhttp): support sessionID* rename + sessionIDTable/Length (xray v26.6.22) (#5506) 2026-06-23 17:38:16 +02:00