[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