[svn] commit: r69 - /experiments/graff-ccapi/python/ISC/CC/session.py

BIND 10 source code commits bind10-changes at lists.isc.org
Wed Oct 7 16:14:02 UTC 2009


Author: mgraff
Date: Wed Oct  7 16:14:02 2009
New Revision: 69

Log:
add non-blocking for real, I think

Modified:
    experiments/graff-ccapi/python/ISC/CC/session.py

Modified: experiments/graff-ccapi/python/ISC/CC/session.py
==============================================================================
--- experiments/graff-ccapi/python/ISC/CC/session.py (original)
+++ experiments/graff-ccapi/python/ISC/CC/session.py Wed Oct  7 16:14:02 2009
@@ -47,6 +47,7 @@
         if type(msg) == dict:
             m = Message()
             msg = m.to_wire(msg)
+        self._socket.setblocking(1)
         self._socket.send(struct.pack("!I", len(msg)))
         self._socket.send(msg)
 
@@ -58,18 +59,28 @@
         return None
 
     def _receive_full_buffer(self, nonblock):
+        if nonblock:
+            self._socket.setblocking(0)
+        else:
+            self._socket.setblocking(1)
+
         if self._recvlength == None:
             length = 4
             length -= len(self._recvbuffer)
-            print "Reading length bytes:  Expecting %d bytes" % length
-            data = self._socket.recv(length)
+            try:
+                data = self._socket.recv(length)
+            except:
+                return None
+            if not data: # server closed connection
+                return None
+
             print len(data)
-            # error checking XXXMLG
             self._recvbuffer += data
             if len(self._recvbuffer) < 4:
                 return None
             self._recvlength = struct.unpack('>I', self._recvbuffer)[0]
             self._recvbuffer = ""
+
         length = self._recvlength - len(self._recvbuffer)
         while (length > 0):
             data = self._socket.recv(length)




More information about the bind10-changes mailing list