From 7cc22565ed5362743bd5786d0e48272af2a933ca Mon Sep 17 00:00:00 2001 From: Matt Joiner Date: Wed, 23 Jul 2014 01:54:58 +1000 Subject: [PATCH] Abstract the status HTTP server into package util --- cmd/torrent/main.go | 18 ++---------------- cmd/torrentfs/main.go | 4 ++-- util/loghttp.go | 26 ++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 18 deletions(-) create mode 100644 util/loghttp.go diff --git a/cmd/torrent/main.go b/cmd/torrent/main.go index 02975df4..140c3584 100644 --- a/cmd/torrent/main.go +++ b/cmd/torrent/main.go @@ -2,6 +2,7 @@ package main import ( "bitbucket.org/anacrolix/go.torrent/dht" + "bitbucket.org/anacrolix/go.torrent/util" "flag" "fmt" "log" @@ -41,22 +42,7 @@ func makeListener() net.Listener { func main() { if *httpAddr != "" { - 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) - } - }() + util.LoggedHTTPServe(*httpAddr) } dhtServer := &dht.Server{ Socket: func() *net.UDPConn { diff --git a/cmd/torrentfs/main.go b/cmd/torrentfs/main.go index dfe82050..e8e7211d 100644 --- a/cmd/torrentfs/main.go +++ b/cmd/torrentfs/main.go @@ -27,7 +27,7 @@ var ( mountDir string disableTrackers = flag.Bool("disableTrackers", false, "disables trackers") testPeer = flag.String("testPeer", "", "the address for a test peer") - httpAddr = flag.String("httpAddr", "", "HTTP server bind address") + httpAddr = flag.String("httpAddr", "localhost:0", "HTTP server bind address") readaheadBytes = flag.Int("readaheadBytes", 10*1024*1024, "bytes to readahead in each torrent from the last read piece") testPeerAddr *net.TCPAddr ) @@ -94,7 +94,7 @@ func main() { } log.SetFlags(log.LstdFlags | log.Lshortfile) if *httpAddr != "" { - go http.ListenAndServe(*httpAddr, nil) + util.LoggedHTTPServe(*httpAddr) } conn, err := fuse.Mount(mountDir) if err != nil { diff --git a/util/loghttp.go b/util/loghttp.go new file mode 100644 index 00000000..b63ad4e4 --- /dev/null +++ b/util/loghttp.go @@ -0,0 +1,26 @@ +package util + +import ( + "log" + "net" + "net/http" +) + +func LoggedHTTPServe(addr string) { + netAddr, err := net.ResolveTCPAddr("tcp", addr) + if err != nil { + log.Fatalf("error resolving http addr: %s", err) + } + conn, err := net.ListenTCP("tcp", netAddr) + 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) + } + }() +} -- 2.48.1