From b9b87fc81f2bc61711d65b8c06a20720549c8ad4 Mon Sep 17 00:00:00 2001 From: James Jeffrey Date: Fri, 21 Jul 2017 16:01:18 -0700 Subject: [PATCH] Kill the server if original context is canceled --- api/server/init.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/api/server/init.go b/api/server/init.go index 9b745c9e4..db60ddd0d 100644 --- a/api/server/init.go +++ b/api/server/init.go @@ -41,13 +41,22 @@ func init() { } func contextWithSignal(ctx context.Context, signals ...os.Signal) context.Context { - ctx, halt := context.WithCancel(context.Background()) + newCTX, halt := context.WithCancel(ctx) c := make(chan os.Signal, 1) signal.Notify(c, signals...) go func() { - <-c - logrus.Info("Halting...") - halt() + for { + select { + case <-c: + logrus.Info("Halting...") + halt() + return + case <-ctx.Done(): + logrus.Info("Halting... Original server context canceled.") + halt() + return + } + } }() - return ctx + return newCTX }