[telepathy-salut/master] import ipv6.py from Sjoerd
Guillaume Desmottes
guillaume.desmottes at collabora.co.uk
Wed Apr 1 08:29:47 PDT 2009
---
tests/twisted/ipv6.py | 56 +++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 56 insertions(+), 0 deletions(-)
create mode 100644 tests/twisted/ipv6.py
diff --git a/tests/twisted/ipv6.py b/tests/twisted/ipv6.py
new file mode 100644
index 0000000..54b5dd9
--- /dev/null
+++ b/tests/twisted/ipv6.py
@@ -0,0 +1,56 @@
+import socket
+from twisted.internet import tcp
+
+class Ipv6Server(tcp.Server):
+ def getHost(self):
+ return ('INET6',) + self.socket.getsockname()
+
+ def getPeer(self):
+ return ('INET6',) + self.client
+
+ def doRead(self):
+ try:
+ for i in range(numAccepts):
+ # we need this so we can deal with a factory's buildProtocol
+ # calling our loseConnection
+ if self.disconnecting:
+ return
+ try:
+ skt, addr = self.socket.accept()
+ except socket.error, e:
+ if e.args[0] in (EWOULDBLOCK, EAGAIN):
+ self.numberAccepts = i
+ break
+ elif e.args[0] == EPERM:
+ continue
+ raise
+
+ protocol = self.factory.buildProtocol(addr)
+ if protocol is None:
+ skt.close()
+ continue
+ s = self.sessionno
+ self.sessionno = s+1
+ transport = self.transport(skt, protocol, addr, self, s)
+ transport = self._preMakeConnection(transport)
+ protocol.makeConnection(transport)
+ else:
+ self.numberAccepts = self.numberAccepts+20
+ except:
+ log.defer()
+
+class Ipv6Port(tcp.Port):
+ addressFamily = socket.AF_INET6
+
+ transport = Ipv6Server
+
+ def getHost(self):
+ return ('INET6',) + self.socket.getsockname()
+
+ def getPeer(self):
+ return ('INET6',) + self.socket.getpeername()
+
+def listenTCP6(port,factory,backlog=5,interface='::',reactor = None):
+ if reactor is None:
+ from twisted.internet import reactor
+ return reactor.listenWith(Ipv6Port,port,factory,backlog,interface)
--
1.5.6.5
More information about the telepathy-commits
mailing list