client.go | 14 +++++++++++--- cmd/torrent/main.go | 4 ++-- diff --git a/client.go b/client.go index 048cc8a110f95305e4de8b4c6735da475d63689b..0ffd93019099eb4ca8f04aca5fbdd3bc66bd9e90 100644 --- a/client.go +++ b/client.go @@ -123,7 +123,7 @@ return me.listener.Addr() } func (cl *Client) WriteStatus(w io.Writer) { - cl.mu.Lock() + cl.mu.LevelLock(1) defer cl.mu.Unlock() if cl.listener != nil { fmt.Fprintf(w, "Listening on %s\n", cl.listener.Addr()) @@ -274,6 +274,8 @@ } func (cl *Client) acceptConnections() { for { + // We accept all connections immediately, because we don't what + // torrent they're for. conn, err := cl.listener.Accept() select { case <-cl.quit: @@ -287,7 +289,6 @@ if err != nil { log.Print(err) return } - // log.Printf("accepted connection from %s", conn.RemoteAddr()) go func() { if err := cl.runConnection(conn, nil, peerSourceIncoming); err != nil { log.Print(err) @@ -539,7 +540,14 @@ "ut_pex": 2, }, "v": "go.torrent dev 20140825", // Just the date // No upload queue is implemented yet. - "reqq": 1, + "reqq": func() int { + if me.noUpload { + // No need to look strange if it costs us nothing. + return 250 + } else { + return 1 + } + }(), } if torrent.metadataSizeKnown() { d["metadata_size"] = torrent.metadataSize() diff --git a/cmd/torrent/main.go b/cmd/torrent/main.go index 142b1d339d5e7b6b30b8a23a288374c02dfce0dc..ed98932421d78d76ae4fa34a7e05c679ffe6c470 100644 --- a/cmd/torrent/main.go +++ b/cmd/torrent/main.go @@ -71,7 +71,7 @@ log.Fatal(err) } util.CopyExact(&ih, metaInfo.Info.Hash) } - client.PrioritizeDataRegion(ih, 0, 999999999) + // client.PrioritizeDataRegion(ih, 0, 999999999) err := client.AddPeers(ih, func() []torrent.Peer { if *testPeer == "" { return nil @@ -93,7 +93,7 @@ if *seed { select {} } if client.WaitAll() { - log.Print("all torrents completed!") + log.Print("downloaded ALL the torrents") } else { log.Fatal("y u no complete torrents?!") }