From eeb9d252e172e0f02cc94340a50ffe03495198e7 Mon Sep 17 00:00:00 2001 From: Richard Nyberg Date: Wed, 15 Nov 2006 11:21:27 +0000 Subject: [PATCH] Fix bug in get_op. Increase the tracker error counter, and reduce the timeout for trying the next url, for url's that we can't use. The timeout is in this case just there to keep btpd from busy looping on a bad url. --- btpd/tracker_req.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/btpd/tracker_req.c b/btpd/tracker_req.c index 2d2dbb1..3f3a8be 100644 --- a/btpd/tracker_req.c +++ b/btpd/tracker_req.c @@ -80,11 +80,11 @@ next_url(struct tracker *tr) struct tr_op * get_op(struct tracker *tr) { - struct tr_op *op; + struct tr_op **opp; char *url = get_url(tr); - for (op = m_tr_ops[0]; op != NULL; op++) - if (strncasecmp(op->scheme, url, op->len) == 0) - return op; + for (opp = m_tr_ops; *opp != NULL; opp++) + if (strncasecmp((*opp)->scheme, url, (*opp)->len) == 0) + return *opp; return NULL; } @@ -118,8 +118,9 @@ tr_send(struct torrent *tp, enum tr_event event) if ((op == NULL || (tr->req = op->request(tp, event, get_url(tr))) == NULL)) { next_url(tr); + tr->nerrors++; tr->ttype = TIMER_RETRY; - btpd_ev_add(&tr->timer, (& (struct timeval) { 20, 0 })); + btpd_ev_add(&tr->timer, (& (struct timeval) { 5, 0 })); } else { m_tlast_req = btpd_seconds; tr->ttype = TIMER_TIMEOUT;