[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