Skip to content

Commit 88290c6

Browse files
committed
Fix context cancellation (fix #3)
1 parent 3b40412 commit 88290c6

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

module.go

+9-2
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,9 @@ func (eh *Handler) Handle(ctx context.Context, e caddyevents.Event) error {
8686
expandedArgs[i] = repl.ReplaceAll(eh.Args[i], "")
8787
}
8888

89+
var cancel context.CancelFunc
8990
if eh.Timeout > 0 {
90-
var cancel context.CancelFunc
9191
ctx, cancel = context.WithTimeout(ctx, time.Duration(eh.Timeout))
92-
defer cancel()
9392
}
9493

9594
cmd := exec.CommandContext(ctx, eh.Command, expandedArgs...)
@@ -98,6 +97,10 @@ func (eh *Handler) Handle(ctx context.Context, e caddyevents.Event) error {
9897
cmd.Stderr = os.Stderr
9998

10099
if eh.Foreground {
100+
if cancel != nil {
101+
defer cancel()
102+
}
103+
101104
err := cmd.Run()
102105

103106
exitCode := cmd.ProcessState.ExitCode()
@@ -111,10 +114,14 @@ func (eh *Handler) Handle(ctx context.Context, e caddyevents.Event) error {
111114
}
112115

113116
go func() {
117+
if cancel != nil {
118+
defer cancel()
119+
}
114120
if err := cmd.Run(); err != nil {
115121
eh.logger.Error("background command failed", zap.Error(err))
116122
}
117123
}()
124+
118125
return nil
119126
}
120127

0 commit comments

Comments
 (0)