r268 - in /debtorrent/trunk: DebTorrent/BT1/track.py DebTorrent/HTTPCache.py DebTorrent/bencode.py debian/changelog

camrdale-guest at users.alioth.debian.org camrdale-guest at users.alioth.debian.org
Sat Aug 18 23:45:45 UTC 2007


Author: camrdale-guest
Date: Sat Aug 18 23:45:45 2007
New Revision: 268

URL: http://svn.debian.org/wsvn/debtorrent/?sc=1&rev=268
Log:
Fix a tracker bug that caused all torrents' peers to be returned for every request.

Modified:
    debtorrent/trunk/DebTorrent/BT1/track.py
    debtorrent/trunk/DebTorrent/HTTPCache.py
    debtorrent/trunk/DebTorrent/bencode.py
    debtorrent/trunk/debian/changelog

Modified: debtorrent/trunk/DebTorrent/BT1/track.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/BT1/track.py?rev=268&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/BT1/track.py (original)
+++ debtorrent/trunk/DebTorrent/BT1/track.py Sat Aug 18 23:45:45 2007
@@ -446,10 +446,9 @@
         self.becache = {}
 
         if config['compact_reqd']:
-            x = 3
+            self.cache_default_len = 3
         else:
-            x = 5
-        self.cache_default = [({},{}) for i in xrange(x)]
+            self.cache_default_len = 5
         for infohash, ds in self.downloads.items():
             self.seedcount[infohash] = 0
             for x,y in ds.items():
@@ -769,6 +768,8 @@
         if not self.allowed.has_key(hash):
             logger.warning('Request for unknown torrent file: '+b2a_hex(hash))
             return (404, 'Not Found', {'Content-Type': 'text/plain', 'Pragma': 'no-cache'}, alas)
+    def cache_default(self):
+        return [({},{}) for i in xrange(self.cache_default_len)]
         fname = self.allowed[hash]['file']
         fpath = self.allowed[hash]['path']
         return (200, 'OK', {'Content-Type': 'application/x-debtorrent',
@@ -1037,7 +1038,7 @@
             cache = self.cached_t.setdefault(infohash, None)
             if ( not cache or len(cache[1]) < rsize
                  or cache[0] + self.config['min_time_between_cache_refreshes'] < clock() ):
-                bc = self.becache.setdefault(infohash,self.cache_default)
+                bc = self.becache.setdefault(infohash,self.cache_default())
                 cache = [ clock(), bc[0][0].values() + bc[0][1].values() ]
                 self.cached_t[infohash] = cache
                 shuffle(cache[1])
@@ -1052,7 +1053,7 @@
             data['peers'] = []
             return data
 
-        bc = self.becache.setdefault(infohash,self.cache_default)
+        bc = self.becache.setdefault(infohash,self.cache_default())
         len_l = len(bc[2][0])
         len_s = len(bc[2][1])
         if not (len_l+len_s):   # caches are empty!
@@ -1294,7 +1295,7 @@
         """
         
         seed = not peer['left']
-        bc = self.becache.setdefault(infohash,self.cache_default)
+        bc = self.becache.setdefault(infohash,self.cache_default())
         cp = compact_peer_info(ip, port)
         reqc = peer['requirecrypto']
         bc[2][seed][peerid] = (cp,chr(reqc))

Modified: debtorrent/trunk/DebTorrent/HTTPCache.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/HTTPCache.py?rev=268&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/HTTPCache.py (original)
+++ debtorrent/trunk/DebTorrent/HTTPCache.py Sat Aug 18 23:45:45 2007
@@ -356,7 +356,7 @@
                 times = (mtime, mtime)
                 utime(file, times)
             except:
-                pass
+                logger.exception('Failed to set the cache time for the file')
 
         # Use the headers we want
         if exists(file):

Modified: debtorrent/trunk/DebTorrent/bencode.py
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/DebTorrent/bencode.py?rev=268&op=diff
==============================================================================
--- debtorrent/trunk/DebTorrent/bencode.py (original)
+++ debtorrent/trunk/DebTorrent/bencode.py Sat Aug 18 23:45:45 2007
@@ -174,6 +174,7 @@
         r, l = decode_func[x[0]](x, 0)
 #    except (IndexError, KeyError):
     except (IndexError, KeyError, ValueError):
+        logger.exception('bad bencoded data')
         raise ValueError, "bad bencoded data"
     if not sloppy and l != len(x):
         raise ValueError, "bad bencoded data"

Modified: debtorrent/trunk/debian/changelog
URL: http://svn.debian.org/wsvn/debtorrent/debtorrent/trunk/debian/changelog?rev=268&op=diff
==============================================================================
--- debtorrent/trunk/debian/changelog (original)
+++ debtorrent/trunk/debian/changelog Sat Aug 18 23:45:45 2007
@@ -9,10 +9,11 @@
   * bug fixes:
     - restarts would fail when downloaded files have been modified
     - deleting old cached data would fail
-    - small tracker bug causing errors
+    - small tracker bug causing exceptions
     - prevent enabling files before the initialization is complete
-    - Only connect to unique peers from the tracker that are not
+    - only connect to unique peers from the tracker that are not
       already connected
+    - tracker would return all torrents' peers for every request
 
  -- Cameron Dale <camrdale at gmail.com>  Sat, 17 Aug 2007 14:13:00 -0700
 




More information about the Debtorrent-commits mailing list