refactor: remove browser dialer env reload path and refresh proto metadata

Agent-Logs-Url: https://github.com/XTLS/Xray-core/sessions/e3502f01-e171-4e6f-9ae7-dc29b6682951

Co-authored-by: RPRX <63339210+RPRX@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot]
2026-04-26 07:44:58 +00:00
committed by GitHub
parent 2fdfa727b4
commit 27b8b29ef8
2 changed files with 14 additions and 47 deletions

View File

@@ -7,13 +7,13 @@ import (
"encoding/base64"
"encoding/json"
stderrors "errors"
"net"
"net/http"
"sync"
"time"
"github.com/gorilla/websocket"
"github.com/xtls/xray-core/common/errors"
"github.com/xtls/xray-core/common/platform"
"github.com/xtls/xray-core/common/uuid"
)
@@ -27,8 +27,6 @@ type task struct {
StreamResponse bool `json:"streamResponse"`
}
var conns chan *websocket.Conn
var server *http.Server
var sockoptDialers map[string]*dialerInstance
var mu sync.Mutex
@@ -41,32 +39,12 @@ var upgrader = &websocket.Upgrader{
},
}
// Used by external projects when using xray as a go module
func Reload() {
addr := getEnvAddress()
mu.Lock()
closeDialerInstance(&dialerInstance{conns: conns, server: server})
conns = nil
server = nil
var dialer *dialerInstance
if addr != "" {
dialer = newDialerInstance(addr)
conns = dialer.conns
server = dialer.server
}
mu.Unlock()
startDialerInstance(dialer)
}
func HasBrowserDialer() bool {
return conns != nil
}
func HasBrowserDialerWithAddress(addr string) bool {
return connsByAddress(addr) != nil
if addr == "" {
return false
}
_, _, err := net.SplitHostPort(addr)
return err == nil
}
type webSocketExtra struct {
@@ -78,10 +56,6 @@ type dialerInstance struct {
server *http.Server
}
func getEnvAddress() string {
return platform.NewEnvFlag(platform.BrowserDialerAddress).GetValue(func() string { return "" })
}
func newDialerInstance(addr string) *dialerInstance {
token := uuid.New()
csrfToken := token.String()
@@ -275,7 +249,7 @@ func dialTaskWithAddress(addr string, task task) (*websocket.Conn, error) {
if addr != "" {
return nil, errors.New("browser dialer is not configured for sockopt.browserDialer: ", addr)
}
return nil, errors.New("browser dialer is not configured; set sockopt.browserDialer or env ", platform.BrowserDialerAddress)
return nil, errors.New("browser dialer is not configured; set sockopt.browserDialer")
}
var conn *websocket.Conn
@@ -308,19 +282,12 @@ func CheckOK(conn *websocket.Conn) error {
}
func connsByAddress(addr string) chan *websocket.Conn {
if addr != "" {
dialer := getDialerByAddress(addr)
if dialer == nil {
return nil
}
return dialer.conns
if addr == "" {
return nil
}
if HasBrowserDialer() {
return conns
dialer := getDialerByAddress(addr)
if dialer == nil {
return nil
}
return nil
}
func init() {
Reload()
return dialer.conns
}

View File

@@ -1,7 +1,7 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.36.11
// protoc v3.21.12
// protoc v6.33.5
// source: transport/internet/config.proto
package internet