diff --git a/caddy/caddymain/run.go b/caddy/caddymain/run.go index 0eebe0108..b88997192 100644 --- a/caddy/caddymain/run.go +++ b/caddy/caddymain/run.go @@ -101,7 +101,7 @@ func Run() { } // Executes Startup events - caddy.EmitEvent(caddy.StartupEvent) + caddy.EmitEvent(caddy.StartupEvent, nil) // Get Caddyfile input caddyfileinput, err := caddy.LoadCaddyfile(serverType) diff --git a/plugins.go b/plugins.go index aaaa57fd2..a753ae948 100644 --- a/plugins.go +++ b/plugins.go @@ -224,7 +224,7 @@ const ( ) // EventHook is a type which holds information about a startup hook plugin. -type EventHook func(eventType EventName) error +type EventHook func(eventType EventName, eventInfo interface{}) error // RegisterEventHook plugs in hook. All the hooks should register themselves // and they must have a name. @@ -241,9 +241,9 @@ func RegisterEventHook(name string, hook EventHook) { // EmitEvent executes the different hooks passing the EventType as an // argument. This is a blocking function. Hook developers should // use 'go' keyword if they don't want to block Caddy. -func EmitEvent(event EventName) { +func EmitEvent(event EventName, info interface{}) { for name, hook := range eventHooks { - err := hook(event) + err := hook(event, info) if err != nil { log.Printf("error on '%s' hook: %v", name, err) diff --git a/sigtrap.go b/sigtrap.go index 3be3b3300..a456434bb 100644 --- a/sigtrap.go +++ b/sigtrap.go @@ -53,7 +53,7 @@ func trapSignalsCrossPlatform() { func executeShutdownCallbacks(signame string) (exitCode int) { shutdownCallbacksOnce.Do(func() { // execute third-party shutdown hooks - EmitEvent(ShutdownEvent) + EmitEvent(ShutdownEvent, signame) errs := allShutdownCallbacks() if len(errs) > 0 {