aboutsummaryrefslogtreecommitdiffstats
path: root/transact.c
diff options
context:
space:
mode:
Diffstat (limited to 'transact.c')
-rw-r--r--transact.c43
1 files 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;