]> Sergey Matveev's repositories - btrtrc.git/commitdiff
cmd/torrent: Run the http server by default
authorMatt Joiner <anacrolix@gmail.com>
Fri, 11 Jul 2014 15:23:10 +0000 (01:23 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Fri, 11 Jul 2014 15:23:10 +0000 (01:23 +1000)
cmd/torrent/main.go

index f98b73e05e4c7afe25662ce703bfd08c0e7fa918..8967c7917f818a571e8fbe1741eefc00fe667c75 100644 (file)
@@ -19,7 +19,7 @@ import (
 var (
        downloadDir = flag.String("downloadDir", "", "directory to store download torrent data")
        testPeer    = flag.String("testPeer", "", "bootstrap peer address")
-       httpAddr    = flag.String("httpAddr", "", "http serve address")
+       httpAddr    = flag.String("httpAddr", "localhost:0", "http serve address")
        // TODO: Check the default torrent listen port.
        listenAddr      = flag.String("listenAddr", ":6882", "incoming connection address")
        disableTrackers = flag.Bool("disableTrackers", false, "disable trackers")
@@ -41,7 +41,22 @@ func makeListener() net.Listener {
 
 func main() {
        if *httpAddr != "" {
-               go http.ListenAndServe(*httpAddr, nil)
+               addr, err := net.ResolveTCPAddr("tcp", *httpAddr)
+               if err != nil {
+                       log.Fatalf("error resolving http addr: %s", err)
+               }
+               conn, err := net.ListenTCP("tcp", addr)
+               if err != nil {
+                       log.Fatalf("error creating http conn: %s", err)
+               }
+               log.Printf("starting http server on http://%s", conn.Addr())
+               go func() {
+                       defer conn.Close()
+                       err = (&http.Server{}).Serve(conn)
+                       if err != nil {
+                               log.Fatalf("error serving http: %s", err)
+                       }
+               }()
        }
        dhtServer := &dht.Server{
                Socket: func() *net.UDPConn {