Index: /Users/vincent/Documents/workspace/angel-app/contrib/twisted/internet/abstract.py =================================================================== --- /Users/vincent/Documents/workspace/angel-app/contrib/twisted/internet/abstract.py (revision 840) +++ /Users/vincent/Documents/workspace/angel-app/contrib/twisted/internet/abstract.py (working copy) @@ -343,6 +343,12 @@ def isIPAddress(addr): + return (isIPv4Address(addr) or isIPv6Address(addr)) + +def isIPv6Address(addr): + return True + +def isIPv4Address(addr): parts = string.split(addr, '.') if len(parts) == 4: try: Index: /Users/vincent/Documents/workspace/angel-app/contrib/twisted/internet/base.py =================================================================== --- /Users/vincent/Documents/workspace/angel-app/contrib/twisted/internet/base.py (revision 840) +++ /Users/vincent/Documents/workspace/angel-app/contrib/twisted/internet/base.py (working copy) @@ -326,7 +326,9 @@ """ if not name: # XXX - This is *less than* '::', and will screw up IPv6 servers - return defer.succeed('0.0.0.0') + #return defer.succeed('0.0.0.0') + # workaround for IPv6 + return defer.succeed('::') if abstract.isIPAddress(name): return defer.succeed(name) return self.resolver.getHostByName(name, timeout) Index: /Users/vincent/Documents/workspace/angel-app/contrib/twisted/internet/tcp.py =================================================================== --- /Users/vincent/Documents/workspace/angel-app/contrib/twisted/internet/tcp.py (revision 840) +++ /Users/vincent/Documents/workspace/angel-app/contrib/twisted/internet/tcp.py (working copy) @@ -663,7 +663,11 @@ This indicates the server's address. """ - return address.IPv4Address('TCP', *(self.socket.getsockname() + ('INET',))) + log.err("BAR: " + `(self.socket.getsockname())`) + aa = self.socket.getsockname() + # more IPv6 hackery + return address.IPv4Address('TCP', *((aa[0], aa[1]) + ('INET',))) + #return address.IPv4Address('TCP', *(self.socket.getsockname() + ('INET',))) def getPeer(self): """Returns an IPv4Address. @@ -670,7 +674,10 @@ This indicates the client's address. """ - return address.IPv4Address('TCP', *(self.client + ('INET',))) + log.err("BAZ:" + `self.client`) + # this is most certainly not an IPv4 address, but hey... + return address.IPv4Address('TCP', *((self.client[0], self.client[1]) + ('INET',))) + #return address.IPv4Address('TCP', *(self.client + ('INET',))) class Port(base.BasePort, _SocketCloser): """I am a TCP server port, listening for connections. @@ -686,7 +693,8 @@ implements(interfaces.IListeningPort) - addressFamily = socket.AF_INET + #addressFamily = socket.AF_INET + addressFamily = socket.AF_INET6 socketType = socket.SOCK_STREAM transport = Server @@ -802,7 +810,10 @@ break raise - protocol = self.factory.buildProtocol(self._buildAddr(addr)) + log.err("FOO: " + `addr`) + # IPv6 workaround + #protocol = self.factory.buildProtocol(self._buildAddr(addr)) + protocol = self.factory.buildProtocol(self._buildAddr((addr[0], addr[1]))) if protocol is None: skt.close() continue