From: Brian Warner <warner@allmydata.com>
Date: Wed, 29 Oct 2008 01:17:20 +0000 (-0700)
Subject: web/filenode: oops, fix test failures, not everything has a storage index
X-Git-Url: https://git.rkrishnan.org/simplejson/components/%22doc.html/flags/%3C?a=commitdiff_plain;h=4c2235fcefc4806c6375461ba30a18cc94819570;p=tahoe-lafs%2Ftahoe-lafs.git

web/filenode: oops, fix test failures, not everything has a storage index
---

diff --git a/src/allmydata/test/common.py b/src/allmydata/test/common.py
index 1898acc6..d09ebff2 100644
--- a/src/allmydata/test/common.py
+++ b/src/allmydata/test/common.py
@@ -46,6 +46,9 @@ class FakeCHKFileNode:
         return self.my_uri
     def get_verifier(self):
         return IURI(self.my_uri).get_verifier()
+    def get_storage_index(self):
+        return self.storage_index
+
     def check(self, monitor, verify=False):
         r = CheckerResults(self.storage_index)
         is_bad = self.bad_shares.get(self.storage_index, None)
diff --git a/src/allmydata/web/filenode.py b/src/allmydata/web/filenode.py
index 472f782c..4c200794 100644
--- a/src/allmydata/web/filenode.py
+++ b/src/allmydata/web/filenode.py
@@ -296,6 +296,8 @@ class MutableDownloadable:
         self.node = node
     def get_size(self):
         return self.size
+    def is_mutable(self):
+        return True
     def read(self, consumer, offset=0, size=None):
         d = self.node.download_best_version()
         d.addCallback(self._got_data, consumer, offset, size)
@@ -358,8 +360,11 @@ class FileDownloader(rend.Page):
             # TODO: look more closely at Request.setETag and how it interacts
             # with a conditional "if-etag-equals" request, I think this may
             # need to occur after the setResponseCode below
-            req.setETag(base32.b2a(self.filenode.get_storage_index()))
-            # TODO: for mutable files, use the roothash
+            si = self.filenode.get_storage_index()
+            if si:
+                req.setETag(base32.b2a(si))
+        # TODO: for mutable files, use the roothash. For LIT, hash the data.
+        # or maybe just use the URI for CHK and LIT.
         rangeheader = req.getHeader('range')
         if rangeheader:
             # adapted from nevow.static.File