refactor: tighten browser dialer UUID and config error handling

Agent-Logs-Url: https://github.com/XTLS/Xray-core/sessions/d0035ff5-3633-402f-890e-e68c267a65c1

Co-authored-by: RPRX <63339210+RPRX@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-04-26 16:05:57 +00:00
committed by GitHub
parent aeb689284c
commit e06c536ce6
3 changed files with 5 additions and 4 deletions
+1 -1
View File
@@ -20,7 +20,7 @@ func TestStreamConfigBuildRejectsBrowserDialerUnsupportedProtocol(t *testing.T)
}
_, err := config.Build()
if err == nil || !strings.Contains(err.Error(), "sockopt.browserDialer only supports WS or XHTTP") {
if err == nil || !strings.Contains(err.Error(), "sockopt.browserDialer only supports websocket or splithttp") {
t.Fatalf("expected unsupported protocol error, got: %v", err)
}
}
+1 -1
View File
@@ -1975,7 +1975,7 @@ func (c *StreamConfig) Build() (*internet.StreamConfig, error) {
}
if c.SocketSettings != nil && c.SocketSettings.BrowserDialer != "" {
if config.ProtocolName != "websocket" && config.ProtocolName != "splithttp" {
return nil, errors.New("sockopt.browserDialer only supports WS or XHTTP")
return nil, errors.New("sockopt.browserDialer only supports websocket or splithttp")
}
if strings.EqualFold(c.Security, "reality") {
return nil, errors.New("sockopt.browserDialer does not support REALITY")
+3 -2
View File
@@ -106,9 +106,11 @@ func parseBrowserDialerAddress(addr string) (*browserDialerAddress, bool) {
return nil, false
}
parsedUUID, err := uuid.ParseString(id)
if err != nil || !strings.EqualFold(parsedUUID.String(), id) {
id = strings.ToLower(id)
if err != nil || parsedUUID.String() != id {
return nil, false
}
cleanPath = "/" + id
return &browserDialerAddress{
listenAddr: listenAddr,
@@ -256,7 +258,6 @@ func getDialerByAddress(addr string) (*dialerInstance, error) {
delete(server.pageRoutes, dialer.pagePath)
if len(server.pageRoutes) == 0 {
delete(dialerServers, parsed.listenAddr)
server.started = false
}
mu.Unlock()
closeDialerInstance(dialer)