From 4c2235fcefc4806c6375461ba30a18cc94819570 Mon Sep 17 00:00:00 2001 From: Brian Warner Date: Tue, 28 Oct 2008 18:17:20 -0700 Subject: [PATCH] web/filenode: oops, fix test failures, not everything has a storage index --- src/allmydata/test/common.py | 3 +++ src/allmydata/web/filenode.py | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) 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 -- 2.45.2