commit 8aebab2c046c398efd601ca986edbfe26d0825f4 Author: Yawning Angel yawning@schwanenlied.me Date: Wed Nov 30 17:55:20 2016 +0000
Try harder to ensure that the tor process dies properly. --- src/cmd/sandboxed-tor-browser/internal/tor/tor.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/src/cmd/sandboxed-tor-browser/internal/tor/tor.go b/src/cmd/sandboxed-tor-browser/internal/tor/tor.go index 58b34d0..ecb53e3 100644 --- a/src/cmd/sandboxed-tor-browser/internal/tor/tor.go +++ b/src/cmd/sandboxed-tor-browser/internal/tor/tor.go @@ -161,8 +161,22 @@ func (t *Tor) Shutdown() { }
if t.cmd != nil { - t.cmd.Process.Signal(syscall.SIGKILL) - t.ctrl = nil + waitCh := make(chan bool) + go func() { + t.cmd.Process.Signal(syscall.SIGTERM) + t.cmd.Process.Wait() + waitCh <- true + }() + + select { + case <-waitCh: + Debugf("tor: Process exited after SIGTERM") + case <-time.After(5 * time.Second): + Debugf("tor: Process timed out waiting after SIGTERM, killing.") + t.cmd.Process.Signal(syscall.SIGKILL) + } + + t.cmd = nil }
if t.ctrlSurrogate != nil {