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 { for browserDialerURL := range next {
addr := browserDialerURL if err := EnsureDialerWithAddress(browserDialerURL); err != nil {
if err := EnsureDialerWithAddress(addr); err != nil {
return errors.New("failed to initialize browserDialers listener for url ", browserDialerURL).Base(err) 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 return "", "", false
} }
listenAddr, pathRaw, ok := strings.Cut(addr, "/") parsedAddr, err := url.Parse("http://" + addr)
if !ok || listenAddr == "" || pathRaw == "" { if err != nil || parsedAddr.Host == "" || parsedAddr.Path == "" || parsedAddr.RawQuery != "" || parsedAddr.Fragment != "" {
return "", "", false return "", "", false
} }
listenAddr := parsedAddr.Host
path := "/" + strings.TrimSuffix(pathRaw, "/")
if _, _, err := net.SplitHostPort(listenAddr); err != nil { if _, _, err := net.SplitHostPort(listenAddr); err != nil {
return "", "", false return "", "", false
} }
parsedPath, err := url.ParseRequestURI(path) path := strings.TrimSuffix(parsedAddr.Path, "/")
if err != nil || parsedPath.RawQuery != "" || parsedPath.Fragment != "" {
return "", "", false
}
cleanPath := pathlib.Clean(path) cleanPath := pathlib.Clean(path)
if cleanPath == "." || cleanPath == "/" || cleanPath != path { if cleanPath == "." || cleanPath == "/" || cleanPath != path {
return "", "", false return "", "", false
@@ -407,9 +402,6 @@ func dialTaskWithAddress(addr string, task task) (*websocket.Conn, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
if dialer == nil {
return nil, errors.New("browser dialer is not configured for browserDialers url: ", addr)
}
conns := dialer.conns conns := dialer.conns
var conn *websocket.Conn var conn *websocket.Conn