Fix introweb display for mixed V1/V2 clients. Closes #1721.
authorBrian Warner <warner@lothar.com>
Mon, 23 Apr 2012 22:02:22 +0000 (18:02 -0400)
committerBrian Warner <warner@lothar.com>
Mon, 23 Apr 2012 22:30:53 +0000 (18:30 -0400)
commit84c9f3bfb4bdfde0e771d6ee291689b0a691e623
treea2ae8db91771bd8608b9a7277f42512a8329c948
parent080c136daf37b13a16fcde15dc8260e87a6fa6b6
Fix introweb display for mixed V1/V2 clients. Closes #1721.

This significantly cleans up the IntroducerServer web-status renderers.
Instead of poking around in the introducer's internals, now the web-status
renderers get clean AnnouncementDescriptor and SubscriberDescriptor
objects. They are still somewhat foolscap-centric, but will provide a clean
abstraction boundary for future improvements.

The specific #1721 bug was that old (V1) subscribers were handled by
wrapping their RemoteReference in a special WrapV1SubscriberInV2Interface
object, but the web-status display was trying to peek inside the object to
learn what host+port it was associated with, and the wrapper did not proxy
those extra attributes.

A test was added to test_introducer to make sure the introweb page renders
properly and at least contains the nicknames of both the V1 and V2 clients.
src/allmydata/introducer/common.py
src/allmydata/introducer/old.py
src/allmydata/introducer/server.py
src/allmydata/test/test_introducer.py
src/allmydata/util/rrefutil.py
src/allmydata/web/introweb.py