From 9421ac0b13768e4931f23d66f568f1f8a09eeb7a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 26 Apr 2026 18:59:10 +0000 Subject: [PATCH] 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> --- transport/internet/browser_dialer/dialer.go | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/transport/internet/browser_dialer/dialer.go b/transport/internet/browser_dialer/dialer.go index ae55b1e7..a006ad47 100644 --- a/transport/internet/browser_dialer/dialer.go +++ b/transport/internet/browser_dialer/dialer.go @@ -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