From 9b6bcf25f9a75df373fd5e980d0baec4b8bccedb Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Fri, 10 Oct 2003 13:58:41 +0000 Subject: [PATCH] Smash out nuls. svn path=/trunk/; revision=3846 --- transact.c | 43 +++++++++++++++++++++++-------------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/transact.c b/transact.c index cae6b701..bddce829 100644 --- a/transact.c +++ b/transact.c @@ -428,29 +428,32 @@ int readheaders(int sock, linelen = 0; line[0] = '\0'; do { - char *sp, *tp; + do { + char *sp, *tp; - set_timeout(mytimeout); - if ((n = SockRead(sock, buf, sizeof(buf)-1)) == -1) { + set_timeout(mytimeout); + if ((n = SockRead(sock, buf, sizeof(buf)-1)) == -1) { + set_timeout(0); + free(line); + free(msgblk.headers); + msgblk.headers = NULL; + return(PS_SOCKET); + } set_timeout(0); - free(line); - free(msgblk.headers); - msgblk.headers = NULL; - return(PS_SOCKET); - } - set_timeout(0); - /* - * Smash out any medial NULs, they could wreak havoc later on. - * Some network stacks seem to generate these at random, - * always (according to reports) at the beginning of the - * first read. NUls are illegal in RFC822 format. - */ - for (sp = tp = buf; sp < buf + n; sp++) - if (*sp) - *tp++ = *sp; - *tp = '\0'; - n = tp - buf; + /* + * Smash out any NULs, they could wreak havoc later on. + * Some network stacks seem to generate these at random, + * especially (according to reports) at the beginning of the + * first read. NULs are illegal in RFC822 format. + */ + for (sp = tp = buf; sp < buf + n; sp++) + if (*sp) + *tp++ = *sp; + *tp = '\0'; + n = tp - buf; + } while + (n == 0); remaining -= n; linelen += n; -- 2.43.2