From a809094bc350e8969ac734668fc983efba46ab94 Mon Sep 17 00:00:00 2001 From: Warren Dukes Date: Tue, 16 Nov 2004 01:41:05 +0000 Subject: fix an issue with errors and new read() code on interface git-svn-id: https://svn.musicpd.org/mpd/trunk@2683 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- src/interface.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/interface.c') diff --git a/src/interface.c b/src/interface.c index 110e3e475..9cb256725 100644 --- a/src/interface.c +++ b/src/interface.c @@ -24,6 +24,7 @@ #include "listen.h" #include "playlist.h" #include "permission.h" +#include "sig_handlers.h" #include #include @@ -323,12 +324,16 @@ static int processBytesRead(Interface * interface, int bytesRead) { } int interfaceReadInput(Interface * interface) { - int bytesRead = read(interface->fd, + int bytesRead; + + bytesRead = read(interface->fd, interface->buffer+interface->bufferLength, INTERFACE_MAX_BUFFER_LENGTH-interface->bufferLength); - + if(bytesRead > 0) return processBytesRead(interface, bytesRead); - else if(bytesRead == 0 && errno!=EINTR) closeInterface(interface); + else if(bytesRead == 0 || (bytesRead < 0 && errno != EINTR)) { + closeInterface(interface); + } else return 0; return 1; -- cgit v1.2.3