From 7449c80d677bc58f7550f648f8dd63cc4fb68833 Mon Sep 17 00:00:00 2001 From: Eric Petit Date: Fri, 7 Apr 2006 20:17:40 +0000 Subject: [PATCH] Should fix a race condition --- libtransmission/tracker.c | 24 ++++++++++++------------ libtransmission/tracker.h | 4 ++-- libtransmission/transmission.c | 5 +++-- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/libtransmission/tracker.c b/libtransmission/tracker.c index a53c0e866..1f011ad41 100644 --- a/libtransmission/tracker.c +++ b/libtransmission/tracker.c @@ -667,20 +667,20 @@ int tr_trackerScrape( tr_torrent_t * tor, int * seeders, int * leechers ) return 0; } -int tr_trackerSeeders( tr_torrent_t * tor) +int tr_trackerSeeders( tr_tracker_t * tc ) { - if (tor->status != TR_STATUS_PAUSE) - { - return (tor->tracker)->seeders; - } - return 0; + if( !tc ) + { + return -1; + } + return tc->seeders; } -int tr_trackerLeechers( tr_torrent_t * tor) +int tr_trackerLeechers( tr_tracker_t * tc ) { - if (tor->status != TR_STATUS_PAUSE) - { - return (tor->tracker)->leechers; - } - return 0; + if( !tc ) + { + return -1; + } + return tc->leechers; } diff --git a/libtransmission/tracker.h b/libtransmission/tracker.h index ebafa6918..6aa5ecabf 100644 --- a/libtransmission/tracker.h +++ b/libtransmission/tracker.h @@ -37,14 +37,14 @@ void tr_trackerClose ( tr_tracker_t * ); *********************************************************************** * Looks for the seeders/leechers as returned by the tracker. **********************************************************************/ -int tr_trackerSeeders ( tr_torrent_t * ); +int tr_trackerSeeders ( tr_tracker_t * ); /*********************************************************************** * tr_trackerLeechers *********************************************************************** * Looks for the seeders/leechers as returned by the tracker. **********************************************************************/ -int tr_trackerLeechers ( tr_torrent_t * ); +int tr_trackerLeechers ( tr_tracker_t * ); int tr_trackerScrape ( tr_torrent_t *, int *, int * ); diff --git a/libtransmission/transmission.c b/libtransmission/transmission.c index 189ac4923..713450d61 100644 --- a/libtransmission/transmission.c +++ b/libtransmission/transmission.c @@ -331,6 +331,7 @@ static void torrentReallyStop( tr_torrent_t * tor ) tr_dbg( "Thread joined" ); tr_trackerClose( tor->tracker ); + tor->tracker = NULL; while( tor->peerCount > 0 ) { @@ -422,8 +423,8 @@ tr_stat_t * tr_torrentStat( tr_torrent_t * tor ) s->rateDownload = 0.0; s->rateUpload = tr_rcRate( tor->upload ); - s->seeders = tr_trackerSeeders(tor); - s->leechers = tr_trackerLeechers(tor); + s->seeders = tr_trackerSeeders(tor->tracker); + s->leechers = tr_trackerLeechers(tor->tracker); if( s->rateDownload < 0.1 ) {