From 090e35e46c70c15d3d004596f22b0cb54225a411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20B=C3=BClow?= Date: Sun, 14 Sep 2025 19:37:18 +0200 Subject: [PATCH] added handling for sighup (issues reload command to server) --- internal/service/service.go | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/internal/service/service.go b/internal/service/service.go index 0871c4c..f101c93 100644 --- a/internal/service/service.go +++ b/internal/service/service.go @@ -57,19 +57,33 @@ func RunService() { } }() + // Separate Channel for handling SIGHUP + hupCh := make(chan os.Signal, 1) + signal.Notify(hupCh, syscall.SIGHUP) + ctx, stop := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM) defer stop() <- ctx.Done() - log.Println("Sending stop signal to Server Process") - if _, err := stdin.Write([]byte("stop\n")); err != nil { - log.Printf("write error: %v", err) - } - //stdin.Close() - - if err := cmd.Wait(); err != nil { - log.Printf("child exit: %v", err) + for { + select { + case <-hupCh: + log.Println("Sending reload signal to Server Process") + if _, err := stdin.Write([]byte("reload\n")); err != nil { + log.Printf("write error: %v", err) + } + case <-ctx.Done(): + log.Println("Sending stop signal to Server Process") + if _, err := stdin.Write([]byte("stop\n")); err != nil { + log.Printf("write error: %v", err) + } + if err := cmd.Wait(); err != nil { + log.Printf("child exit: %v", err) + } + log.Println("Shutdown completed") + return + } } - log.Println("Shutdown completed") + }