From 11b34daea25a37bbb5f1863f37abab58e4debdf5 Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Fri, 3 Dec 2010 21:53:37 +0000 Subject: [PATCH] (trunk libT) possibly fix the "no announce scheduled" issue reported in the forums --- libtransmission/announcer.c | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/libtransmission/announcer.c b/libtransmission/announcer.c index 277927a79..43d0fdcd5 100644 --- a/libtransmission/announcer.c +++ b/libtransmission/announcer.c @@ -604,14 +604,6 @@ publishErrorClear( tr_tier * tier ) publishMessage( tier, NULL, TR_TRACKER_ERROR_CLEAR ); } -static void -publishErrorMessageAndStop( tr_tier * tier, const char * msg ) -{ - tier->isRunning = FALSE; - - publishMessage( tier, msg, TR_TRACKER_ERROR ); -} - static void publishWarning( tr_tier * tier, const char * msg ) { @@ -1453,7 +1445,7 @@ onAnnounceDone( tr_session * session, tierAddAnnounce( tier, announceEvent, now + interval ); tier->manualAnnounceAllowedAt = now + tier->announceMinIntervalSec; } - else if( ( responseCode == 404 ) || ( 500 <= responseCode && responseCode <= 599 ) ) + else if( 400 <= responseCode && responseCode <= 599 ) { /* 404: The requested resource could not be found but may be * available again in the future. Subsequent requests by @@ -1463,20 +1455,16 @@ onAnnounceDone( tr_session * session, * has erred or is incapable of performing the request. * So we pause a bit and try again. */ + /* 4xx: The request could not be understood by the server due to + * malformed syntax. The client SHOULD NOT repeat the + * request without modifications... however, some trackers spit + * out 4xx messages too freely, so we can't disable reannounces + * altogether. Use the same sliding scale that 404 and 5xx use. */ + const int interval = getRetryInterval( tier->currentTracker->host ); tier->manualAnnounceAllowedAt = ~(time_t)0; tierAddAnnounce( tier, announceEvent, now + interval ); } - else if( 400 <= responseCode && responseCode <= 499 ) - { - /* The request could not be understood by the server due to - * malformed syntax. The client SHOULD NOT repeat the - * request without modifications. */ - if( tr_torrentIsPrivate( tier->tor ) || ( tier->tor->info.trackerCount < 2 ) ) - publishErrorMessageAndStop( tier, _( "Tracker returned a 4xx message" ) ); - tier->announceAt = 0; - tier->manualAnnounceAllowedAt = ~(time_t)0; - } else { /* WTF did we get?? */ -- 2.40.0