[Twisted-Python] Adaptive Port

Moshe Zadka m at moshez.org
Wed Sep 19 01:01:42 MDT 2001


Index: twisted/internet/tcp.py
===================================================================
RCS file: /cvs/Twisted/twisted/internet/tcp.py,v
retrieving revision 1.22
diff -u -r1.22 tcp.py
--- twisted/internet/tcp.py	2001/09/11 04:08:28	1.22
+++ twisted/internet/tcp.py	2001/09/19 06:49:49
@@ -277,6 +277,7 @@
         """
         s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
         s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
+        s.setblocking(0)
         return s
 
     def __getstate__(self):
@@ -312,12 +313,9 @@
         self.connected = 1
         self.socket = skt
         self.fileno = self.socket.fileno
+        self.numberAccepts = 100
         self.startReading()
 
-    def getSocket(self):
-        skt,addr = self.socket.accept()
-        return skt, addr
-
     def doRead(self):
         """Called when my socket is ready for reading.
 
@@ -325,12 +323,21 @@
         wire-level protocol.
         """
         try:
-            skt, addr = self.getSocket()
-            protocol = self.factory.buildProtocol(addr)
-            s = self.sessionno
-            self.sessionno = s+1
-            transport = self.transport(skt, protocol, addr, self, s)
-            protocol.makeConnection(transport, self)
+            for i in range(self.numberAccepts):
+                try:
+                    skt,addr = self.socket.accept()
+                except socket.error, e:
+                    if e.args[0] == EWOULDBLOCK:
+                        self.numberAccepts = i
+                        break
+                    raise
+                protocol = self.factory.buildProtocol(addr)
+                s = self.sessionno
+                self.sessionno = s+1
+                transport = self.transport(skt, protocol, addr, self, s)
+                protocol.makeConnection(transport, self)
+            else:
+                self.numberAccepts = self.numberAccepts+20
         except:
             traceback.print_exc(file=log.logfile)
 

-- 
The Official Moshe Zadka FAQ: http://moshez.geek
The Official Moshe Zadka FAQ For Dummies: http://moshez.org
Read the FAQ





More information about the Twisted-Python mailing list