summaryrefslogtreecommitdiff
path: root/lib/thandy/download.py
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2008-11-17 02:35:00 +0000
committerNick Mathewson <nickm@torproject.org>2008-11-17 02:35:00 +0000
commitd49ac7f4ceec36ad627d716ab83194c3c4b974be (patch)
tree117f92508ac11560a97fc99f8b091ffde5494fef /lib/thandy/download.py
parent32c62957f600c4dcba8fb24b6d00217876d84edd (diff)
Stop dropping a byte every time a download fails. also start working on making other exceptions propagete from woder threads.
git-svn-id: file:///home/or/svnrepo/updater/trunk@17309 55e972cd-5a19-0410-ae62-a4d7a52db4cd
Diffstat (limited to 'lib/thandy/download.py')
-rw-r--r--lib/thandy/download.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/thandy/download.py b/lib/thandy/download.py
index 8a9f083..2f98b30 100644
--- a/lib/thandy/download.py
+++ b/lib/thandy/download.py
@@ -40,6 +40,9 @@ class DownloadManager:
for t in self.threads:
t.setDaemon(True)
+ #DOCDOC
+ self._raiseMe = None
+
def start(self):
"""Start all of this download manager's worker threads."""
for t in self.threads:
@@ -80,6 +83,9 @@ class DownloadManager:
self.done.wait()
self.done.release()
+ if self._raiseMe:
+ raise self._raiseMe
+
try:
while True:
item = self.resultQueue.get(block=False)
@@ -233,7 +239,7 @@ class DownloadJob:
gotRange = f_in.info().get("Content-Range")
expectLength = f_in.info().get("Content-Length", "???")
if gotRange:
- if gotRange.startswith("bytes %s-"%(have_length+1)):
+ if gotRange.startswith("bytes %s-"%have_length):
logging.info("Resuming download from %s"%url)
f_out = open(self._tmpPath, 'a')
else:
@@ -344,7 +350,7 @@ def getConnection(url, useTor, have_length=None):
is_http = urltype in ["http", "https"]
if have_length is not None and is_http:
- headers['Range'] = "bytes=%s-"%(have_length+1)
+ headers['Range'] = "bytes=%s-"%have_length
req = urllib2.Request(url, headers=headers)