Wed Jul 22 16:16:54 MDT 2009  Shawn Willden <shawn-ta...@willden.org>
  * Client support for listening on multiple ports
New patches:

[Client support for listening on multiple ports
Shawn Willden <shawn-ta...@willden.org>**20090722221654
 Ignore-this: 64ef30e5762a9e59e0644b0044f59ba7
] {
hunk ./docs/frontends/webapi.txt 22
 section of $NODEDIR/tahoe.cfg will cause the node to run a webserver on port
 3456.
 
-This string is actually a Twisted "strports" specification, meaning you can
-get more control over the interface to which the server binds by supplying
-additional arguments. For more details, see the documentation on
+This string is actually a comma-separated list of Twisted "strports"
+specification, meaning you can get more control over the interface to which
+the server binds by supplying additional arguments, and you can bind the
+server to multiple interfaces by providing multiple port
+SPECIFICATIONS78. For more details, see the documentation on
 twisted.application.strports:
hunk ./docs/frontends/webapi.txt 28
+
 http://twistedmatrix.com/documents/current/api/twisted.application.strports.html
 
 Writing "tcp:3456:interface=127.0.0.1" into the web.port line does the same
hunk ./docs/frontends/webapi.txt 34
 but binds to the loopback interface, ensuring that only the programs on the
 local host can connect. Using
-"ssl:3456:privateKey=mykey.pem:certKey=cert.pem" runs an SSL server.
+"ssl:3456:privateKey=mykey.pem:certKey=cert.pem" runs an SSL server.  Writing
+"tcp:3456,ssl:3457:privateKey=myKey.pem:certKey-cert.pem" will run both a
+normal HTTP server on port 3456 and an SSL server on port 3457.
 
 This webport can be set when the node is created by passing a --webport
 option to the 'tahoe create-client' command. By default, the node listens on
hunk ./src/allmydata/test/common.py 470
         def _connected(res):
             log.msg("CONNECTED")
             # now find out where the web port was
-            l = self.clients[0].getServiceNamed("webish").listener
+            l = self.clients[0].getServiceNamed("webish").listeners[0]
             port = l._port.getHost().port
             self.webish_url = "http://localhost:%d/"; % port
             if self.numclients >=4:
hunk ./src/allmydata/test/common.py 475
                 # and the helper-using webport
-                l = self.clients[3].getServiceNamed("webish").listener
+                l = self.clients[3].getServiceNamed("webish").listeners[0]
                 port = l._port.getHost().port
                 self.helper_webish_url = "http://localhost:%d/"; % port
         d.addCallback(_connected)
hunk ./src/allmydata/test/common.py 508
         def _maybe_get_webport(res):
             if num == 0:
                 # now find out where the web port was
-                l = self.clients[0].getServiceNamed("webish").listener
+                l = self.clients[0].getServiceNamed("webish").listeners[0]
                 port = l._port.getHost().port
                 self.webish_url = "http://localhost:%d/"; % port
         d.addCallback(_maybe_get_webport)
hunk ./src/allmydata/test/no_network.py 240
                                num_servers=num_servers,
                                client_config_hooks=client_config_hooks)
         self.g.setServiceParent(self.s)
-        self.client_webports = [c.getServiceNamed("webish").listener._port.getHost().port
+        self.client_webports = [c.getServiceNamed("webish").listeners[0]._port.getHost().port
                                 for c in self.g.clients]
         self.client_baseurls = ["http://localhost:%d/"; % p
                                 for p in self.client_webports]
hunk ./src/allmydata/test/test_web.py 123
         self.staticdir = self.mktemp()
         self.ws = s = webish.WebishServer(self.s, "0", staticdir=self.staticdir)
         s.setServiceParent(self.s)
-        self.webish_port = port = s.listener._port.getHost().port
+        self.webish_port = port = s.listeners[0]._port.getHost().port
         self.webish_url = "http://localhost:%d"; % port
 
         l = [ self.s.create_empty_dirnode() for x in range(6) ]
hunk ./src/allmydata/webish.py 140
         self.site.remember(MyExceptionHandler(), inevow.ICanHandleException)
         if staticdir:
             self.root.putChild("static", static.File(staticdir))
-        s = strports.service(webport, site)
-        s.setServiceParent(self)
-        self.listener = s # stash it so the tests can query for the portnum
+        self.listeners = []
+        print webport.split(',')
+        for port in webport.split(','):
+            print port
+            s = strports.service(port, site)
+            s.setServiceParent(self)
+            self.listeners.append(s) # stash it so the tests can query
+                                     # for the portnum
         self._started = defer.Deferred()
         if nodeurl_path:
             self._started.addCallback(self._write_nodeurl_file, nodeurl_path)
hunk ./src/allmydata/webish.py 158
 
     def _write_nodeurl_file(self, junk, nodeurl_path):
         # what is our webport?
-        s = self.listener
+        s = self.listeners[0]
         if isinstance(s, internet.TCPServer):
             base_url = "http://127.0.0.1:%d/"; % s._port.getHost().port
         elif isinstance(s, internet.SSLServer):
}

Context:

[docs: introducing "provider-independent security"; Nathan Wilcox gave me good advice on how to be more specific in terminology when making security claims so as not fit in with the background noise of overblown and indefensible claims that is always buzzing in the security world
zo...@zooko.com**20090722031750
 Ignore-this: 4224794191b49144038dfed0eb7a3b1e
] 
[NEWS: more minor edits
Brian Warner <war...@lothar.com>**20090722024522
 Ignore-this: e2c199cfdbaa32a125819f14df971d45
] 
[docs: edit about.html, add P.S. about expansion of LAFS, add Andrew Orlowski to media list
zo...@zooko.com**20090722022430
 Ignore-this: 6717610239104d273a417769c8cf66a5
] 
[docs: update NEWS, about.html, relnotes-short.txt, and known_issues.txt in preparation for v1.5.0
zo...@zooko.com**20090721234311
 Ignore-this: bc81915d7d4f48c231fa86f0b8308d83
 Especially note that strong claims of specialness that I've added, e.g. in about.html .
] 
[debian/control: update binary package deps to pycryptopp-0.5.15
Brian Warner <war...@lothar.com>**20090721035025
 Ignore-this: c6a29b5b6dc63c95f20ae37dc21b3c53
] 
[docs: a couple of minor edits to NEWS and docs/architecture.txt
zo...@zooko.com**20090721014112
 Ignore-this: f82d77a46e442d38d5a17609f4b3dfa5
] 
[Touch up #705 changes:
Brian Warner <war...@lothar.com>**20090720153803
 Ignore-this: 583517a3d80c2c1c6a397b6934b78b73
 
  webapi.txt: clarify replace=only-files argument, mention replace= on POST t=uri
  test_cli.py: insert whitespace between logical operations
  web.common.parse_replace_arg: make it case-insensitive, to match the docs
] 
[CREDITS: format to <= 79 columns, add Marc Tooley, update Kevan Carstensen
zo...@zooko.com**20090720131354
 Ignore-this: 3b8bbf952e69eb26597c7bce15e830e0
] 
[iputil: added "openbsd3" => "bsd" and "openbsd4" => "bsd" per tdelaet's report; should fix ticket #768
zo...@zooko.com**20090720131314
 Ignore-this: 3e7b1ec58506d75834ab9a3ac911b1b4
] 
[Add tests for tahoe mv behavior
ke...@isnotajoke.com**20090720034609
 Ignore-this: 9f20cc5c19ded743c4b129cdf16e04d9
] 
[Add tests for tahoe mv help text
ke...@isnotajoke.com**20090720034553
 Ignore-this: deb3b6f00b635ea1985c2ba9d68a715
] 
[Implement more clearly defined moving semantics in tahoe_mv.py
ke...@isnotajoke.com**20090720034523
 Ignore-this: aaa592156f6fa93cb087824a74b0f2cb
] 
[Update tahoe mv help text.
ke...@isnotajoke.com**20090720034503
 Ignore-this: 9124164acf459a4aa030c25e286bcb19
] 
[Add tests for parse_replace_arg()
ke...@isnotajoke.com**20090720034705
 Ignore-this: 3574c2dbbfe250e4cba2f32c02fdafd3
] 
[Add tests for new PUT behavior
ke...@isnotajoke.com**20090720034632
 Ignore-this: a64a8e8767b4d03d87445104475b045d
] 
[Alter Adder + Adder tests to look for 'only-files' instead of 'only_files'
ke...@isnotajoke.com**20090720034318
 Ignore-this: 65d66133f4db6c082e716864bc273e13
] 
[Alter filenode.py to use parse_replace_arg
ke...@isnotajoke.com**20090720034831
 Ignore-this: b7c5b3f668ac4ae45653b882cd6e4fc8
] 
[Alter directory.py to use parse_replace_arg() 
ke...@isnotajoke.com**20090720034746
 Ignore-this: 4f9496bc9dcfe0d6ec78923883ab2351
] 
[Add a function to parse arguments for the replace parameter
ke...@isnotajoke.com**20090720034723
 Ignore-this: f27aae3befa76b7bec1b697b5588332
] 
[Update webapi docs to reference new PUT behavior.
ke...@isnotajoke.com**20090720034447
 Ignore-this: 981c43767ee4d7d3e7711dfbea89b590
] 
[trivial: remove obsolete comment text
zo...@zooko.com**20090720130843
 Ignore-this: 6253ec8d29f31e7996dead1caf7c78b7
] 
[docs/backupdb.txt: small fixes, thanks to David Triendl
"Brian Warner <war...@lothar.com>"**20090720010456] 
[directories: minor change: fix warning message from the benchmarking script
zo...@zooko.com**20090720002114
 Ignore-this: 89498e477a70fe9f7d204b592c81785e
] 
[Add unit tests for the Adder in dirnode.py
ke...@isnotajoke.com**20090718195049
 Ignore-this: 93434af3656249962cf9bc6d7ac5bc01
] 
[Add 'only_files' option to the overwrite field in Adder
ke...@isnotajoke.com**20090718030010
 Ignore-this: 56605f6740f692549acdd9b236ce6443
] 
[rename NewDirectoryNode to DirectoryNode, NewDirectoryURI to DirectoryURI
Brian Warner <war...@lothar.com>**20090717221549
 Ignore-this: 5e6226e8d9fba824bf45f67ea5821e0e
] 
[interfaces: remove dead code, FileNode_ and EncryptedThing constraints
Brian Warner <war...@lothar.com>**20090717221139
 Ignore-this: d4faaa37a6d9fbc70e40c43067385582
] 
[introduction/storage-broker: add assertions of serverids being the right type and of internal consistency between the number of storage servers known and the number of storage servers
zo...@zooko.com**20090717135221
 Ignore-this: a315123bcea8eb0eb13172b0919d8753
] 
[upload: fix #758 recursion-loop in peer-selection when servers report errors.
Brian Warner <war...@lothar.com>**20090717050709
 Ignore-this: 9c28ef13649c4475ede23815b69e51fd
 The bug was in the code that handles a third-or-later pass, and was
 previously untested.
] 
[setup: clarify the way that we host two directories of dependencies: one is source distributions and the other is binary distributions
zo...@zooko.com**20090716160657
 Ignore-this: 500ef010bc7163ecff86b36461057835
] 
['tahoe stats': tolerate empty directories. Closes #693.
Brian Warner <war...@lothar.com>**20090715075109
 Ignore-this: a713325132e05d5d122111f978fe5e14
] 
[node.py: record pid in twisted log at startup. Closes #476.
Brian Warner <war...@lothar.com>**20090715072929
 Ignore-this: c9054bbf0e114659ac49419e7c658ab6
] 
[Allow tests to pass with -OO by turning some AssertionErrors (the ones that
Brian Warner <war...@lothar.com>**20090715064510
 Ignore-this: db08d38b720a5260b5d1dc6d6a9878c1
 we actually exercise during tests) into more specific exceptions, so they
 don't get optimized away. The best rule to follow is probably this: if an
 exception is worth testing, then it's part of the API, and AssertionError
 should never be part of the API. Closes #749.
] 
[setup: tell build to search a directory (hosted on allmydata.org) which contains eggs
zo...@zooko.com**20090715025246
 Ignore-this: 1fb41208f777862cc387c3995b01acc
] 
[wui: fix test for welcome page
zo...@zooko.com**20090715033429
 Ignore-this: b36d18be67d873b6d59cd11a849ae627
] 
[wui: adjust headers/titles and "Attach something to this directory" text in accordance with #691
zo...@zooko.com**20090715025814
 Ignore-this: b7ab31947bdadc8c7c56f5037275de71
 Also name it as "TahoeLAFS" in this text.
] 
[mac: emit the stdout and stderr from a failed call to Allmydata (this is very useful diagnostic info)
zo...@zooko.com**20090715014338
 Ignore-this: f34de1aabfc94026fc6ecdaf92748342
] 
[mac: improve shutdown and clean-up after the test of the macintosh packaging
zo...@zooko.com**20090714122655
 Ignore-this: f2ba2ca7d16173c8c45a9a1411d419c
] 
[setup: add "test_mac_diskimage" command which attempts to mount and use a .dmg to make sure it has a good Tahoe distribution in it
zo...@zooko.com**20090712230940
 Ignore-this: e889aaf49699429afeb211f7403fec74
] 
[dirnode: finish renaming "iv" to "salt" in the code and the hash tag
zo...@zooko.com**20090713001320
 Ignore-this: 10e41a10934f9748fd55b68f54779824
] 
[dirnode.py/_encrypt_rwcap: rename IV to "salt", which is more accurate
Brian Warner <war...@lothar.com>**20090712235025
 Ignore-this: 1b8d6a4e8667655f52abe2b3be46a0ed
] 
[dirnode.py: security bug: also use child writecap to derive child enc key,
Brian Warner <war...@lothar.com>**20090712234750
 Ignore-this: 13867ebc123b521df60e4013b75716e
 not just the dirnode writecap. The previous code (which only hashed the
 dirnode writecap) would use the same key for all children, which is very bad.
 This is the correct implementation of #750.
] 
[NEWS: update with all recent changes
Brian Warner <war...@lothar.com>**20090711234703
 Ignore-this: 8d96344b0e4634186a63b4a8941254a1
] 
[proposed/mutable-DSA.txt: add some new design criteria
Brian Warner <war...@lothar.com>**20090711132500
 Ignore-this: d7519fd9bbcadc331f9843c33dce0d44
] 
[Use CachingDict instead of dict in dirnode.py
ke...@isnotajoke.com**20090704034301
 Ignore-this: 53f12260176a5170b3599eda54f38e98
] 
[directories: fix semantic conflict between my "keep track of position" optimization patch and Kevan's "cache serialized entries" optimization patch
zo...@zooko.com**20090710032028
 Ignore-this: 46f8b00fd3eca4adf89dec437e65d696
] 
[Modify bench_dirnode.py to use CachingDict.
ke...@isnotajoke.com**20090705223142
 Ignore-this: 9ba62a16fd37ef281368715a887fd9f8
] 
[Add tests for CachingDict, _pack_contents, _unpack_contents
ke...@isnotajoke.com**20090704034328
 Ignore-this: 12f3e989244288c211ba393d3a205111
] 
[trivial: removed unused import noticed by pyflakes
zo...@zooko.com**20090709130513
 Ignore-this: 63257c9e8481fdcf617f04cc48d95d03
] 
[directories: make the IV for the writecaps in directory entries be computed from the secure hash of the writecap itself
zo...@zooko.com**20090705024815
 Ignore-this: cb9cc29f8f0687f2545e95d5b7b42d44
 This makes encoding of directory entries deterministic, and it is also a tad faster on Macbook Pro than getting a random IV with os.urandom(16).
] 
[tests: raise the timeout on pollmixin from 100s to 1000s -- it looks like it may have triggered too eagerly on Zandr's 266 MHz armel
zo...@zooko.com**20090709044729
 Ignore-this: 838b870798dc0f793979398ed4a18c2e
] 
[setup: add sys.maxunicode to the show-tool-versions output in order to investigate http://bugs.python.org/setuptools/issue78
zo...@zooko.com**20090709004533
 Ignore-this: dce4420d5c626258e1033d924e506de2
] 
[immutable: base32-encode the keys to generate cache filenames that will work on all platforms
zo...@zooko.com**20090708152633
 Ignore-this: 782b615c4c35629fee618b39a7175321
] 
[directories: make initialization of the download cache lazy
zo...@zooko.com**20090708004040
 Ignore-this: 3c3714ccc09ae1de811664d52211e143
 If you open up a directory containing thousands of files, it currently computes the cache filename and checks for the cache file on disk immediately for each immutble file in that directory.  With this patch, it delays those steps until you try to do something with an immutable file that could use the cache.
] 
[Add CachingDict dict subclass to dirnode.py
ke...@isnotajoke.com**20090705212345
 Ignore-this: 484bdcecbc1ae25e04bf659abcfcf834
] 
[directories: rename internal data member download_cache to download_cache_dirman (benchmarks set this internal member and use the new name, so changing this makes the bench_dirnode.py work again)
zo...@zooko.com**20090707143404
 Ignore-this: c77f189a864d517c28a54a4cfce8c0a2
] 
[directories: keep track of your position as you decode netstring after netstring from an input buffer instead of copying the trailing part
zo...@zooko.com**20090705025109
 Ignore-this: bee1ae76060fbc920bddb6e839b7dd1a
 This makes decoding linear in the number of netstrings instead of O(N^2).
] 
[directories: in bench_dirnode.py, use a real CacheDirectoryManager instead of a fake one (because CacheDirectoryManager is a significant user of CPU and/or time)
zo...@zooko.com**20090707034119
 Ignore-this: 207a2dc346ca2c01dc7b341e88a0ca0a
] 
[directories: make the profiling behavior of bench_dirnode.py accessible by adding '--profile' to the cmdline
zo...@zooko.com**20090707033035
 Ignore-this: 159c36ac1cafaa4e9a6239025ef9d57b
] 
[setup: increase requirement on pycryptopp to >= 0.5.15
zo...@zooko.com**20090706140815
 Ignore-this: f3839c7c1f9ebff1fcf2eea47ed3c48b
] 
[directories: update the directory benchmarks to exercise the unpack-and-repack functionality, and add optional profiling
zo...@zooko.com**20090705162953
 Ignore-this: 4a1b11c9b1880772c923b3c03e10770b
] 
[test/benchmark: benchmark the time to pack and unpack dirnodes
zo...@zooko.com**20090704224300
 Ignore-this: cd8f6a6ded44a3f6f102f9cd0b60ca62
 See also the prof_benchmarks() function in this file which will run the benchmarks under profiling.
] 
[setup: the mac-exe build (using py2app) requires macholib>=1.2.
zo...@zooko.com**20090703175702
 Ignore-this: ea489a5076f2c9f20f6bfd2807cc5680
 Here is someone else's description of this problem:
 http://rtmpy.org/ticket/7
] 
[clean up debian packaging: we have control files for etch/lenny/sid, and
"Brian Warner <war...@lothar.com>"**20090703072804
 everything else uses one of those. Add dependency on python-pysqlite2 for
 platforms that use py2.4 by default. Update foolscap dependency to 0.4.1.
] 
[update NEWS to cover all recent changes, sort by end-user importance
Brian Warner <war...@lothar.com>**20090703014303
 Ignore-this: 6ddac78075d7547a19712d505818949c
] 
[Tolerate unknown URI types in directory structures. Part of #683.
Brian Warner <war...@lothar.com>**20090703010749
 Ignore-this: afd0e15e2e39d3b87743ec7ccd87054d
 
 The idea is that future versions of Tahoe will add new URI types that this
 version won't recognize, but might store them in directories that we *can*
 read. We should handle these "objects from the future" as best we can.
 Previous releases of Tahoe would just explode. With this change, we'll
 continue to be able to work with everything else in the directory.
 
 The code change is to wrap anything we don't recognize as an UnknownNode
 instance (as opposed to a FileNode or DirectoryNode). Then webapi knows how
 to render these (mostly by leaving fields blank), deep-check knows to skip
 over them, deep-stats counts them in "count-unknown". You can rename and
 delete these things, but you can't add new ones (because we wouldn't know how
 to generate a readcap to put into the dirnode's rocap slot, and because this
 lets us catch typos better).
] 
[test_client.py: minor refactoring of BASECONFIG usage
Brian Warner <war...@lothar.com>**20090703005450
 Ignore-this: bf19b9ae7edeab293068cce2368f9364
] 
[create_node_from_uri: take both writecap+readcap, move logic out of dirnode.py
Brian Warner <war...@lothar.com>**20090702222537
 Ignore-this: 93051498076e90d3f1dc85161ce8247a
] 
[dirnode.py: prepare to preserve both rwcap+rocap when copying
Brian Warner <war...@lothar.com>**20090702211254
 Ignore-this: f128c02da32f86d7e39527a35dfc2e02
 
 This will make it easier to tolerate unknown nodes safely.
] 
[interfaces.py: wrap some lines to 80cols
Brian Warner <war...@lothar.com>**20090702015728
 Ignore-this: e2c777c1e89a684b43ceabeb0042456c
] 
[cli: webopen: when called with no arguments, open the Welcome page
Brian Warner <war...@lothar.com>**20090701200548
 Ignore-this: ae7d6cb42165d0c751926065378343dd
] 
[mutable repairer: skip repair of readcaps instead of throwing an exception.
Brian Warner <war...@lothar.com>**20090701011343
 Ignore-this: 2c24493426cdc1db8f0e3815ee2c5f87
 This should improve the behavior of #625 a bit: at least all the files will
 get repaired.
] 
[interfaces.py: improve ICheckAndRepairResults docs a bit
Brian Warner <war...@lothar.com>**20090701001925
 Ignore-this: 3a57acfee3487c1e071e135743e42c2a
] 
[repairer.py: wrap to 80cols. No code changes.
Brian Warner <war...@lothar.com>**20090701000047
 Ignore-this: 4a84ac95a849be0656d362882876082a
] 
[setup: require pycryptopp>=0.5.14 if on Windows and with Python>=2.6
zo...@zooko.com**20090630184807
 Ignore-this: f7e9beeb5d5613a7c0ffed14d1dda3c6
] 
[edit NEWS
Brian Warner <war...@lothar.com>**20090630174115
 Ignore-this: c4461a2304fcd45bee95e11418693a18
] 
[NEWS: list all user-visible changes since 1.4.1 . Needs lots of editing.
Brian Warner <war...@lothar.com>**20090630170734
 Ignore-this: f606a5d678d0db8065b9f84e796d59b0
] 
[* find-trailing-spaces.py: exit rc=1 if whitespace found, to be a pre-commit hook
Brian Warner <war...@lothar.com>**20090629224658
 Ignore-this: 1465becc923ee04d170e5ee791cf605e
] 
[use 522-bit RSA keys in all unit tests (except one)
Brian Warner <war...@lothar.com>**20090629223124
 Ignore-this: 7a4c3685683ff9da5ceb2d8cb7b19b7
 
 This reduces the total test time on my laptop from 400s to 283s.
 * src/allmydata/test/test_system.py (SystemTest.test_mutable._test_debug):
   Remove assertion about container_size/data_size, this changes with keysize
   and was too variable anyways.
 * src/allmydata/mutable/filenode.py (MutableFileNode.create): add keysize=
 * src/allmydata/dirnode.py (NewDirectoryNode.create): same
 * src/allmydata/client.py (Client.DEFAULT_MUTABLE_KEYSIZE): add default,
   this overrides the one in MutableFileNode
] 
[remove trailing whitespace
Brian Warner <war...@lothar.com>**20090629200358
 Ignore-this: 7a3756618dcfca0a40acb4c3d15f6440
] 
[remove trailing whitespace from some util classes
Brian Warner <war...@lothar.com>**20090629200341
 Ignore-this: ded84c38885d6aabf2691957dde82bf3
] 
[repairer: raise a better exception when faced with a readonly filenode. Still
Brian Warner <war...@lothar.com>**20090626063230
 Ignore-this: a100005b973a6a57566b943073352828
 produces an error, though.
] 
[mutable/filenode.py: set _writekey to None, rather than leaving it missing
Brian Warner <war...@lothar.com>**20090626062022
 Ignore-this: be111c37dabd6c7aa47abd7bf160926e
 
 This will at least turn the really really weird error when a repair of a
 readonly mutable file is attempted into a merely really weird assertion that
 mentions "repair currently requires a writecap".
] 
[one last tweak
Brian Warner <war...@lothar.com>**20090626052627
 Ignore-this: 8d9d045a1ebe774aeed6f7e1cdd36973
] 
[more 'tahoe cp' docs tweaks
Brian Warner <war...@lothar.com>**20090626051652
 Ignore-this: f594c395007af64da3d7302943ef8855
] 
[cli.py: minor tweaks to test posthooks
"Brian Warner <war...@lothar.com>"**20090626024557] 
[cli.py: update comments on 'tahoe cp' --help a bit
Brian Warner <war...@lothar.com>**20090626023837
 Ignore-this: 4090b06896542fbf260d808e8a991cea
] 
[cli: add some --help text to 'tahoe cp'
war...@lothar.com**20090625235751] 
[make it possible to add/renew-lease from the WUI
Brian Warner <war...@lothar.com>**20090626061824
 Ignore-this: 6fb6a0e8ecfc630464ac37a779078e5
 add add/renew-lease checkbox on the "more info" page check/deep-check forms
] 
[hush pyflakes
war...@lothar.com**20090625021809] 
[Split out NoSharesError, stop adding attributes to NotEnoughSharesError, change humanize_failure to include the original exception string, update tests, behave better if humanize_failure fails.
war...@lothar.com**20090625021707] 
[remove introducer/old.py, will create something similar when the RIIntroducer changes
war...@lothar.com**20090624194038] 
[Basically just a trivial platform detection patch for NetBSD.
midnightma...@example.com**20090617233647] 
[check_grid.py: print stderr when a subcommand fails
war...@lothar.com**20090623022833] 
[big rework of introducer client: change local API, split division of responsibilites better, remove old-code testing, improve error logging
war...@lothar.com**20090623021047] 
[web/welcome.xhtml: remove trailing whitespace
war...@lothar.com**20090623020909] 
[rrefutil: add trap_deafref utility, to make the callRemote-plus-ignore-DeadReferenceError-plug-log-other-errors pattern easier
war...@lothar.com**20090623020826] 
[PollMixin: snoop trial's error observer to halt the test early if an error is seen. This turns a lot of timeouts into fast failures.
war...@lothar.com**20090623020731] 
[clean up storage_broker interface: should fix #732
war...@lothar.com**20090621235119
 Ignore-this: fb93cd670e809eed2bc123142dd8d4ff
] 
[hush pyflakes with recent FileTooLarge removal
war...@lothar.com**20090621231757
 Ignore-this: 4231b38c7e9091b0577b07ec99ac2df0
] 
[add docs/proposed/GridID.txt (cleaning out some of my old branches)
war...@lothar.com**20090621191204] 
[docs: remove warning about inability to build modules on py2.6 on Windows with mingw, differentiate between clients and servers, reflow to a consistent column width (79), add hint about firewall/NAT docs.
zo...@zooko.com**20090621175005
 Ignore-this: 85e7c1ccb258317ca4dd37917afb48f5
] 
[setup: copy in misc/show-tools-version.py from zfec -- it prints out platform and setuptools versions
zo...@zooko.com**20090621055846
 Ignore-this: 4e144886ab02414bbaaf0295ce2b337
] 
[docs: start updating the NEWS and relnotes.txt files, add Kevan to CREDITS
zo...@zooko.com**20090621055114
 Ignore-this: 35e05a5739549ffa693d55df51ffcfd
] 
[change max filesize limit tests
ke...@isnotajoke.com**20090620212822
 Ignore-this: 38e7c62a308c3c93e79df4bf72f4f675
 
 Instead of testing to see that the previous SDMF filesize limit was being
 obeyed, we now test to make sure that we can insert files larger than that
 limit.
] 
[remove upper limit on SDMF filesize
ke...@isnotajoke.com**20090620213130
 Ignore-this: 5bc48c7421c73827909a17e651799d0c
] 
[immutable/download: instrument do-you-have-block responses to investigate #732
war...@lothar.com**20090621041209] 
[Makefile: add jaunty support, rearrange debian sections in order of release
war...@lothar.com**20090618050502] 
[test_util: add known-answer tests for hashutil tags
war...@lothar.com**20090618045709] 
[tests: bump up a timeout that expired on Zandr's box
zo...@zooko.com**20090613195703
 Ignore-this: 853000f43665396b3734a99f72bd472d
] 
[util: hooray!  A clean implementation of this simple utility!  Black Dew pointed out that the inverse of time.gmtime() is hidden in the "calendar" module.
zo...@zooko.com**20090613160112
 Ignore-this: 8359cc48ca1b8e2793e8b2afe2050cf4
] 
[util: Brian's horrible hack to figure out how much localtime and utctime differ.  Now we'll see if it works on Windows.
zo...@zooko.com**20090612204556
 Ignore-this: 8c36431da4707da76472956c7750ecbd
] 
[util: oops, time.tzset() doesn't work on Windows -- hopefully the new "London" unit test passes on Windows when we skip tzset() on platforms that don't have it
zo...@zooko.com**20090612000920
 Ignore-this: 7d314b8334cfa3f65f9635e3d3eb727e
] 
[setup: edit install.html to warn Windows users away from Python v2.6
zo...@zooko.com**20090611225506
 Ignore-this: 89ad63eab49ede883ef92f2de5b5fc54
] 
[util: fix time_format.iso_utc_time_to_seconds() so that it works even in London
zo...@zooko.com**20090611221129
 Ignore-this: 14dbb9840587797f848226fdb3645c08
] 
[setup: run the same "make quicktest" on Windows as on non-Windows
zo...@zooko.com**20090611193214
 Ignore-this: d0c78377d3892373ec3d91e9e98bd8bd
 I checked and it behaves about as well on Windows as the previous version did.
] 
[tests: significantly increase timeouts that triggered on Zandr's ARM box
zo...@zooko.com**20090610161043
 Ignore-this: 2b3c556c5166a8267b4b15664d3aadfb
] 
[test: multiple by 10 or so all timeouts that Zandr's ARM box just overran
zo...@zooko.com**20090610125639
 Ignore-this: bf62f063ab46814fd78de55a5fbc9d84
] 
[tests: bump up timeout on a test that timed out on draco
zo...@zooko.com**20090610044628
 Ignore-this: f598b98cbae44dc947937c6ca54c10cb
] 
[tests: raise the timeout for test_cli since Zandr's ARM machine totally burst through the old one
zo...@zooko.com**20090609210509] 
[test_cli.Backup: increase timeout massively, it takes 1200s on zandr's ARM linkstation
war...@lothar.com**20090609052801] 
[tests: double the timeouts on some tests which time-out on Francois's box
zo...@zooko.com**20090609021753
 Ignore-this: b2727b04402f24a9b9123d2f84068106
] 
[tests: bump up timeouts so that the tests can finish before timeout on Francois's little arm box
zo...@zooko.com**20090608225557
 Ignore-this: fb83698338b2f12546cd3e1dcb896d34
] 
[tests: increase timeouts on some other tests that timed-out on Francois's arm box
zo...@zooko.com**20090605143437
 Ignore-this: 2903cc20d914fc074c8d7a6c47740ba6
] 
[tests: bump up the timeout on a bunch of tests that took longer than the default timeout (120s) on François Lenny-armv5tel
zo...@zooko.com**20090605031444
 Ignore-this: 84d67849b1f8edc88bf7001e31b5f7f3
] 
[backup: remove the --no-backupdb command, the handling of "can't import sqlite", and the related tests, and change an error message to more correctly indicate failure to load the database from disk rather than failure to import sqlite module
zo...@zooko.com**20090604173131
 Ignore-this: 8200a9fdfc49243c280ecd1d0c44fa19
 Fixes #728.
] 
[setup: require pysqlite >= v2.0.5. if we are running on Python < 2.5
zo...@zooko.com**20090604154548
 Ignore-this: cf04f46079821df209d01dad2e24b40b
] 
[setup: add pysqlite and sqlite to get_package_versions()
zo...@zooko.com**20090604153728
 Ignore-this: a1dea7fabeab2b08fb0d8d462facdb4d
] 
[more refactoring: move get_all_serverids() and get_nickname_for_serverid() from Client to storage_broker
war...@lothar.com**20090602030750] 
[more storage_broker refactoring: downloader gets a broker instead of a client,
war...@lothar.com**20090602022511
 use Client.get_storage_broker() accessor instead of direct attribute access.
] 
[test_runner.py: remove test_client_no_noise: the issue in question is
war...@lothar.com**20090601225007
 ticketed in http://divmod.org/trac/ticket/2830 and doesn't need a Tahoe-side
 change, plus this test fails on win32 for unrelated reasons (and test_client
 is the place to think about the win32 issue).
] 
[remove plaintext-hashing code from the helper interface, to close #722
war...@lothar.com**20090601224916
 and deny the Helper the ability to mount a partial-information-guessing
 attack. This will probably break compatibility between new clients and very
 old (pre-1.0) helpers.
] 
[start to factor server-connection-management into a distinct 'StorageServerFarmBroker' object, separate from the client and the introducer. This is the starting point for #467: static server selection
war...@lothar.com**20090601210604] 
[mutable: catch and display first error, so code bugs which break all servers get displayed better
war...@lothar.com**20090601210407] 
[misc/run-with-pythonpath.py: exec() the child (on unix), to remove the intermediate process
war...@lothar.com**20090601210137] 
[docs: small edit to about.html
zo...@zooko.com**20090528233422
 Ignore-this: 1cfbb1f8426ed6d63b2d3952e4464ddc
] 
[docs: add links to Tahoe-LAFS for Paranoids and Tahoe-LAFS for Corporates in about.html
zo...@zooko.com**20090528232717
 Ignore-this: 7b70baa700d6b6f6e9ceec4132efe5
] 
[docs: edit about.html and include network-and-reliance-topology.png (loaded from http://allmydata.org )
zo...@zooko.com**20090527150916
 Ignore-this: 44adc61cde8ced8be2f0a7dfc7d95dad
] 
[docs: a few more edits to network-and-reliance-topology.svg
zo...@zooko.com**20090527150458
 Ignore-this: 2eac8c33fe71be25ff809b399c6193c1
] 
[docs: update network-and-reliance-topology.svg for beauty and clarity
zo...@zooko.com**20090527031123
 Ignore-this: 5510914849771900ac29b4312470d84
] 
[docs: update NEWS, relnotes.txt, CREDITS to mention WUI Style
zo...@zooko.com**20090526233654
 Ignore-this: 72d16ec833bc4a22af23d29ea1d5ff8b
] 
[Modify markup of Tahoe web pages to be more amenable to styling; some minor changes of wording.
Kevin Reid <kpr...@mac.com>**20090526232545
 Ignore-this: 8845937f0df6c7ddc07abe3211428a6f
] 
[Tweak wording in directory page: not-read-only is "modifiable", mention creating a directory _in this directory_.
Kevin Reid <kpr...@mac.com>**20090526232414
 Ignore-this: f006ec52ba2051802e025a60bcface56
] 
[Comment on duplication of code/markup found during styling project.
Kevin Reid <kpr...@mac.com>**20090503203442
 Ignore-this: a4b7f9f0ab57d2c03be9ba761be8d854
] 
[Add CSS styles to spiff up the Tahoe WUI's appearance, particularly the welcome page and directories.
Kevin Reid <kpr...@mac.com>**20090503203142
 Ignore-this: 5c50af241c1a958b5180ef2b6a49f626
] 
[Link all Tahoe web pages to the /tahoe_css stylesheet which already exists.
Kevin Reid <kpr...@mac.com>**20090503202533
 Ignore-this: 2ea8d14d3168b9502cf39d5ea3f2f2a8
] 
[Fix broken link from Provisioning to Reliability page.
Kevin Reid <kpr...@mac.com>**20090501191050
 Ignore-this: 56dc1a5e659b70cc02dc4df7b5d518cd
] 
[docs: network-and-reliance-topology.svg: nicer server icons, mv out of the "specifications" subdir
zo...@zooko.com**20090526165842
 Ignore-this: 8f47ab3a0ab782c1f0d46e10bcaebe5b
] 
[docs: update network-and-reliance-topology.svg
zo...@zooko.com**20090526163105
 Ignore-this: 2b864b4ed8743d4a15dfbb7eff3fa561
] 
[accounting-overview.txt: more edits
war...@lothar.com**20090523190359] 
[accounting-overview.txt: small edits
war...@lothar.com**20090523184011] 
[_auto_deps.py: require foolscap-0.4.1, which adds an important fix for py2.4
war...@lothar.com**20090523011103] 
[immutable/encode.py: tolerate immediate _remove_shareholder by copying the
war...@lothar.com**20090522184424
 landlord list before iterating over it. This can probably only happen in unit
 tests, but cleaning it up makes certain test failures easier to analyze.
] 
[switch to using RemoteException instead of 'wrapped' RemoteReferences. Should fix #653, the rref-EQ problem
war...@lothar.com**20090522004632] 
[switch all foolscap imports to use foolscap.api or foolscap.logging
war...@lothar.com**20090522003823] 
[_auto_deps.py: bump our foolscap dependency to 0.4.0, since I'm about to start using its new features
war...@lothar.com**20090522002100] 
[test_runner.py: fix minor typo
war...@lothar.com**20090520033620] 
[setup: fix bug (wrong import) in error message, as noticed by pyflakes
zo...@zooko.com**20090519195642
 Ignore-this: f1b9f8c00b46c1b5f2f20e5fc424f341
] 
[setup: fix trivial bug in recent patch to test base64.py at startup
zo...@zooko.com**20090519195129
 Ignore-this: f6be038f74b53ca69e7109fe34adfbc
] 
[setup: make Tahoe exit at startup with a useful error message if the base64.py module is buggy (fixes part of #710)
zo...@zooko.com**20090519194555
 Ignore-this: aa4d398235ddca8d417d61c9688e154
] 
[test_introducer.py: add a test for the python2.4.0/2.4.1 bug in base64.b32decode
war...@lothar.com**20090519034101] 
[immutable WriteBucketProxy: use pipeline to speed up uploads by overlapping roundtrips, for #392
war...@lothar.com**20090518234422] 
[util/pipeline.py: new utility class to manage size-limited work pipelines, for #392
war...@lothar.com**20090518234326] 
[docs: add a diagram that I'm about to show to the Boulder Linux Users Group: network-and-reliance-topology.svg
zo...@zooko.com**20090514232059
 Ignore-this: 2420c0a7c254c9f0f2349d9130490d33
] 
[tests: mark test_runner as coded in utf-8 instead of ascii
zo...@zooko.com**20090507223151
 Ignore-this: ccf1ba9e5a9b53602701a36f9fdb545e
] 
[tests: raise timeout on test_runner.RunNode.test_introducer from 120s to 240s, since it hit the 120s time-out on François Lenny-armv5tel
zo...@zooko.com**20090507215012
 Ignore-this: ba18fe6832ba255d4971e8f623ed7da5
] 
[setup: fix comment in setup.py
zo...@zooko.com**20090507215003
 Ignore-this: c46ef664630d52733138ef7fbc551c1c
] 
[docs: how_to_make_a_tahoe_release.txt: a couple of small edits
zo...@zooko.com**20090507214932
 Ignore-this: ae92aa835ad369f4b9e6e49d681957a3
] 
[.darcs-boringfile: also ignore .gitignore
war...@allmydata.com**20090415210550
 Ignore-this: d29db314a1e506f6240859559436b4c3
] 
[.darcs-boringfile: ignore .git, I'm starting to play around with it
war...@allmydata.com**20090415205929
 Ignore-this: 89234453516483c9586cd6e1351e88b5
] 
[fix quicktest: stop using setuptools, add misc/run-with-pythonpath.py, to make it run faster
war...@lothar.com**20090414201400] 
[TAG allmydata-tahoe-1.4.1
zo...@zooko.com**20090414025636
 Ignore-this: de78fc32364c83e9f4e26b5abcfdea4a
] 
Patch bundle hash:
d1cda8838eea64563aa8fbf2f43061d2e1658144
_______________________________________________
tahoe-dev mailing list
tahoe-dev@allmydata.org
http://allmydata.org/cgi-bin/mailman/listinfo/tahoe-dev

Reply via email to