mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-08-30 15:07:14 +00:00
fix(xray): do not revive a manually stopped Xray on a background restart
RestartXray cleared isManuallyStopped unconditionally at its top, so the @30s pending-config cron (and warp/ldap/outbound reconcile jobs) that call RestartXray(false) resurrected an Xray the admin had deliberately stopped — unlike the crash-detector, which honors the manual-stop flag. Skip a non-forced restart while the stop flag is set; only an explicit forced restart clears it.
This commit is contained in:
@@ -986,6 +986,12 @@ func (s *XrayService) RestartXray(isForce bool) error {
|
||||
lock.Lock()
|
||||
defer lock.Unlock()
|
||||
logger.Debug("restart Xray, force:", isForce)
|
||||
// A background reconcile (a pending config-change flag, warp/ldap/outbound
|
||||
// jobs) must not revive an Xray the admin deliberately stopped; only an
|
||||
// explicit forced restart clears the manual-stop state.
|
||||
if !isForce && isManuallyStopped.Load() {
|
||||
return nil
|
||||
}
|
||||
isManuallyStopped.Store(false)
|
||||
|
||||
xrayConfig, err := s.GetXrayConfig()
|
||||
|
||||
Reference in New Issue
Block a user