commit 8aebab2c046c398efd601ca986edbfe26d0825f4
Author: Yawning Angel <[email protected]>
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 {

_______________________________________________
tor-commits mailing list
[email protected]
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits

Reply via email to