Replaced client_read() with socket_read_blob() in serv_network.c
authorArt Cancro <ajc@citadel.org>
Mon, 20 Dec 2010 04:12:19 +0000 (23:12 -0500)
committerArt Cancro <ajc@citadel.org>
Mon, 20 Dec 2010 04:12:19 +0000 (23:12 -0500)
citadel/clientsocket.c
citadel/clientsocket.h
citadel/modules/network/serv_network.c

index 8052e24e4ac8ced4b22747d4029f5ba3fa313e4d..594b5eb9664d969e8f8b2988e66a2909b9e99439 100644 (file)
@@ -147,28 +147,6 @@ int socket_read_blob(int *Socket, StrBuf * Target, int bytes, int timeout)
 }
 
 
-int sock_read_to(int *sock, char *buf, int bytes, int timeout,
-                int keep_reading_until_full)
-{
-       CitContext *CCC = MyContext();
-       int rc;
-
-       FlushStrBuf(CCC->MigrateBuf);
-       rc = socket_read_blob(sock, CCC->sMigrateBuf, bytes, timeout);
-       if (rc < 0) {
-               *buf = '\0';
-               return rc;
-       } else {
-               if (StrLength(CCC->MigrateBuf) < bytes)
-                       bytes = StrLength(CCC->MigrateBuf);
-               memcpy(buf, ChrPtr(CCC->MigrateBuf), bytes);
-
-               FlushStrBuf(CCC->MigrateBuf);
-               return rc;
-       }
-}
-
-
 int CtdlSockGetLine(int *sock, StrBuf * Target, int nSec)
 {
        CitContext *CCC = MyContext();
@@ -215,18 +193,6 @@ int sock_getln(int *sock, char *buf, int bufsize)
 }
 
 
-/*
- * sock_read() - input binary data from socket.
- * Returns the number of bytes read, or -1 for error.
- */
-INLINE int sock_read(int *sock, char *buf, int bytes,
-                    int keep_reading_until_full)
-{
-       return sock_read_to(sock, buf, bytes, CLIENT_TIMEOUT,
-                           keep_reading_until_full);
-}
-
-
 /*
  * sock_write() - send binary to server.
  * Returns the number of bytes written, or -1 for error.
index cb93d849bacc482862425f159394af76c12c1a44..c430c1882aad99164fb682fb93dddea715cb8079 100644 (file)
  */
 
 int sock_connect(char *host, char *service);
-int sock_read_to(int *sock, char *buf, int bytes, int timeout, int keep_reading_until_full);
-int sock_read(int *sock, char *buf, int bytes, int keep_reading_until_full);
 int sock_write(int *sock, const char *buf, int nbytes);
 int sock_write_timeout(int *sock, const char *buf, int nbytes, int timeout);
 int ml_sock_gets(int *sock, char *buf, int nSec);
 int sock_getln(int *sock, char *buf, int bufsize);
 int CtdlSockGetLine(int *sock, StrBuf *Target, int nSec);
 int sock_puts(int *sock, char *buf);
+int socket_read_blob(int *Socket, StrBuf * Target, int bytes, int timeout);
 
 
 /* 
index 7f5d5dd306e6a172880f9d0c0c63c6201116a69f..075b4578a9616204d3ae5af0497192bc9df386da 100644 (file)
@@ -1924,7 +1924,6 @@ void receive_spool(int *sock, char *remote_nodename) {
        int download_len = 0L;
        int bytes_received = 0L;
        char buf[SIZ];
-       static char pbuf[IGNET_PACKET_SIZE];
        char tempfilename[PATH_MAX];
        char permfilename[PATH_MAX];
        int plen;
@@ -1998,13 +1997,17 @@ void receive_spool(int *sock, char *remote_nodename) {
                
                if (buf[0] == '6') {
                        plen = extract_int(&buf[4], 0);
-                       if (sock_read(sock, pbuf, plen, 1) < 0) {
+                       StrBuf *pbuf = NewStrBuf();
+                       if (socket_read_blob(sock, pbuf, plen, CLIENT_TIMEOUT) != plen) {
+                               CtdlLogPrintf(CTDL_INFO, "Short read from peer; aborting.\n");
                                fclose(fp);
                                unlink(tempfilename);
+                               FreeStrBuf(&pbuf);
                                return;
                        }
-                       fwrite((char *) pbuf, plen, 1, fp);
+                       fwrite(ChrPtr(pbuf), plen, 1, fp);
                        bytes_received += plen;
+                       FreeStrBuf(&pbuf);
                }
        }
 
@@ -2031,7 +2034,6 @@ void receive_spool(int *sock, char *remote_nodename) {
        }
 
        CtdlLogPrintf(CTDL_DEBUG, "%s\n", buf);
-       CtdlLogPrintf(CTDL_NOTICE, "Received %ld octets from <%s>\n", download_len, remote_nodename);
 
        /*
         * Now move the temp file to its permanent location.