[tor-commits] [sandboxed-tor-browser/master] Try harder to ensure that the tor process dies properly.

yawning at torproject.org yawning at torproject.org
Wed Nov 30 17:55:51 UTC 2016


commit 8aebab2c046c398efd601ca986edbfe26d0825f4
Author: Yawning Angel <yawning at 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 {



More information about the tor-commits mailing list