Make send_callback respect flags from gobject

This commit is contained in:
Thomas Adamcik 2011-07-17 00:32:50 +02:00
parent c773998fd8
commit d2a9e3d1ec
2 changed files with 14 additions and 4 deletions

View File

@ -243,6 +243,10 @@ class Connection(object):
return True
def send_callback(self, fd, flags):
if flags & (gobject.IO_ERR | gobject.IO_HUP):
self.stop(u'Bad client flags: %s' % flags)
return True
# If with can't get the lock, simply try again next time socket is
# ready for sending.
if not self.send_lock.acquire(False):

View File

@ -8,7 +8,7 @@ import unittest
from mopidy.utils import network
from mock import patch, sentinel, Mock
from tests import SkipTest, any_int, any_unicode
from tests import any_int, any_unicode
class ConnectionTest(unittest.TestCase):
def setUp(self):
@ -412,28 +412,34 @@ class ConnectionTest(unittest.TestCase):
self.mock, sentinel.fd, gobject.IO_IN))
self.mock.stop.assert_called_once_with(any_unicode)
@SkipTest # FIXME decide behaviour
def test_send_callback_respects_io_err(self):
self.mock.sock = Mock(spec=socket.SocketType)
self.mock.sock.send.return_value = 1
self.mock.send_lock = Mock()
self.mock.actor_ref = Mock()
self.mock.send_buffer = ''
self.assertTrue(network.Connection.send_callback(self.mock,
sentinel.fd, gobject.IO_IN | gobject.IO_ERR))
self.mock.stop.assert_called_once_with(any_unicode)
@SkipTest # FIXME decide behaviour
def test_send_callback_respects_io_hup(self):
self.mock.sock = Mock(spec=socket.SocketType)
self.mock.sock.send.return_value = 1
self.mock.send_lock = Mock()
self.mock.actor_ref = Mock()
self.mock.send_buffer = ''
self.assertTrue(network.Connection.send_callback(self.mock,
sentinel.fd, gobject.IO_IN | gobject.IO_HUP))
self.mock.stop.assert_called_once_with(any_unicode)
@SkipTest # FIXME decide behaviour
def test_send_callback_respects_io_hup_and_io_err(self):
self.mock.sock = Mock(spec=socket.SocketType)
self.mock.sock.send.return_value = 1
self.mock.send_lock = Mock()
self.mock.actor_ref = Mock()
self.mock.send_buffer = ''
self.assertTrue(network.Connection.send_callback(self.mock,
sentinel.fd, gobject.IO_IN | gobject.IO_HUP | gobject.IO_ERR))