[Cvs-nserver-commits] CVS: cvs-nserver/src client.c,1.1.1.7.2.6.2.13,1.1.1.7.2.6.2.14 fd-client.c,1.
Brought to you by:
tyranny
From: Alexey M. <ty...@us...> - 2002-02-10 22:23:16
|
Update of /cvsroot/cvs-nserver/cvs-nserver/src In directory usw-pr-cvs1:/tmp/cvs-serv27031/src Modified Files: Tag: NCLI-1-11-1 client.c fd-client.c logging-client.c network-client.c Log Message: Update to properly check for return -1 && errno == EAGAIN Index: client.c =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/client.c,v retrieving revision 1.1.1.7.2.6.2.13 retrieving revision 1.1.1.7.2.6.2.14 diff -u -d -r1.1.1.7.2.6.2.13 -r1.1.1.7.2.6.2.14 --- client.c 9 Feb 2002 19:46:13 -0000 1.1.1.7.2.6.2.13 +++ client.c 10 Feb 2002 22:23:13 -0000 1.1.1.7.2.6.2.14 @@ -17,6 +17,7 @@ #endif /* HAVE_CONFIG_H */ #include <assert.h> +#include <errno.h> #include <stdarg.h> #include <stdio.h> @@ -3065,12 +3066,19 @@ size_t len; { - size_t nread = top_ncli->read(top_ncli, buf, len); + do { + size_t nread = top_ncli->read(top_ncli, buf, len); + if (nread == -1) { + assert(errno == EAGAIN); + if (errno == EAGAIN) + continue; + } - if (nread < len) - error(1, 0, "end of file from server"); + if (nread == 0) + error(1, 0, "end of file from server"); - return nread; + return nread; + } while(1); } /* @@ -4016,7 +4024,6 @@ send_to_server ("\012", 1); zlib_ncli = create_zlib_client(current_parsed_root, ncli_error); - printf("Created zlib_ncli = %p\n", zlib_ncli); /* special processing, because all the chain is already connect()'ed */ zlib_ncli->connect(zlib_ncli); Index: fd-client.c =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/Attic/fd-client.c,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -d -r1.1.2.1 -r1.1.2.2 --- fd-client.c 9 Feb 2002 19:36:08 -0000 1.1.2.1 +++ fd-client.c 10 Feb 2002 22:23:13 -0000 1.1.2.2 @@ -102,9 +102,12 @@ size_t nread = 0; while (len > 0) { int n = read(fd, buf + nread, len); - if (n == -1) + if (n == -1) { + if (errno == EAGAIN) + return -1; return ncli->error(ncli, "Read error: %s", strerror(errno)); + } if (n == 0) break; @@ -146,5 +149,6 @@ fd_flush (NCLI ncli) { (void) ncli; + return NCLI_SUCCESS; } Index: logging-client.c =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/Attic/logging-client.c,v retrieving revision 1.1.4.4 retrieving revision 1.1.4.5 diff -u -d -r1.1.4.4 -r1.1.4.5 --- logging-client.c 9 Feb 2002 19:54:38 -0000 1.1.4.4 +++ logging-client.c 10 Feb 2002 22:23:13 -0000 1.1.4.5 @@ -213,15 +213,17 @@ logging_read (NCLI ncli, char *buf, unsigned int len) { LCD lcd = ncli->client_data; - unsigned int read = ncli->next->read(ncli->next, buf, len); + int read = ncli->next->read(ncli->next, buf, len); - if (fwrite(buf, 1, read, lcd->log_in) < read) - return ncli->error(ncli, "Cannot write to %s.in: %s", - lcd->logfile_name, strerror(errno)); + if (read > 0) { + if (fwrite(buf, 1, read, lcd->log_in) < (unsigned) read) + return ncli->error(ncli, "Cannot write to %s.in: (%d)%s", + lcd->logfile_name, errno, strerror(errno)); - if (!internal_log_line("< ", lcd->log, buf, len)) - return ncli->error(ncli, "Cannot write to %s: %s", - lcd->logfile_name, strerror(errno)); + if (!internal_log_line("< ", lcd->log, buf, len)) + return ncli->error(ncli, "Cannot write to %s: %s", + lcd->logfile_name, strerror(errno)); + } return read; } Index: network-client.c =================================================================== RCS file: /cvsroot/cvs-nserver/cvs-nserver/src/Attic/network-client.c,v retrieving revision 1.1.4.4 retrieving revision 1.1.4.5 diff -u -d -r1.1.4.4 -r1.1.4.5 --- network-client.c 9 Feb 2002 19:46:13 -0000 1.1.4.4 +++ network-client.c 10 Feb 2002 22:23:13 -0000 1.1.4.5 @@ -16,6 +16,8 @@ */ +#include <assert.h> +#include <errno.h> #include <stdlib.h> #include "network-client.h" @@ -47,6 +49,11 @@ while (1) { char ch = 'X'; int nread = ncli->read(ncli, &ch, 1); + if (nread == -1) { + assert(errno == EAGAIN); + if (errno == EAGAIN) + continue; + } if (nread == 0) return (void *) ncli->error(ncli, "end of file from server (consult above messages if any)"); |