Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/MHSanaei/3x-ui.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpwnnex <pwnnex@proton.me>2026-04-21 20:05:53 +0300
committerGitHub <noreply@github.com>2026-04-21 20:05:53 +0300
commit975d6d1bad4899f1123243c8b8c0392e17859295 (patch)
tree0d69d9ba555d053577cef421b7fe12f62b3dc9cd /web/assets
parentab7a7f7c6b4f6962bb792bc929577189bde01e75 (diff)
Fix: hysteria link gen crashes when echConfigList is a string (#4064)
`genHysteriaLink` was calling `.join(',')` on `this.stream.tls.settings.echConfigList`, but that field is bound to an `<a-input>` (single-line string) in `tls_settings.html` and defaults to `''` in `TlsStreamSettings.Settings`. Calling `.join()` on a string throws `TypeError: echConfigList.join is not a function`, which breaks the Info / QR buttons for every hysteria / hysteria2 inbound. All three sibling link generators (`genVmessLink`, `genVlessLink`, `genTrojanLink`) already pass the value directly: params.set("ech", this.stream.tls.settings.echConfigList) `URLSearchParams.set` will stringify arrays with `,` on its own, so the same one-liner works for both string and array inputs. Align `genHysteriaLink` with the other three. Fixes #4063 Co-authored-by: pwnnex <eternxles@gmail.com>
Diffstat (limited to 'web/assets')
-rw-r--r--web/assets/js/model/inbound.js2
1 files changed, 1 insertions, 1 deletions
diff --git a/web/assets/js/model/inbound.js b/web/assets/js/model/inbound.js
index ed72f8f6..d0060fb4 100644
--- a/web/assets/js/model/inbound.js
+++ b/web/assets/js/model/inbound.js
@@ -1827,7 +1827,7 @@ class Inbound extends XrayCommonClass {
if (this.stream.tls.settings.fingerprint?.length > 0) params.set("fp", this.stream.tls.settings.fingerprint);
if (this.stream.tls.alpn?.length > 0) params.set("alpn", this.stream.tls.alpn);
if (this.stream.tls.settings.allowInsecure) params.set("insecure", "1");
- if (this.stream.tls.settings.echConfigList?.length > 0) params.set("ech", this.stream.tls.settings.echConfigList.join(','));
+ if (this.stream.tls.settings.echConfigList?.length > 0) params.set("ech", this.stream.tls.settings.echConfigList);
if (this.stream.tls.sni?.length > 0) params.set("sni", this.stream.tls.sni);
const udpMasks = this.stream?.finalmask?.udp;