Index: msg.c =================================================================== RCS file: lib/msg.c,v retrieving revision 1.30.2.1.2.4 retrieving revision 1.30.2.1.2.5 diff -c -r1.30.2.1.2.4 -r1.30.2.1.2.5 *** msg.c 1999/02/03 22:35:15 1.30.2.1.2.4 --- msg.c 1999/04/14 14:54:29 1.30.2.1.2.5 *************** *** 226,239 **** return -1; } ! do { ! if ((nw = S5BufWritePacket(fd, info, buf, wlen, flags)) > 0) break; ! if (ISSOCKETERROR(EINTR) && !(libflags & S5_IOFLAGS_RESTART)) break; ! if ((ISSOCKETERROR(EWOULDBLOCK) || ISSOCKETERROR(EAGAIN)) && !(libflags & S5_IOFLAGS_NBYTES)) break; ! nw = 0; ! } while (S5IOCheck(fd) >= 0); ! ! if (nw < 0) { S5LogUpdate(S5LogDefaultHandle, S5_LOG_WARNING, 0, "S5IOSend: failed: %m"); return nw; } --- 226,234 ---- return -1; } ! if ((nw = S5BufWritePacket(fd, info, buf, wlen, flags)) < 0) { ! if (ISSOCKETERROR(EINTR) && (libflags & S5_IOFLAGS_RESTART)) continue; ! if ((ISSOCKETERROR(EWOULDBLOCK) || ISSOCKETERROR(EAGAIN)) && (libflags & S5_IOFLAGS_NBYTES)) continue; S5LogUpdate(S5LogDefaultHandle, S5_LOG_WARNING, 0, "S5IOSend: failed: %m"); return nw; } Index: buffer.c =================================================================== RCS file: lib/buffer.c,v retrieving revision 1.51.4.4 retrieving revision 1.51.4.5 diff -c -r1.51.4.4 -r1.51.4.5 *** buffer.c 1999/02/03 22:35:00 1.51.4.4 --- buffer.c 1999/04/14 14:54:06 1.51.4.5 *************** *** 79,89 **** } if ((n = SENDSOCKET(fd, buffer, m, ioflags)) < 0) { ! if (S5IOCheck(fd) >= 0) continue; ! else { ! SETSOCKETERROR(EBADF); ! return -1; } } m -= n; --- 79,89 ---- } if ((n = SENDSOCKET(fd, buffer, m, ioflags)) < 0) { ! if (ISSOCKETERROR(EINTR)) continue; ! if (ISSOCKETERROR(EWOULDBLOCK) || ISSOCKETERROR(EAGAIN)) { ! if (m != buflen) continue; } + return -1; } m -= n;