diff options
| author | pwnnex <pwnnex@proton.me> | 2026-04-21 20:05:53 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-21 20:05:53 +0300 |
| commit | 975d6d1bad4899f1123243c8b8c0392e17859295 (patch) | |
| tree | 0d69d9ba555d053577cef421b7fe12f62b3dc9cd /web | |
| parent | ab7a7f7c6b4f6962bb792bc929577189bde01e75 (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')
| -rw-r--r-- | web/assets/js/model/inbound.js | 2 |
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; |
