diff --git a/internal/api/api.go b/internal/api/api.go index d61653e4a..86817bd01 100644 --- a/internal/api/api.go +++ b/internal/api/api.go @@ -14,7 +14,6 @@ import ( "time" "github.com/AlexxIT/go2rtc/internal/app" - "github.com/AlexxIT/go2rtc/pkg/shell" "github.com/rs/zerolog" ) @@ -256,7 +255,15 @@ func restartHandler(w http.ResponseWriter, r *http.Request) { return } - go shell.Restart() + path, err := os.Executable() + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + log.Debug().Msgf("[api] restart %s", path) + + go syscall.Exec(path, os.Args, os.Environ()) } func logHandler(w http.ResponseWriter, r *http.Request) { diff --git a/pkg/shell/shell.go b/pkg/shell/shell.go index 157927256..d538b961b 100644 --- a/pkg/shell/shell.go +++ b/pkg/shell/shell.go @@ -2,9 +2,7 @@ package shell import ( "os" - "os/exec" "os/signal" - "path/filepath" "regexp" "strings" "syscall" @@ -70,20 +68,3 @@ func RunUntilSignal() { signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) println("exit with signal:", (<-sigs).String()) } - -// Restart idea taken from https://github.com/tillberg/autorestart -// Copyright (c) 2015, Dan Tillberg -func Restart() { - path, err := exec.LookPath(os.Args[0]) - if err != nil { - return - } - path, err = filepath.Abs(path) - if err != nil { - return - } - path = filepath.Clean(path) - if err = syscall.Exec(path, os.Args, os.Environ()); err != nil { - panic(err) - } -}