commit a47e634f594c26a5e6676bf5de3f0d1d5bb620af Author: David Fifield david@bamsoftware.com Date: Thu Jan 11 12:31:02 2018 -0800
Have meek-client-torbrowser give meek-client a stdin that doesn't close.
https://bugs.torproject.org/24642
Running meek-client-torbrowser with the environment variable TOR_PT_EXIT_ON_STDIN_CLOSE=1 would cause meek-client to exit immediately, as it sensed that its stdin was closed. meek-client-torbrowser was running the meek-client subprocess with a nil Stdin, which causes its stdin to be /dev/null (or NUL on Windows), which returns an immediate EOF. So instead, give meek-client an StdinPipe and just keep it open. (We could alternatively keep track of it and close it when necessary, but that would take further refactoring.)
The commit where things would have first broken was 0ec986eb2b4bc23d81e6e8beffd382890f55bfb1 (part of tag 0.28), which added TOR_PT_EXIT_ON_STDIN_CLOSE awareness to meek-client. But it was not meek-client's fault.
This bug did not affect any releases of Tor Browser, despite that on Windows we unconditionally set TOR_PT_EXIT_ON_STDIN_CLOSE=1 via terminateprocess-buffer, because Tor Browser is still using tag 0.25, which doesn't have the TOR_PT_EXIT_ON_STDIN_CLOSE change in meek-client. --- meek-client-torbrowser/meek-client-torbrowser.go | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/meek-client-torbrowser/meek-client-torbrowser.go b/meek-client-torbrowser/meek-client-torbrowser.go index db35080..0064b4b 100644 --- a/meek-client-torbrowser/meek-client-torbrowser.go +++ b/meek-client-torbrowser/meek-client-torbrowser.go @@ -268,6 +268,12 @@ func runMeekClient(helperAddr string, meekClientCommandLine []string) (cmd *exec args := meekClientCommandLine[1:] args = append(args, []string{"--helper", helperAddr}...) cmd = exec.Command(meekClientPath, args...) + // Give the subprocess a stdin for TOR_PT_EXIT_ON_STDIN_CLOSE purposes. + // https://bugs.torproject.org/24642 + _, err = cmd.StdinPipe() + if err != nil { + return + } cmd.Stdout = os.Stdout cmd.Stderr = os.Stderr log.Printf("running meek-client command %q", cmd.Args)
tor-commits@lists.torproject.org