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
path: root/sub
diff options
context:
space:
mode:
authorNikita Nemirovsky <68753404+nnemirovsky@users.noreply.github.com>2026-04-19 22:12:11 +0300
committerGitHub <noreply@github.com>2026-04-19 22:12:11 +0300
commit96b568b8389fd5a3ce228d5fb82ec9742d145b15 (patch)
tree8f27d269e3eadba18efd189fff8579e6a6c906ee /sub
parentfec714a2431c482024a0952982fa36f38935e7ed (diff)
fix(sub): use safe type assertion for xhttp mode field (#3990)
Unsafe type assertion `xhttp["mode"].(string)` panics when mode is nil (e.g., when xhttpSettings only contains path without mode). The panic is caught by Gin's recovery middleware and returned as HTTP 500. Use comma-ok pattern matching the fix already applied to gRPC's authority field in 21d98813. Fixes #3987
Diffstat (limited to 'sub')
-rw-r--r--sub/subService.go8
1 files changed, 4 insertions, 4 deletions
diff --git a/sub/subService.go b/sub/subService.go
index 818f193b..a0508ddc 100644
--- a/sub/subService.go
+++ b/sub/subService.go
@@ -247,7 +247,7 @@ func (s *SubService) genVmessLink(inbound *model.Inbound, email string) string {
headers, _ := xhttp["headers"].(map[string]any)
obj["host"] = searchHost(headers)
}
- obj["mode"] = xhttp["mode"].(string)
+ obj["mode"], _ = xhttp["mode"].(string)
}
security, _ := stream["security"].(string)
obj["tls"] = security
@@ -405,7 +405,7 @@ func (s *SubService) genVlessLink(inbound *model.Inbound, email string) string {
headers, _ := xhttp["headers"].(map[string]any)
params["host"] = searchHost(headers)
}
- params["mode"] = xhttp["mode"].(string)
+ params["mode"], _ = xhttp["mode"].(string)
}
security, _ := stream["security"].(string)
if security == "tls" {
@@ -601,7 +601,7 @@ func (s *SubService) genTrojanLink(inbound *model.Inbound, email string) string
headers, _ := xhttp["headers"].(map[string]any)
params["host"] = searchHost(headers)
}
- params["mode"] = xhttp["mode"].(string)
+ params["mode"], _ = xhttp["mode"].(string)
}
security, _ := stream["security"].(string)
if security == "tls" {
@@ -800,7 +800,7 @@ func (s *SubService) genShadowsocksLink(inbound *model.Inbound, email string) st
headers, _ := xhttp["headers"].(map[string]any)
params["host"] = searchHost(headers)
}
- params["mode"] = xhttp["mode"].(string)
+ params["mode"], _ = xhttp["mode"].(string)
}
security, _ := stream["security"].(string)