From 52087bd5b4cf47cb15927e0a4ff197ed527d4c40 Mon Sep 17 00:00:00 2001 From: Thomas Adamcik Date: Wed, 6 Jul 2011 00:23:18 +0200 Subject: [PATCH] Cleanup recv code a bit --- mopidy/utils/network.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/mopidy/utils/network.py b/mopidy/utils/network.py index 13bbd2bf..542baaa0 100644 --- a/mopidy/utils/network.py +++ b/mopidy/utils/network.py @@ -80,9 +80,16 @@ class Server(object): loop. """ if flags & (gobject.IO_ERR | gobject.IO_HUP): - data = '' - else: - data = sock.recv(1024) # FIXME there are cases where this might fail. + actor_ref.stop() + return False + + try: + data = sock.recv(4096) + except socket.error as e: + if e.errno in (errno.EWOULDBLOCK, errno.EAGAIN): + return True + actor_ref.stop() + return False if not data: actor_ref.stop() @@ -148,7 +155,7 @@ class LineProtocol(ThreadingActor): def log_raw_data(self, data): """ - Log raw data from event loopfor debug purposes. + Log raw data from event loop for debug purposes. Can be overridden by subclasses to change logging behaviour. """