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