mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-07-03 10:18:42 +00:00
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:
committed by
GitHub
parent
aeb689284c
commit
e06c536ce6
@@ -20,7 +20,7 @@ func TestStreamConfigBuildRejectsBrowserDialerUnsupportedProtocol(t *testing.T)
|
|||||||
}
|
}
|
||||||
|
|
||||||
_, err := config.Build()
|
_, 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)
|
t.Fatalf("expected unsupported protocol error, got: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1975,7 +1975,7 @@ func (c *StreamConfig) Build() (*internet.StreamConfig, error) {
|
|||||||
}
|
}
|
||||||
if c.SocketSettings != nil && c.SocketSettings.BrowserDialer != "" {
|
if c.SocketSettings != nil && c.SocketSettings.BrowserDialer != "" {
|
||||||
if config.ProtocolName != "websocket" && config.ProtocolName != "splithttp" {
|
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") {
|
if strings.EqualFold(c.Security, "reality") {
|
||||||
return nil, errors.New("sockopt.browserDialer does not support REALITY")
|
return nil, errors.New("sockopt.browserDialer does not support REALITY")
|
||||||
|
|||||||
@@ -106,9 +106,11 @@ func parseBrowserDialerAddress(addr string) (*browserDialerAddress, bool) {
|
|||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
parsedUUID, err := uuid.ParseString(id)
|
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
|
return nil, false
|
||||||
}
|
}
|
||||||
|
cleanPath = "/" + id
|
||||||
|
|
||||||
return &browserDialerAddress{
|
return &browserDialerAddress{
|
||||||
listenAddr: listenAddr,
|
listenAddr: listenAddr,
|
||||||
@@ -256,7 +258,6 @@ func getDialerByAddress(addr string) (*dialerInstance, error) {
|
|||||||
delete(server.pageRoutes, dialer.pagePath)
|
delete(server.pageRoutes, dialer.pagePath)
|
||||||
if len(server.pageRoutes) == 0 {
|
if len(server.pageRoutes) == 0 {
|
||||||
delete(dialerServers, parsed.listenAddr)
|
delete(dialerServers, parsed.listenAddr)
|
||||||
server.started = false
|
|
||||||
}
|
}
|
||||||
mu.Unlock()
|
mu.Unlock()
|
||||||
closeDialerInstance(dialer)
|
closeDialerInstance(dialer)
|
||||||
|
|||||||
Reference in New Issue
Block a user