diff options
author | Eric S. Raymond <esr@thyrsus.com> | 1996-11-04 22:56:43 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 1996-11-04 22:56:43 +0000 |
commit | 9b699b1aebb24f4f42b0c8b89a497339fc1e1499 (patch) | |
tree | ea5a8eba6dc8eefa7449e9d1a70fd340cea78595 /driver.c | |
parent | 6a4065ca0329496d53046e3895d8d536d7ac1c24 (diff) | |
download | fetchmail-9b699b1aebb24f4f42b0c8b89a497339fc1e1499.tar.gz fetchmail-9b699b1aebb24f4f42b0c8b89a497339fc1e1499.tar.bz2 fetchmail-9b699b1aebb24f4f42b0c8b89a497339fc1e1499.zip |
Insert fseeks to prevent read-write lossage.
svn path=/trunk/; revision=485
Diffstat (limited to 'driver.c')
-rw-r--r-- | driver.c | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -789,6 +789,14 @@ struct query *ctl; /* query control record */ lines++; } + /* + * Required by Standard C and the Linux stdio library, + * which wants a seek between read and write operations on a + * read/write stream. Without this we got weird lossage + * trying to issue delete commands after reading a long message. + */ + fseek(sockfp, 0L, SEEK_CUR); + if (ctl->mda[0]) { /* close the delivery pipe, we'll reopen before next message */ @@ -1118,7 +1126,7 @@ va_dcl { va_end(ap); strcat(buf, "\r\n"); - fputs(buf, sockfp); + fputs(buf, sockfp); fseek(sockfp, 0L, SEEK_CUR); if (outlevel == O_VERBOSE) { @@ -1160,7 +1168,7 @@ va_dcl { va_end(ap); strcat(buf, "\r\n"); - fputs(buf, sockfp); + fputs(buf, sockfp); fseek(sockfp, 0L, SEEK_CUR); if (outlevel == O_VERBOSE) { char *cp; |