import (
"bitbucket.org/anacrolix/go.torrent/dht"
+ "bitbucket.org/anacrolix/go.torrent/util"
"flag"
"fmt"
"log"
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 {
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
)
}
log.SetFlags(log.LstdFlags | log.Lshortfile)
if *httpAddr != "" {
- go http.ListenAndServe(*httpAddr, nil)
+ util.LoggedHTTPServe(*httpAddr)
}
conn, err := fuse.Mount(mountDir)
if err != nil {
--- /dev/null
+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)
+ }
+ }()
+}