[tor-commits] [meek/master] Replace --exit-on-stdin-eof with TOR_PT_EXIT_ON_STDIN_CLOSE=1.

dcf at torproject.org dcf at torproject.org
Mon Apr 6 16:37:07 UTC 2015


commit e2f3c4e3052b6089d11cb12cc8c31aab1cd2728a
Author: David Fifield <david at bamsoftware.com>
Date:   Sun Apr 5 16:22:36 2015 -0700

    Replace --exit-on-stdin-eof with TOR_PT_EXIT_ON_STDIN_CLOSE=1.
    
    There's now an official way for tor to request this behavior.
---
 meek-client-torbrowser/meek-client-torbrowser.go |   21 ++++-----------------
 1 file changed, 4 insertions(+), 17 deletions(-)

diff --git a/meek-client-torbrowser/meek-client-torbrowser.go b/meek-client-torbrowser/meek-client-torbrowser.go
index 0c339af..65c3b46 100644
--- a/meek-client-torbrowser/meek-client-torbrowser.go
+++ b/meek-client-torbrowser/meek-client-torbrowser.go
@@ -18,14 +18,6 @@
 // This program proxies stdin and stdout to and from meek-client, so it is
 // actually meek-client that drives the pluggable transport negotiation with
 // tor.
-//
-// The special --exit-on-stdin-eof is a special workaround for Windows. On
-// Windows we don't get a detectable shutdown signal that allows us to kill the
-// subprocesses we've started. Instead, use the --exit-on-stdin-eof option and
-// run this program inside of terminateprocess-buffer. When
-// terminateprocess-buffer is killed, it will close our stdin, and we can exit
-// gracefully. --exit-on-stdin-eof and terminateprocess-buffer need to be used
-// together.
 package main
 
 import (
@@ -138,12 +130,10 @@ func runMeekClient(helperAddr string, meekClientCommandLine []string) (cmd *exec
 }
 
 func main() {
-	var exitOnStdinEOF bool
 	var logFilename string
 	var err error
 
 	flag.Usage = usage
-	flag.BoolVar(&exitOnStdinEOF, "exit-on-stdin-eof", false, "exit when stdin is closed (use with terminateprocess-buffer)")
 	flag.StringVar(&logFilename, "log", "", "name of log file")
 	flag.Parse()
 
@@ -182,13 +172,10 @@ func main() {
 	}
 	defer logKill(meekClientCmd.Process)
 
-	if exitOnStdinEOF {
-		// On Windows, we don't get a SIGINT or SIGTERM, rather we are
-		// killed without a chance to clean up our subprocesses. When
-		// run inside terminateprocess-buffer, it is instead
-		// terminateprocess-buffer that is killed, and we can detect
-		// that event by that our stdin gets closed.
-		// https://trac.torproject.org/projects/tor/ticket/9330
+	if os.Getenv("TOR_PT_EXIT_ON_STDIN_CLOSE") == "1" {
+		// This environment variable means we should treat EOF on stdin
+		// just like SIGTERM.
+		// https://trac.torproject.org/projects/tor/ticket/15435
 		go func() {
 			io.Copy(ioutil.Discard, os.Stdin)
 			log.Printf("synthesizing SIGTERM because of stdin close")



More information about the tor-commits mailing list