From 7eb72e524cee0ccf8956edb8629960f78333fb43 Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Wed, 14 May 1997 15:46:36 +0000 Subject: Use the actual line length for decrementing the IMAP message length counter. svn path=/trunk/; revision=998 --- driver.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/driver.c b/driver.c index 2f0accb6..44c3dabb 100644 --- a/driver.c +++ b/driver.c @@ -438,7 +438,7 @@ char *realname; /* real name of host */ char buf [MSGBUFSIZE+1]; int from_offs, to_offs, cc_offs, bcc_offs, ctt_offs, env_offs; char *headers, *received_for, *return_path; - int n, oldlen, ch, sizeticker, delete_ok, remaining; + int n, linelen, oldlen, ch, sizeticker, delete_ok, remaining; FILE *sinkfp; RETSIGTYPE (*sigchld)(); #ifdef HAVE_GETHOSTBYNAME @@ -466,10 +466,12 @@ char *realname; /* real name of host */ char *line; line = xmalloc(sizeof(buf)); + linelen = 0; line[0] = '\0'; do { - if (SockRead(sock, buf, sizeof(buf)-1) == -1) + if ((n = SockRead(sock, buf, sizeof(buf)-1)) == -1) return(PS_SOCKET); + linelen += n; /* lines may not be properly CRLF terminated; fix this for qmail */ if (ctl->forcecr) @@ -494,17 +496,17 @@ char *realname; /* real name of host */ ((ch = SockPeek(sock)) == ' ' || ch == '\t'); /* write the message size dots */ - n = strlen(line); - if ((outlevel > O_SILENT && outlevel < O_VERBOSE) && n > 0) + if ((outlevel > O_SILENT && outlevel < O_VERBOSE) && linelen > 0) { - sizeticker += n; + sizeticker += linelen; while (sizeticker >= SIZETICKER) { error_build("."); sizeticker -= SIZETICKER; } } - remaining -= n; + + remaining -= linelen; /* check for end of headers; don't save terminating line */ if (line[0] == '\r' && line[1] == '\n') @@ -1009,14 +1011,14 @@ char *realname; /* real name of host */ /* pass through the text lines */ while (delimited || remaining > 0) { - if (SockRead(sock, buf, sizeof(buf)-1) == -1) + if ((linelen = SockRead(sock, buf, sizeof(buf)-1)) == -1) return(PS_SOCKET); set_timeout(ctl->server.timeout); /* write the message size dots */ - if ((n = strlen(buf)) > 0) + if (linelen > 0) { - sizeticker += n; + sizeticker += linelen; while (sizeticker >= SIZETICKER) { if (outlevel > O_SILENT) @@ -1024,7 +1026,7 @@ char *realname; /* real name of host */ sizeticker -= SIZETICKER; } } - remaining -= n; + remaining -= linelen; /* fix messages that have only \n line-termination (for qmail) */ if (ctl->forcecr) -- cgit v1.2.3