Ticket #1679: fix-1679.diff.txt

File fix-1679.diff.txt, 1.8 KB (added by zooko, at 2012-10-28T03:48:19Z)
Line 
1diff -rN -u old-1.9.2/src/allmydata/immutable/filenode.py new-1.9.2/src/allmydata/immutable/filenode.py
2--- old-1.9.2/src/allmydata/immutable/filenode.py       2012-10-27 21:48:02.750754675 -0600
3+++ new-1.9.2/src/allmydata/immutable/filenode.py       2012-10-27 21:48:02.944087254 -0600
4@@ -22,6 +22,7 @@
5 from allmydata.immutable.downloader.status import DownloadStatus
6 
7 class CiphertextFileNode:
8+    # XXX should we make an ISomething interface for this? Maybe maybe IReadable subclass that ISomething?
9     def __init__(self, verifycap, storage_broker, secret_holder,
10                  terminator, history):
11         assert isinstance(verifycap, uri.CHKFileVerifierURI)
12@@ -87,6 +88,8 @@
13     def raise_error(self):
14         pass
15 
16+    def is_mutable(self):
17+        return False
18 
19     def check_and_repair(self, monitor, verify=False, add_lease=False):
20         verifycap = self._verifycap
21diff -rN -u old-1.9.2/src/allmydata/nodemaker.py new-1.9.2/src/allmydata/nodemaker.py
22--- old-1.9.2/src/allmydata/nodemaker.py        2012-10-27 21:48:02.774087918 -0600
23+++ new-1.9.2/src/allmydata/nodemaker.py        2012-10-27 21:48:02.940753934 -0600
24@@ -72,12 +72,12 @@
25             cap = uri.from_string(bigcap, deep_immutable=deep_immutable,
26                                   name=name)
27             node = self._create_from_single_cap(cap)
28-            if node:
29-                self._node_cache[memokey] = node  # note: WeakValueDictionary
30-            else:
31+            if node is None:
32                 # don't cache UnknownNode
33                 node = UnknownNode(writecap, readcap,
34                                    deep_immutable=deep_immutable, name=name)
35+            elif node.is_mutable():
36+                self._node_cache[memokey] = node  # note: WeakValueDictionary
37 
38         if self.blacklist:
39             si = node.get_storage_index()