core: Fix SIGUSR1 so it actually reloads config

This commit is contained in:
Matthew Holt 2015-10-26 17:57:32 -06:00
parent 821c0fab09
commit bb6613d0ae
4 changed files with 28 additions and 1 deletions

View file

@ -319,4 +319,8 @@ type Input interface {
// Gets the path to the origin file // Gets the path to the origin file
Path() string Path() string
// IsFile returns true if the original input was a file on the file system
// that could be loaded again later if requested.
IsFile() bool
} }

View file

@ -58,6 +58,7 @@ func isRestart() bool {
type CaddyfileInput struct { type CaddyfileInput struct {
Filepath string Filepath string
Contents []byte Contents []byte
RealFile bool
} }
// Body returns c.Contents. // Body returns c.Contents.
@ -65,3 +66,6 @@ func (c CaddyfileInput) Body() []byte { return c.Contents }
// Path returns c.Filepath. // Path returns c.Filepath.
func (c CaddyfileInput) Path() string { return c.Filepath } func (c CaddyfileInput) Path() string { return c.Filepath }
// Path returns true if the original input was a real file on the file system.
func (c CaddyfileInput) IsFile() bool { return c.RealFile }

View file

@ -3,6 +3,7 @@
package caddy package caddy
import ( import (
"io/ioutil"
"log" "log"
"os" "os"
"os/signal" "os/signal"
@ -17,7 +18,23 @@ func init() {
for { for {
<-reload <-reload
err := Restart(nil)
var updatedCaddyfile Input
caddyfileMu.Lock()
if caddyfile.IsFile() {
body, err := ioutil.ReadFile(caddyfile.Path())
if err == nil {
caddyfile = CaddyfileInput{
Filepath: caddyfile.Path(),
Contents: body,
RealFile: true,
}
}
}
caddyfileMu.Unlock()
err := Restart(updatedCaddyfile)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
} }

View file

@ -92,6 +92,7 @@ func loadCaddyfile() (caddy.Input, error) {
return caddy.CaddyfileInput{ return caddy.CaddyfileInput{
Contents: contents, Contents: contents,
Filepath: conf, Filepath: conf,
RealFile: true,
}, nil }, nil
} }
@ -115,6 +116,7 @@ func loadCaddyfile() (caddy.Input, error) {
return caddy.CaddyfileInput{ return caddy.CaddyfileInput{
Contents: contents, Contents: contents,
Filepath: caddy.DefaultConfigFile, Filepath: caddy.DefaultConfigFile,
RealFile: true,
}, nil }, nil
} }