[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