mirror of
https://github.com/balena-os/balena-supervisor.git
synced 2025-01-31 00:23:57 +00:00
Prevent non-fatal errors from closing the supervisor.
This patch fixes a couple of cases where `log.Fatalf` would cause the supervisor to exit immediately when it's inappropriate to do so. `log.Fatalf` and co. should not be used unless the supervisor utterly cannot run without whatever's being checked being in place. This patch also adjusts the code that relied on the module's values being created here being available, they now check and send an appropriate error message if they're not there.
This commit is contained in:
parent
584d0b54cc
commit
849a8c848b
@ -120,7 +120,12 @@ func inASecond(theFunc func()) {
|
||||
//RebootHandler Reboots the device using Systemd
|
||||
func RebootHandler(writer http.ResponseWriter, request *http.Request) {
|
||||
log.Println("Rebooting")
|
||||
sendResponse, _ := responseSenders(writer)
|
||||
|
||||
sendResponse, sendError := responseSenders(writer)
|
||||
if systemd.Logind == nil {
|
||||
sendError(fmt.Errorf("Logind unavailable, cannot reboot."))
|
||||
return
|
||||
}
|
||||
sendResponse("OK", "", http.StatusAccepted)
|
||||
go inASecond(func() { systemd.Logind.Reboot(false) })
|
||||
}
|
||||
@ -129,7 +134,11 @@ func RebootHandler(writer http.ResponseWriter, request *http.Request) {
|
||||
func ShutdownHandler(writer http.ResponseWriter, request *http.Request) {
|
||||
log.Println("Shutting down")
|
||||
|
||||
sendResponse, _ := responseSenders(writer)
|
||||
sendResponse, sendError := responseSenders(writer)
|
||||
if systemd.Logind == nil {
|
||||
sendError(fmt.Errorf("Logind unavailable, cannot shut down."))
|
||||
return
|
||||
}
|
||||
sendResponse("OK", "", http.StatusAccepted)
|
||||
go inASecond(func() { systemd.Logind.PowerOff(false) })
|
||||
}
|
||||
@ -192,6 +201,12 @@ func VPNControl(writer http.ResponseWriter, request *http.Request) {
|
||||
sendResponse("Error", err.Error(), http.StatusBadRequest)
|
||||
return
|
||||
}
|
||||
|
||||
if systemd.Dbus == nil {
|
||||
sendError(fmt.Errorf("Systemd dbus unavailable, cannot set VPN state."))
|
||||
return
|
||||
}
|
||||
|
||||
action := systemd.Dbus.StopUnit
|
||||
actionDescr := "VPN Disable"
|
||||
if body.Enable {
|
||||
|
@ -17,9 +17,9 @@ var (
|
||||
func init() {
|
||||
var err error
|
||||
if Logind, err = login1.New(); err != nil {
|
||||
log.Fatalf("Failed to connect to host system bus: %s", err)
|
||||
log.Printf("Failed to connect to host system bus: %s", err)
|
||||
}
|
||||
if Dbus, err = dbus.New(); err != nil {
|
||||
log.Fatalf("Failed to connect to host DBUS: %s", err)
|
||||
log.Printf("Failed to connect to host DBUS: %s", err)
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user