Handle TOR_PT_EXIT_ON_STDIN_CLOSE.

This commit is contained in:
David Fifield 2017-06-29 15:23:40 -07:00
parent 1fa9bc051c
commit f418ec7a85

View file

@ -5,6 +5,7 @@ import (
"errors"
"flag"
"io"
"io/ioutil"
"log"
"net"
"os"
@ -200,6 +201,16 @@ func main() {
sigChan := make(chan os.Signal, 1)
signal.Notify(sigChan, syscall.SIGTERM)
if os.Getenv("TOR_PT_EXIT_ON_STDIN_CLOSE") == "1" {
// This environment variable means we should treat EOF on stdin
// just like SIGTERM: https://bugs.torproject.org/15435.
go func() {
io.Copy(ioutil.Discard, os.Stdin)
log.Printf("synthesizing SIGTERM because of stdin close")
sigChan <- syscall.SIGTERM
}()
}
// keep track of handlers and wait for a signal
sig = nil
for sig == nil {