From: Brian Warner 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/architecture.txt?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