From 886fb651d8666d6fad9c847b93cf43cf945e25c6 Mon Sep 17 00:00:00 2001
From: Richard Nyberg <rnyberg@murmeldjur.se>
Date: Sun, 5 Feb 2006 11:24:10 +0000
Subject: [PATCH] Add function to get tracker error count. Don't look for peers
 and stuff in tracker replies when we're stopping.

---
 btpd/tracker_req.c | 11 +++++++++--
 btpd/tracker_req.h |  1 +
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/btpd/tracker_req.c b/btpd/tracker_req.c
index 5325a3d..74b16ee 100644
--- a/btpd/tracker_req.c
+++ b/btpd/tracker_req.c
@@ -130,8 +130,9 @@ http_cb(struct http *req, struct http_res *res, void *arg)
     struct tracker *tr = tp->tr;
     assert(tr->ttype == TIMER_TIMEOUT);
     tr->req = NULL;
-    if ((http_succeeded(res) &&
-            parse_reply(tp, res->content, res->length) == 0)) {
+    if (res->res == HRES_OK &&
+        (tr->event == TR_EV_STOPPED
+            || parse_reply(tp, res->content, res->length) == 0)) {
         tr->nerrors = 0;
         tr->ttype = TIMER_INTERVAL;
         event_add(&tr->timer, (& (struct timeval) { tr->interval, 0 }));
@@ -249,3 +250,9 @@ tr_stop(struct torrent *tp)
 {
     tr_send(tp, TR_EV_STOPPED);
 }
+
+unsigned
+tr_errors(struct torrent *tp)
+{
+    return tp->tr->nerrors;
+}
diff --git a/btpd/tracker_req.h b/btpd/tracker_req.h
index 95cc170..6106ef7 100644
--- a/btpd/tracker_req.h
+++ b/btpd/tracker_req.h
@@ -6,5 +6,6 @@ void tr_stop(struct torrent *tp);
 void tr_refresh(struct torrent *tp);
 void tr_complete(struct torrent *tp);
 void tr_destroy(struct torrent *tp);
+unsigned tr_errors(struct torrent *tp);
 
 #endif