mirror of
https://github.com/XTLS/Xray-core.git
synced 2026-05-08 14:13:22 +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
@@ -396,7 +396,9 @@ func (s *Instance) Start() error {
|
||||
for _, f := range s.features {
|
||||
if err := f.Start(); err != nil {
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
"github.com/gorilla/websocket"
|
||||
"github.com/xtls/xray-core/common/errors"
|
||||
"github.com/xtls/xray-core/common/platform"
|
||||
"github.com/xtls/xray-core/common/serial"
|
||||
"github.com/xtls/xray-core/common/uuid"
|
||||
)
|
||||
|
||||
@@ -124,17 +125,20 @@ func StartCollectedDialerProxyURLs() error {
|
||||
}
|
||||
|
||||
func StopCollectedDialerProxyURLs() error {
|
||||
var stopErr error
|
||||
var stopErrs []string
|
||||
for listenAddr, server := range serversByListenAddr {
|
||||
if err := server.stop(); err != nil && stopErr == nil {
|
||||
stopErr = errors.New("failed to stop browser dialer listener on ", listenAddr).Base(err)
|
||||
if err := server.stop(); err != nil {
|
||||
stopErrs = append(stopErrs, serial.Concat("failed to stop browser dialer listener on ", listenAddr, ": ", err))
|
||||
}
|
||||
}
|
||||
dialersByAddress = map[string]*dialerInstance{}
|
||||
serversByListenAddr = map[string]*dialerServer{}
|
||||
pendingURLs = nil
|
||||
initialized = false
|
||||
return stopErr
|
||||
if len(stopErrs) > 0 {
|
||||
return errors.New(strings.Join(stopErrs, "; "))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type dialerInstance struct {
|
||||
|
||||
Reference in New Issue
Block a user