aboutsummaryrefslogtreecommitdiff
path: root/tracker
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-07-25 20:24:32 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-07-25 20:24:32 +0200
commit723c7ae2fb6680a36cd507514c1e90d40d83d334 (patch)
tree8cccf95b9eddcb6f8b3d8da2f5782b5357a98b5b /tracker
parenta916155668a0e5ed117f4bf362d0afff872647d8 (diff)
Paremtrize Tokens
Diffstat (limited to 'tracker')
-rw-r--r--tracker/messages.go15
-rw-r--r--tracker/peer.go2
2 files changed, 14 insertions, 3 deletions
diff --git a/tracker/messages.go b/tracker/messages.go
index 3c739e8..67c49c3 100644
--- a/tracker/messages.go
+++ b/tracker/messages.go
@@ -42,7 +42,7 @@ type Request struct {
// we support only compact mode
type Response struct {
Complete int `bencode:"complete"`
- FalureReason string `bencode:"failure reason"`
+ FailureReason string `bencode:"failure reason"`
Incomplete int `bencode:"incomplete"`
Interval time.Duration `bencode:"interval"`
MinInterval time.Duration `bencode:"min interval"`
@@ -62,11 +62,22 @@ func (r *Request) Poll(announce string) chan Peer {
log.Println(err)
return
}
+ if msg := resp.WarningMessage; msg != "" {
+ log.Println("warning:", msg)
+ }
+ if msg := resp.FailureReason; msg != "" {
+ log.Println("failure:", msg)
+ return
+ }
for _, p := range resp.Peers {
c <- p
}
if resp.Interval == 0 {
- resp.Interval = DefaultInterval
+ if resp.MinInterval > 0 {
+ resp.Interval = resp.MinInterval
+ } else {
+ resp.Interval = DefaultInterval
+ }
}
log.Println("waiting", resp.Interval)
time.Sleep(resp.Interval)
diff --git a/tracker/peer.go b/tracker/peer.go
index e19b5c3..74fd90c 100644
--- a/tracker/peer.go
+++ b/tracker/peer.go
@@ -28,7 +28,7 @@ type Peers []Peer
func (p *Peers) UnmarshalBencode(b []byte) (int, error) {
switch b[0] {
- case 'l':
+ case bencode.List:
var tmp []Peer
n, err := bencode.Unmarshal(b, &tmp)
*p = Peers(tmp)