mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-05-14 10:00:34 +00:00
Handle browser dialer cleanup errors on instance lifecycle
Agent-Logs-Url: https://github.com/XTLS/Xray-core/sessions/b8c640ab-f93c-4609-8e34-a8e14e2be9e7 Co-authored-by: RPRX <63339210+RPRX@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
8043924af5
commit
41bc47b1ec
+3
-1
@@ -396,7 +396,9 @@ func (s *Instance) Start() error {
|
|||||||
for _, f := range s.features {
|
for _, f := range s.features {
|
||||||
if err := f.Start(); err != nil {
|
if err := f.Start(); err != nil {
|
||||||
s.running = false
|
s.running = false
|
||||||
_ = browser_dialer.StopCollectedDialerProxyURLs()
|
if stopErr := browser_dialer.StopCollectedDialerProxyURLs(); stopErr != nil {
|
||||||
|
return errors.New("failed to clean up browser dialer after startup failure").Base(errors.New(serial.Concat(err, "; ", stopErr)))
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import (
|
|||||||
"github.com/gorilla/websocket"
|
"github.com/gorilla/websocket"
|
||||||
"github.com/xtls/xray-core/common/errors"
|
"github.com/xtls/xray-core/common/errors"
|
||||||
"github.com/xtls/xray-core/common/platform"
|
"github.com/xtls/xray-core/common/platform"
|
||||||
|
"github.com/xtls/xray-core/common/serial"
|
||||||
"github.com/xtls/xray-core/common/uuid"
|
"github.com/xtls/xray-core/common/uuid"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -124,17 +125,20 @@ func StartCollectedDialerProxyURLs() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func StopCollectedDialerProxyURLs() error {
|
func StopCollectedDialerProxyURLs() error {
|
||||||
var stopErr error
|
var stopErrs []string
|
||||||
for listenAddr, server := range serversByListenAddr {
|
for listenAddr, server := range serversByListenAddr {
|
||||||
if err := server.stop(); err != nil && stopErr == nil {
|
if err := server.stop(); err != nil {
|
||||||
stopErr = errors.New("failed to stop browser dialer listener on ", listenAddr).Base(err)
|
stopErrs = append(stopErrs, serial.Concat("failed to stop browser dialer listener on ", listenAddr, ": ", err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
dialersByAddress = map[string]*dialerInstance{}
|
dialersByAddress = map[string]*dialerInstance{}
|
||||||
serversByListenAddr = map[string]*dialerServer{}
|
serversByListenAddr = map[string]*dialerServer{}
|
||||||
pendingURLs = nil
|
pendingURLs = nil
|
||||||
initialized = false
|
initialized = false
|
||||||
return stopErr
|
if len(stopErrs) > 0 {
|
||||||
|
return errors.New(strings.Join(stopErrs, "; "))
|
||||||
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type dialerInstance struct {
|
type dialerInstance struct {
|
||||||
|
|||||||
Reference in New Issue
Block a user