[Spread-cvs] cvs commit: spread/daemon session.c
jonathan at spread.org
jonathan at spread.org
Wed Jan 23 23:50:13 EST 2002
jonathan 02/01/23 23:50:13
Modified: daemon session.c
Log:
Modified Files:
session.c
----------------------------------------------------------------------
Made recv() calls recognize EAGAIN, EWOULDBLOCK, and EINTR as non-fatal
errors. Problem reported by Zope Team.
Revision Changes Path
1.5 +10 -0 spread/daemon/session.c
Index: session.c
===================================================================
RCS file: /storage/cvsroot/spread/daemon/session.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- session.c 31 Oct 2001 23:06:48 -0000 1.4
+++ session.c 24 Jan 2002 04:50:12 -0000 1.5
@@ -1029,6 +1029,11 @@
return;
} else {
/* error reading */
+ if ( (errno == EINTR) || (errno == EAGAIN) || (errno == EWOULDBLOCK) ) {
+ ioctl_cmd = 0;
+ ioctl( Sessions[ses].mbox, FIONBIO, &ioctl_cmd);
+ return;
+ }
Alarm( SESSION, "Sess_read: failed receiving header on session %d: ret %d: error: %s \n", mbox, ret, strerror(errno) );
Sess_kill( mbox );
ioctl_cmd = 0;
@@ -1109,6 +1114,11 @@
ioctl( Sessions[ses].mbox, FIONBIO, &ioctl_cmd);
return;
} else {
+ if ( (errno == EINTR) || (errno == EAGAIN) || (errno == EWOULDBLOCK) ) {
+ ioctl_cmd = 0;
+ ioctl( Sessions[ses].mbox, FIONBIO, &ioctl_cmd);
+ return;
+ }
Alarm( SESSION, "Sess_read: failed receiving message on session %d, ret is %d: error: %s\n", mbox, ret, strerror(errno) );
Alarm( SESSION, "Sess_read: failed recv msg more info: len read: %d, remain: %d, to_read: %d, pkt_index: %d, b_index: %d, scat_nums: %d\n",Sessions[ses].read.total_bytes, remain, to_read, packet_index, byte_index, scat->num_elements );
Sess_kill( mbox );
More information about the Spread-cvs
mailing list