[apt-proxy-devel] r669 - trunk/apt_proxy

Chris Halls halls at alioth.debian.org
Fri Jul 13 12:49:45 UTC 2007


Author: halls
Date: Fri Jul 13 12:49:45 2007
New Revision: 669

Log:
Fix download continue/abort on client disconnect


Modified:
   trunk/apt_proxy/cache.py

Modified: trunk/apt_proxy/cache.py
==============================================================================
--- trunk/apt_proxy/cache.py	(original)
+++ trunk/apt_proxy/cache.py	Fri Jul 13 12:49:45 2007
@@ -118,6 +118,11 @@
             # File needs to be decompressed
             self.filetype.decompressor(self)
 
+        self.logstr = "Req " + self.filename
+
+    def logPrefix(self):
+        return self.logstr
+
     def add_request(self, request):
         """
         A new request has been received for this file
@@ -165,27 +170,28 @@
         log.debug("Last request removed for %s [%s]" % (self.file_path, self.stateToString()),'CacheEntry')
         if self.state == self.STATE_CONNECTING:
             self.backend.stop_download(self, request)
+            if self.fetcher is not None:
+                self.fetcher.cancel_download()
         elif (self.state == self.STATE_DOWNLOAD and
              not self.factory.config.complete_clientless_downloads ):
             self.backend.stop_download(self, request)
-        if self.state == self.STATE_SENT:
+            if (self.factory.config.complete_clientless_downloads == False
+                and self.fetcher is not None):
+                # Cancel download in progress
+                log.debug("cancelling download (set complete_clientless_downloads"
+                           " to continue)",
+                          'cacheEntry')
+                self.fetcher.cancel_download()
+
+            if self.streamfile is not None:
+                name = self.streamfile.name
+                log.debug("Deleting temporary file (%s)" % name,'cacheEntry')
+                self.streamfile.close()
+                self.streamfile = None
+                os.remove(name)
+        elif self.state == self.STATE_SENT:
             self.requests_done()
 
-            
-        # TODO - fixme
-        #if (self.factory.config.complete_clientless_downloads == False
-             #and self.state == self.STATE_DOWNLOAD
-             #and self.fetcher is not None):
-            ## Cancel download in progress
-            #log.debug("cancelling download (set complete_clientless_downloads to continue)",'cacheEntry')
-            #self.fetcher.cancel_download()
-
-        #if self.streamfile is not None and self.state == self.STATE_DOWNLOAD:
-            #name = self.streamfile.name
-            #log.debug("Deleting temporary file (%s)" % name,'cacheEntry')
-            #self.streamfile.close()
-            #self.streamfile = None
-            #os.remove(name)
 
     def requests_done(self):
         """



More information about the apt-proxy-devel mailing list