From f88f71d933ea948b72ee4dec63fcfbc4523cfb6c Mon Sep 17 00:00:00 2001 From: Harvey Tindall Date: Sun, 11 Jun 2023 16:35:41 +0100 Subject: [PATCH] pwreset: Stop daemon on restart, dont fail if json is malformed daemon now stops on the RESTART signal, and when it fails to read JSON, it no longer stops the whole daemon. --- main.go | 3 +++ pwreset.go | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index 12df585..c07f6f8 100644 --- a/main.go +++ b/main.go @@ -586,11 +586,13 @@ func start(asDaemon, firstCall bool) { } }() for range RESTART { + println("got it too!") ctx, cancel := context.WithTimeout(context.Background(), time.Second*5) defer cancel() if err := SRV.Shutdown(ctx); err != nil { app.err.Fatalf("Server shutdown error: %s", err) } + app.info.Println("Server shut down.") return } } @@ -608,6 +610,7 @@ func (app *appContext) shutdown() { if err := SRV.Shutdown(cntx); err != nil { app.err.Fatalf("Server shutdown error: %s", err) } + os.Exit(1) } } diff --git a/pwreset.go b/pwreset.go index 255c9e2..12e26ac 100644 --- a/pwreset.go +++ b/pwreset.go @@ -40,13 +40,13 @@ func (app *appContext) StartPWR() { } defer watcher.Close() - done := make(chan bool) go pwrMonitor(app, watcher) err = watcher.Add(path) if err != nil { app.err.Printf("Failed to start password reset daemon: %s", err) } - <-done + + <-RESTART } // PasswordReset represents a passwordreset-xyz.json file generated by Jellyfin. @@ -77,7 +77,7 @@ func pwrMonitor(app *appContext, watcher *fsnotify.Watcher) { err = json.Unmarshal(data, &pwr) if len(pwr.Pin) == 0 || err != nil { app.debug.Printf("PWR: Failed to read PIN: %v", err) - return + continue } app.info.Printf("New password reset for user \"%s\"", pwr.Username) if currentTime := time.Now(); pwr.Expiry.After(currentTime) {