refactor: further simplify browser dialer URL parsing path

Agent-Logs-Url: https://github.com/XTLS/Xray-core/sessions/56a85a3a-5e08-44ce-97d9-d441379c11cc

Co-authored-by: RPRX <63339210+RPRX@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-04-26 18:59:10 +00:00
committed by GitHub
parent 7a9c592221
commit 9421ac0b13
+5 -13
View File
@@ -107,8 +107,7 @@ func ConfigureDialers(urls []string) error {
}
}
for browserDialerURL := range next {
addr := browserDialerURL
if err := EnsureDialerWithAddress(addr); err != nil {
if err := EnsureDialerWithAddress(browserDialerURL); err != nil {
return errors.New("failed to initialize browserDialers listener for url ", browserDialerURL).Base(err)
}
}
@@ -142,19 +141,15 @@ func parseBrowserDialerAddress(addr string) (string, string, bool) {
return "", "", false
}
listenAddr, pathRaw, ok := strings.Cut(addr, "/")
if !ok || listenAddr == "" || pathRaw == "" {
parsedAddr, err := url.Parse("http://" + addr)
if err != nil || parsedAddr.Host == "" || parsedAddr.Path == "" || parsedAddr.RawQuery != "" || parsedAddr.Fragment != "" {
return "", "", false
}
path := "/" + strings.TrimSuffix(pathRaw, "/")
listenAddr := parsedAddr.Host
if _, _, err := net.SplitHostPort(listenAddr); err != nil {
return "", "", false
}
parsedPath, err := url.ParseRequestURI(path)
if err != nil || parsedPath.RawQuery != "" || parsedPath.Fragment != "" {
return "", "", false
}
path := strings.TrimSuffix(parsedAddr.Path, "/")
cleanPath := pathlib.Clean(path)
if cleanPath == "." || cleanPath == "/" || cleanPath != path {
return "", "", false
@@ -407,9 +402,6 @@ func dialTaskWithAddress(addr string, task task) (*websocket.Conn, error) {
if err != nil {
return nil, err
}
if dialer == nil {
return nil, errors.New("browser dialer is not configured for browserDialers url: ", addr)
}
conns := dialer.conns
var conn *websocket.Conn