Corrected check for errors after read() calls.

This commit is contained in:
Guus Sliepen 2001-02-25 11:09:29 +00:00
parent 0b0c2a372f
commit 153fc35e57
2 changed files with 20 additions and 9 deletions

View file

@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: meta.c,v 1.1.2.14 2001/01/07 17:08:57 guus Exp $ $Id: meta.c,v 1.1.2.15 2001/02/25 11:09:29 guus Exp $
*/ */
#include "config.h" #include "config.h"
@ -117,17 +117,19 @@ cp
if(lenin<=0) if(lenin<=0)
{ {
if(errno==EINTR) if(lenin==0)
return 0;
if(errno==0)
{ {
if(debug_lvl >= DEBUG_CONNECTIONS) if(debug_lvl >= DEBUG_CONNECTIONS)
syslog(LOG_NOTICE, _("Connection closed by %s (%s)"), syslog(LOG_NOTICE, _("Connection closed by %s (%s)"),
cl->name, cl->hostname); cl->name, cl->hostname);
} }
else else
syslog(LOG_ERR, _("Metadata socket read error for %s (%s): %m"), if(errno==EINTR)
cl->name, cl->hostname); return 0;
else
syslog(LOG_ERR, _("Metadata socket read error for %s (%s): %m"),
cl->name, cl->hostname);
return -1; return -1;
} }

View file

@ -17,7 +17,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
$Id: protocol.c,v 1.28.4.78 2001/02/06 10:42:27 guus Exp $ $Id: protocol.c,v 1.28.4.79 2001/02/25 11:09:29 guus Exp $
*/ */
#include "config.h" #include "config.h"
@ -31,6 +31,7 @@
#include <unistd.h> #include <unistd.h>
#include <stdio.h> #include <stdio.h>
#include <stdarg.h> #include <stdarg.h>
#include <errno.h>
#include <utils.h> #include <utils.h>
#include <xalloc.h> #include <xalloc.h>
@ -1324,9 +1325,17 @@ int tcppacket_h(connection_t *cl)
while(todo) while(todo)
{ {
x = read(cl->meta_socket, p, todo); x = read(cl->meta_socket, p, todo);
if(x<0)
if(x<=0)
{ {
syslog(LOG_ERR, _("Error during reception of PACKET from %s (%s): %m"), cl->name, cl->hostname); if(x==0)
syslog(LOG_NOTICE, _("Connection closed by %s (%s)"), cl->name, cl->hostname);
else
if(errno==EINTR)
continue;
else
syslog(LOG_ERR, _("Error during reception of PACKET from %s (%s): %m"), cl->name, cl->hostname);
return -1; return -1;
} }