summaryrefslogtreecommitdiff
blob: 3ad0529ed16ad21a453356078a20b9d09c18daef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Author: Matthew Ogilvie
Date:   Sun Dec 28 20:14:15 2014 -0700

    honor x-unique-cache-name header in flat mode, if present
    
    This allows things like different versions of the adobe-flash
    downloader that are given different names in a flat download
    directory (like in gentoo) to work in an http-replicator cache
    as well.  As long as the fetcher passes the custom name through
    the experimental header...
    
    See gentoo bug # 442874

diff --git a/http-replicator b/http-replicator
index 19ae427..befe9f2 100755
--- a/http-replicator
+++ b/http-replicator
@@ -311,7 +311,12 @@ class HttpClient (Http):
 			self.log.info('requested range: bytes %s to %s' % self.range) # log request
 
 		head = ''
-		for tail in self.path.split('/'): # iterate over items in path
+		adjUrlPath = self.path
+		if not self.direct and self.flat:
+			uniqueCacheName = body.get('x-unique-cache-name')
+			if uniqueCacheName:
+				adjUrlPath = uniqueCacheName
+		for tail in adjUrlPath.split('/'): # iterate over items in path
 			head = os.path.join(head, tail) # build target path
 			if head in self.alias: # path up till now hos an alias
 				head = self.alias[head] # replace by alias