From c4233173058f07aebbc50c221a64a027dad75b79 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 27 Apr 2026 11:50:15 +0000 Subject: [PATCH] fix: split browser dialer configure and listener startup phases Agent-Logs-Url: https://github.com/XTLS/Xray-core/sessions/bd037532-6fba-48d4-bf72-77fbb3bf8fc4 Co-authored-by: RPRX <63339210+RPRX@users.noreply.github.com> --- infra/conf/xray.go | 3 +++ transport/internet/browser_dialer/manager.go | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/infra/conf/xray.go b/infra/conf/xray.go index cb9367de..86ba0517 100644 --- a/infra/conf/xray.go +++ b/infra/conf/xray.go @@ -632,6 +632,9 @@ func (c *Config) Build() (*core.Config, error) { if err := browser_dialer.ConfigureCollectedDialerProxyURLs(); err != nil { return nil, errors.New("failed to configure browser dialer").Base(err) } + if err := browser_dialer.StartCollectedDialerProxyURLs(); err != nil { + return nil, errors.New("failed to start browser dialer listeners").Base(err) + } return config, nil } diff --git a/transport/internet/browser_dialer/manager.go b/transport/internet/browser_dialer/manager.go index 427c70b7..0519cabb 100644 --- a/transport/internet/browser_dialer/manager.go +++ b/transport/internet/browser_dialer/manager.go @@ -104,6 +104,13 @@ func ConfigureCollectedDialerProxyURLs() error { return errors.New("failed to initialize browser dialer listener for url ", browserDialerURL).Base(err) } } + return nil +} + +func StartCollectedDialerProxyURLs() error { + if initialized { + return errors.New("browser dialer does not support dynamic add/remove; restart is required after changing configuration") + } for listenAddr, server := range serversByListenAddr { if err := server.start(); err != nil { return errors.New("failed to start browser dialer listener on ", listenAddr).Base(err)