Commit 7948d099 authored by Hanno Schlichting's avatar Hanno Schlichting

Backport IPv6 changes from trunk

parent b494f26a
......@@ -23,6 +23,8 @@ Bugs Fixed
Features Added
++++++++++++++
- Add preliminary IPv6 support to ZServer.
- Updated to Zope Toolkit 1.0.2.
- Updated distributions:
......@@ -31,6 +33,7 @@ Features Added
- Products.BTreeFolder2 = 2.13.3
- Products.ZCatalog = 2.13.8
- python-gettext = 1.1.1
- ZConfig = 2.9.0
2.13.5 (2011-02-23)
-------------------
......
......@@ -22,3 +22,4 @@ tempstorage = svn ^/tempstorage/trunk
zExceptions = svn ^/zExceptions/trunk
ZODB3 = svn ^/ZODB/trunk
ZopeUndo = svn ^/ZopeUndo/trunk
ZConfig = svn ^/ZConfig/trunk
......@@ -35,7 +35,9 @@ class ServerFactory:
ip = socket.gethostbyname(defaulthost)
self._set_default_host(defaulthost, ip)
else:
self.ip = socket.gethostbyname(self.host)
address_info = socket.getaddrinfo(self.host, self.port)
ips = [info[4][0] for info in address_info]
self.ip = ips[0]
self.dnsresolver = dnsresolver
self.module = module
self.cgienv = env
......
......@@ -542,7 +542,12 @@ class http_server (asyncore.dispatcher):
self.ip = ip
self.port = port
asyncore.dispatcher.__init__ (self)
self.create_socket (socket.AF_INET, socket.SOCK_STREAM)
if ':' in ip:
socket_type = socket.AF_INET6
else:
socket_type = socket.AF_INET
self.create_socket (socket_type, socket.SOCK_STREAM)
self.handlers = []
......@@ -555,7 +560,10 @@ class http_server (asyncore.dispatcher):
# lower this to 5 if your OS complains
self.listen (1024)
host, port = self.socket.getsockname()
name = self.socket.getsockname()
host = name[0]
port = name[1]
if not ip:
self.log_info('Computing default hostname', 'warning')
try:
......
......@@ -134,6 +134,22 @@ class ZServerConfigurationTestCase(BaseTest, WarningInterceptor):
self.assertEqual(server.port, 9381)
server.close()
def test_http_over_ipv6(self):
factory = self.load_factory("""\
<http-server>
address [::1]:81
</http-server>
""")
self.assert_(isinstance(factory,
ZServer.datatypes.HTTPServerFactory))
self.assertEqual(factory.host, "::1")
self.assertEqual(factory.port, 81)
self.check_prepare(factory)
server = factory.create()
self.assertEqual(server.ip, '::1')
self.assertEqual(server.port, 9381)
server.close()
def test_http_factory_defaulthost(self):
factory = self.load_factory("""\
<http-server>
......
......@@ -35,6 +35,7 @@ manuel = 1.1.1
mechanize = 0.2.3
unittest2 = 0.5.1
python-gettext = 1.1.1
ZConfig = 2.9.0
ZODB3 = 3.10.2
zope.testing = 3.9.4
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment