diff options
Diffstat (limited to 'connector/external')
-rw-r--r-- | connector/external/external.go | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/connector/external/external.go b/connector/external/external.go index b66ab6c..9896750 100644 --- a/connector/external/external.go +++ b/connector/external/external.go @@ -177,6 +177,7 @@ func (ext *External) restartLoop(generation int) { break } log.Printf("Process %s stopped, restarting.", ext.command) + log.Printf("Generation %d vs %d", ext.generation, generation) err := ext.setupProc(generation) if err != nil { ext.proc = nil @@ -326,22 +327,23 @@ func (ext *External) Close() { ext.sendJson.Encode(&extMessage{ MsgType: CLOSE, }) + ext.proc.Process.Signal(os.Interrupt) - proc := ext.proc - proc.Process.Signal(os.Interrupt) ext.recvPipe.Close() ext.sendPipe.Close() + go func() { + time.Sleep(1 * time.Second) + log.Info("Sending SIGKILL to external process (did not terminate within 1 second)") + ext.proc.Process.Kill() + }() + ext.proc.Wait() + ext.proc = nil ext.recvPipe = nil ext.sendPipe = nil ext.sendJson = nil ext.handlerChan = nil - - go func() { - time.Sleep(1 * time.Second) - proc.Process.Kill() - }() } // ---- Actual message handling :) |