mirror of
https://github.com/safing/portmaster
synced 2025-09-01 18:19:12 +00:00
Fix restarting flag for direct restarts
This commit is contained in:
parent
003f99e392
commit
8c57baa12a
3 changed files with 11 additions and 6 deletions
|
@ -68,8 +68,6 @@ func shutdown(_ *api.Request) (msg string, err error) {
|
|||
func restart(_ *api.Request) (msg string, err error) {
|
||||
log.Info("core: user requested restart via action")
|
||||
|
||||
// Trigger restart event instead of shutdown event.
|
||||
restarting.Set()
|
||||
// Let the updates module handle restarting.
|
||||
updates.RestartNow()
|
||||
|
||||
|
|
|
@ -7,13 +7,12 @@ import (
|
|||
|
||||
"github.com/safing/portbase/modules"
|
||||
"github.com/safing/portbase/modules/subsystems"
|
||||
"github.com/tevino/abool"
|
||||
"github.com/safing/portmaster/updates"
|
||||
|
||||
// module dependencies
|
||||
_ "github.com/safing/portmaster/netenv"
|
||||
_ "github.com/safing/portmaster/status"
|
||||
_ "github.com/safing/portmaster/ui"
|
||||
_ "github.com/safing/portmaster/updates"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -24,7 +23,6 @@ const (
|
|||
var (
|
||||
module *modules.Module
|
||||
|
||||
restarting = abool.New()
|
||||
disableShutdownEvent bool
|
||||
)
|
||||
|
||||
|
@ -82,7 +80,7 @@ func registerEvents() {
|
|||
|
||||
func shutdownHook() {
|
||||
// Notify everyone of the restart/shutdown.
|
||||
if restarting.IsNotSet() {
|
||||
if !updates.IsRestarting() {
|
||||
// Only trigger shutdown event if not disabled.
|
||||
if !disableShutdownEvent {
|
||||
module.TriggerEvent(eventShutdown, nil)
|
||||
|
|
|
@ -20,6 +20,11 @@ var (
|
|||
restartTriggered = abool.New()
|
||||
)
|
||||
|
||||
// IsRestarting returns whether a restart is pending or currently in progress.
|
||||
func IsRestarting() bool {
|
||||
return restartPending.IsSet()
|
||||
}
|
||||
|
||||
// DelayedRestart triggers a restart of the application by shutting down the
|
||||
// module system gracefully and returning with RestartExitCode. The restart
|
||||
// may be further delayed by up to 10 minutes by the internal task scheduling
|
||||
|
@ -52,6 +57,10 @@ func RestartNow() {
|
|||
func automaticRestart(_ context.Context, _ *modules.Task) error {
|
||||
if restartTriggered.SetToIf(false, true) {
|
||||
log.Info("updates: initiating (automatic) restart")
|
||||
|
||||
// Set restart pending to ensure IsRestarting() returns true.
|
||||
restartPending.Set()
|
||||
// Set restart exit code.
|
||||
modules.SetExitStatusCode(RestartExitCode)
|
||||
// Do not use a worker, as this would block itself here.
|
||||
go modules.Shutdown() //nolint:errcheck
|
||||
|
|
Loading…
Add table
Reference in a new issue