[tahoe-dev] [tahoe-lafs] #833: reject mutable children when *reading* an immutable dirnode

tahoe-lafs trac at allmydata.org
Sat Jan 16 09:28:10 PST 2010


#833: reject mutable children when *reading* an immutable dirnode
---------------------------------------------+------------------------------
 Reporter:  warner                           |           Owner:  warner  
     Type:  defect                           |          Status:  assigned
 Priority:  critical                         |       Milestone:  1.6.0   
Component:  code-dirnodes                    |         Version:  1.5.0   
 Keywords:  integrity forward-compatibility  |   Launchpad_bug:          
---------------------------------------------+------------------------------

Comment(by davidsarah):

 Overnight I thought of the following additional option, which has similar
 forward-compatibility advantages to FORWARD_COMPAT_METADATA but has fewer
 constraints on the  future URL design:

  * PREFIXED_RO_URI: include a directory entry for an unknown child link of
 an immutable directory, but prefix {{{ro_uri}}} with "{{{imm.}}}" (and
 omit {{{rw_uri}}}).

 Note that this doesn't imply that the new format would have to use
 "{{{imm.}}}" -- that prefix would ''only'' occur on URLs from the past.
 When we add support for the new format, the future client would see the
 "{{{imm.}}}" prefix and check that the cap is immutable; if it is then it
 would work correctly.

 (We might end up registering both "{{{lafs:}}}" and "{{{imm.lafs:}}}" in
 order to make this work in more cases, but I don't think that's a problem,
 and it's not strictly necessary. Anyway, there are already
 [http://www.iana.org/assignments/uri-schemes.html URI schemes] containing
 '{{{.}}}'.)

 In retrospect this is similar to something Zooko suggested on IRC ('mangle
 the cap by prepending "I'M NOT REALLY A CAP"'), except that "{{{imm.}}}"
 just means that the future client must check that it is an immutable cap.

 The effect of prepending "{{{imm.}}}" with the current webapi is to
 display {{{"GET unknown: can only do t=info, not t="}}}, which is safe but
 ugly. We should fix that (it's ticket #884).

-- 
Ticket URL: <http://allmydata.org/trac/tahoe/ticket/833#comment:21>
tahoe-lafs <http://allmydata.org>
secure decentralized file storage grid


More information about the tahoe-dev mailing list