Allways return true from recv_callback, rely on activly removing sources instead

This commit is contained in:
Thomas Adamcik 2011-07-12 03:18:07 +02:00
parent 8c9fc73550
commit b5c6bc0442
2 changed files with 11 additions and 13 deletions

View File

@ -189,21 +189,19 @@ class Connection(object):
def recv_callback(self, fd, flags):
if flags & (gobject.IO_ERR | gobject.IO_HUP):
self.stop()
return False
return True
try:
data = self.sock.recv(4096)
except socket.error as e:
if e.errno in (errno.EWOULDBLOCK, errno.EINTR):
return True
self.stop()
return False
if e.errno not in (errno.EWOULDBLOCK, errno.EINTR):
self.stop()
return True
if not data:
self.stop()
return False
self.actor_ref.send_one_way({'received': data})
else:
self.actor_ref.send_one_way({'received': data})
return True
def send_callback(self, fd, flags):

View File

@ -419,17 +419,17 @@ class ConnectionTest(unittest.TestCase):
self.mock.enable_send.assert_called_once_with()
def test_recv_callback_respects_io_err(self):
self.assertFalse(network.Connection.recv_callback(self.mock,
self.assertTrue(network.Connection.recv_callback(self.mock,
sentinel.fd, gobject.IO_IN | gobject.IO_ERR))
self.mock.stop.assert_called_once_with()
def test_recv_callback_respects_io_hup(self):
self.assertFalse(network.Connection.recv_callback(self.mock,
self.assertTrue(network.Connection.recv_callback(self.mock,
sentinel.fd, gobject.IO_IN | gobject.IO_HUP))
self.mock.stop.assert_called_once_with()
def test_recv_callback_respects_io_hup_and_io_err(self):
self.assertFalse(network.Connection.recv_callback(self.mock,
self.assertTrue(network.Connection.recv_callback(self.mock,
sentinel.fd, gobject.IO_IN | gobject.IO_HUP | gobject.IO_ERR))
self.mock.stop.assert_called_once_with()
@ -447,7 +447,7 @@ class ConnectionTest(unittest.TestCase):
self.mock.sock = Mock(spec=socket.SocketType)
self.mock.sock.recv.return_value = ''
self.assertFalse(network.Connection.recv_callback(
self.assertTrue(network.Connection.recv_callback(
self.mock, sentinel.fd, gobject.IO_IN))
self.mock.stop.assert_called_once_with()
@ -463,7 +463,7 @@ class ConnectionTest(unittest.TestCase):
self.mock.sock = Mock(spec=socket.SocketType)
self.mock.sock.recv.side_effect = socket.error()
self.assertFalse(network.Connection.recv_callback(
self.assertTrue(network.Connection.recv_callback(
self.mock, sentinel.fd, gobject.IO_IN))
self.mock.stop.assert_called_once_with()