]> Sergey Matveev's repositories - btrtrc.git/commitdiff
attempt to close the client on signal
authorjb <2850825+JyBP@users.noreply.github.com>
Tue, 24 Jul 2018 07:34:06 +0000 (09:34 +0200)
committerjb <2850825+JyBP@users.noreply.github.com>
Tue, 24 Jul 2018 07:34:06 +0000 (09:34 +0200)
cmd/torrent/main.go

index f9067a79905dd1fe2f89e14e0f92f8c7b89a289c..abbb5521fd64a3fc0f331c561c5dbd494699cfcf 100644 (file)
@@ -8,7 +8,9 @@ import (
        "net"
        "net/http"
        "os"
+       "os/signal"
        "strings"
+       "syscall"
        "time"
 
        "github.com/anacrolix/envpprof"
@@ -150,6 +152,15 @@ func statsEnabled() bool {
        return *flags.Stats
 }
 
+func exitSignalHandlers(client *torrent.Client) {
+       c := make(chan os.Signal, 1)
+       signal.Notify(c, syscall.SIGINT, syscall.SIGTERM)
+       for {
+               log.Printf("close signal received: %+v", <-c)
+               client.Close()
+       }
+}
+
 func main() {
        log.SetFlags(log.LstdFlags | log.Lshortfile)
        tagflag.Parse(&flags)
@@ -183,6 +194,8 @@ func main() {
                log.Fatalf("error creating client: %s", err)
        }
        defer client.Close()
+       go exitSignalHandlers(client)
+
        // Write status on the root path on the default HTTP muxer. This will be
        // bound to localhost somewhere if GOPPROF is set, thanks to the envpprof
        // import.