import (
"bufio"
- "fmt"
"io"
"io/ioutil"
"net"
"os"
+ "os/signal"
"path/filepath"
"strings"
+ "syscall"
)
+var shutting_down bool = false
+
func createIndex(dirname string, selector string) (string, error) {
fi, err := ioutil.ReadDir(dirname)
if check(err, "Readdir "+dirname) != nil {
func serveTCP(sock net.Listener) {
for {
conn, err := sock.Accept()
+ if shutting_down {
+ return
+ }
checkFatal(err, "Accept")
logger.Print("TCP connect from ", conn.RemoteAddr())
go handleRequest(conn)
defer tsock.Close()
logger.Print("listening on TCP ", bindaddr)
go serveTCP(tsock)
- // send ready signal
- fmt.Println("")
- // exit on any input on stdin
- reader := bufio.NewReader(os.Stdin)
- reader.ReadRune()
+
+ // wait for signal
+ sigchan := make(chan os.Signal)
+ signal.Notify(sigchan, syscall.SIGINT, syscall.SIGTERM)
+ sig := <-sigchan
+ tracer.Print("Received signal: ", sig)
+ shutting_down = true
+ tracer.Print("Bye.")
}
/* EOF */