[packages_10.03.2] tor-alpha: merge r27693, r28158, r28341, r28902, r29177, r29488...
[10.03/packages.git] / net / transmission / patches / 010-opt_scrape_paused.patch
1 Index: transmission-2.31/libtransmission/announcer.c
2 ===================================================================
3 --- transmission-2.31.orig/libtransmission/announcer.c  2011-05-23 13:34:54.000000000 +0200
4 +++ transmission-2.31/libtransmission/announcer.c       2011-05-23 13:48:03.000000000 +0200
5 @@ -1433,11 +1433,13 @@
6      tor = NULL;
7      while(( tor = tr_torrentNext( announcer->session, tor ))) {
8          struct tr_torrent_tiers * tt = tor->tiers;
9 +       const bool paused = !tor->isRunning;
10 +       const bool scrapePaused = tr_sessionGetScrapePaused( announcer->session );
11          for( i=0; tt && i<tt->tier_count; ++i ) {
12              tr_tier * tier = &tt->tiers[i];
13              if( tierNeedsToAnnounce( tier, now ) )
14                  tr_ptrArrayAppend( &announceMe, tier );
15 -            else if( tierNeedsToScrape( tier, now ) )
16 +            else if( tierNeedsToScrape( tier, now ) && ( !paused || scrapePaused ) )
17                  tr_ptrArrayAppend( &scrapeMe, tier );
18          }
19      }
20 @@ -1505,6 +1507,7 @@
21      tr_tracker_stat * ret;
22      struct tr_torrent_tiers * tt;
23      const time_t now = tr_time( );
24 +    bool scrapePaused;
25  
26      assert( tr_isTorrent( torrent ) );
27      assert( tr_torrentIsLocked( torrent ) );
28 @@ -1515,6 +1518,8 @@
29      *setmeTrackerCount = tt->tracker_count;
30      ret = tr_new0( tr_tracker_stat, tt->tracker_count );
31  
32 +    scrapePaused = tr_sessionGetScrapePaused( torrent->session );
33 +
34      /* populate the stats */
35      for( i=0; i<tt->tier_count; ++i )
36      {
37 @@ -1559,7 +1564,7 @@
38  
39                  if( tier->isScraping )
40                      st->scrapeState = TR_TRACKER_ACTIVE;
41 -                else if( !tier->scrapeAt )
42 +                else if( !tier->scrapeAt || ( !torrent->isRunning && !scrapePaused ) )
43                      st->scrapeState = TR_TRACKER_INACTIVE;
44                  else if( tier->scrapeAt > now )
45                  {
46 Index: transmission-2.31/libtransmission/session.c
47 ===================================================================
48 --- transmission-2.31.orig/libtransmission/session.c    2011-05-23 13:41:05.000000000 +0200
49 +++ transmission-2.31/libtransmission/session.c 2011-05-23 13:50:23.000000000 +0200
50 @@ -359,6 +359,7 @@
51      tr_bencDictAddStr ( d, TR_PREFS_KEY_BIND_ADDRESS_IPV4,        TR_DEFAULT_BIND_ADDRESS_IPV4 );
52      tr_bencDictAddStr ( d, TR_PREFS_KEY_BIND_ADDRESS_IPV6,        TR_DEFAULT_BIND_ADDRESS_IPV6 );
53      tr_bencDictAddBool( d, TR_PREFS_KEY_START,                    true );
54 +    tr_bencDictAddBool( d, TR_PREFS_KEY_SCRAPE_PAUSED_TORRENTS,   true );
55      tr_bencDictAddBool( d, TR_PREFS_KEY_TRASH_ORIGINAL,           false );
56  }
57  
58 @@ -424,6 +425,7 @@
59      tr_bencDictAddStr ( d, TR_PREFS_KEY_BIND_ADDRESS_IPV4,        tr_address_to_string( &s->public_ipv4->addr ) );
60      tr_bencDictAddStr ( d, TR_PREFS_KEY_BIND_ADDRESS_IPV6,        tr_address_to_string( &s->public_ipv6->addr ) );
61      tr_bencDictAddBool( d, TR_PREFS_KEY_START,                    !tr_sessionGetPaused( s ) );
62 +    tr_bencDictAddBool( d, TR_PREFS_KEY_SCRAPE_PAUSED_TORRENTS,   tr_sessionGetScrapePaused( s ) );
63      tr_bencDictAddBool( d, TR_PREFS_KEY_TRASH_ORIGINAL,           tr_sessionGetDeleteSource( s ) );
64  }
65  
66 @@ -776,6 +778,8 @@
67          tr_blocklistSetURL( session, str );
68      if( tr_bencDictFindBool( settings, TR_PREFS_KEY_START, &boolVal ) )
69          tr_sessionSetPaused( session, !boolVal );
70 +    if( tr_bencDictFindBool( settings, TR_PREFS_KEY_SCRAPE_PAUSED_TORRENTS, &boolVal ) )
71 +        tr_sessionSetScrapePaused( session, boolVal );
72      if( tr_bencDictFindBool( settings, TR_PREFS_KEY_TRASH_ORIGINAL, &boolVal) )
73          tr_sessionSetDeleteSource( session, boolVal );
74  
75 @@ -1636,6 +1640,22 @@
76  }
77  
78  void
79 +tr_sessionSetScrapePaused( tr_session * session, bool enable )
80 +{
81 +    assert( tr_isSession( session ) );
82 +
83 +    session->scrapePausedTorrents = enable;
84 +}
85 +
86 +bool
87 +tr_sessionGetScrapePaused( const tr_session * session )
88 +{
89 +    assert( tr_isSession( session ) );
90 +
91 +    return session->scrapePausedTorrents;
92 +}
93 +
94 +void
95  tr_sessionSetDeleteSource( tr_session * session, bool deleteSource )
96  {
97      assert( tr_isSession( session ) );
98 Index: transmission-2.31/libtransmission/session.h
99 ===================================================================
100 --- transmission-2.31.orig/libtransmission/session.h    2011-05-23 13:45:30.000000000 +0200
101 +++ transmission-2.31/libtransmission/session.h 2011-05-23 13:46:12.000000000 +0200
102 @@ -106,6 +106,7 @@
103      bool                         isIdleLimited;
104      bool                         isIncompleteDirEnabled;
105      bool                         pauseAddedTorrent;
106 +    bool                         scrapePausedTorrents;
107      bool                         deleteSourceTorrent;
108  
109      tr_benc                      removedTorrents;
110 Index: transmission-2.31/libtransmission/transmission.h
111 ===================================================================
112 --- transmission-2.31.orig/libtransmission/transmission.h       2011-05-23 13:48:11.000000000 +0200
113 +++ transmission-2.31/libtransmission/transmission.h    2011-05-23 13:49:15.000000000 +0200
114 @@ -213,6 +213,7 @@
115  #define TR_PREFS_KEY_UMASK                        "umask"
116  #define TR_PREFS_KEY_UPLOAD_SLOTS_PER_TORRENT     "upload-slots-per-torrent"
117  #define TR_PREFS_KEY_START                        "start-added-torrents"
118 +#define TR_PREFS_KEY_SCRAPE_PAUSED_TORRENTS       "scrape-paused-torrents"
119  #define TR_PREFS_KEY_TRASH_ORIGINAL               "trash-original-torrent-files"
120  
121  
122 @@ -731,6 +732,9 @@
123  void       tr_sessionSetPaused        ( tr_session *, bool isPaused );
124  bool       tr_sessionGetPaused        ( const tr_session * );
125  
126 +void       tr_sessionSetScrapePaused  ( tr_session *, bool enable );
127 +bool       tr_sessionGetScrapePaused  ( const tr_session * );
128 +
129  void       tr_sessionSetDeleteSource  ( tr_session *, bool deleteSource );
130  bool       tr_sessionGetDeleteSource  ( const tr_session * );
131