Index: ChangeLog =================================================================== RCS file: /home/mea/src/CVSROOT/zmailer/ChangeLog,v retrieving revision 1.289 retrieving revision 1.291 diff -u -r1.289 -r1.291 --- ChangeLog 1999/12/30 21:21:10 1.289 +++ ChangeLog 1999/12/31 00:37:57 1.291 @@ -1,3 +1,21 @@ +1999-12-31 Matti Aarnio + + * Makefile.in: + Version 2.99.52-patch1 + + * transports/mailbox/mailbox.c: + Spotted lurking SFIO usage bug which caused + missing safe buffer zone newlines at the ends + of the mailbox stored messages. At least + my MUTT seem to be a happy camper even with + this problem present, but perhaps not all + are so good.. + + * transports/libta/swriteheaders.c: + Missed reserving space for TAB-expansions in CHUNKING + mode operation of SMTP. Only against other ZMailers, + and a few other rare systems.. + 1999-12-30 Matti Aarnio * Makefile.in: Index: Makefile.in =================================================================== RCS file: /home/mea/src/CVSROOT/zmailer/Makefile.in,v retrieving revision 1.43 retrieving revision 1.44 diff -u -r1.43 -r1.44 --- Makefile.in 1999/12/30 21:21:10 1.43 +++ Makefile.in 1999/12/31 00:37:57 1.44 @@ -2,7 +2,7 @@ MAJORVERSION = 2 MINORVERSION = 99 -PATCHLEVEL = 52 +PATCHLEVEL = 52-patch1 srcdir = @srcdir@ VPATH = @srcdir@ Index: transports/libta/swriteheaders.c =================================================================== RCS file: /home/mea/src/CVSROOT/zmailer/transports/libta/swriteheaders.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- transports/libta/swriteheaders.c 1999/12/30 20:03:57 1.4 +++ transports/libta/swriteheaders.c 1999/12/31 00:33:12 1.5 @@ -61,9 +61,9 @@ if (*chunkbufp == NULL) /* Actually the SMTP has already malloced a block */ - *chunkbufp = malloc(hsize+linelen+newlinelen); + *chunkbufp = malloc(hsize+linelen+tabsiz+newlinelen); else - *chunkbufp = realloc(*chunkbufp, hsize+linelen+newlinelen); + *chunkbufp = realloc(*chunkbufp, hsize+linelen+tabsiz+newlinelen); if (*chunkbufp == NULL) return -1; if (tabsiz) { Index: transports/mailbox/mailbox.c =================================================================== RCS file: /home/mea/src/CVSROOT/zmailer/transports/mailbox/mailbox.c,v retrieving revision 1.72 retrieving revision 1.73 diff -u -r1.72 -r1.73 --- transports/mailbox/mailbox.c 1999/12/30 20:44:06 1.72 +++ transports/mailbox/mailbox.c 1999/12/31 00:33:17 1.73 @@ -1836,7 +1836,7 @@ fstat(fdmail, &st); - fp = sfnew(NULL, NULL, 16*1024, fdmail, SF_WRITE|SF_APPEND); + fp = sfnew(NULL, NULL, 64*1024, fdmail, SF_READ|SF_WRITE|SF_APPEND); if (fp == NULL) { notaryreport(NULL,NULL,NULL,NULL); DIAGNOSTIC3(rp, file, EX_TEMPFAIL, "cannot fdopen(%d,\"%s\")", @@ -2023,6 +2023,9 @@ goto time_reset; } +if (verboselog) + fprintf(verboselog," end of putmail(file='%s'), topipe=%d\n",file,topipe); + if (!topipe) { /* * Ok, we are NOT writing to a pipe, and thus we can do @@ -2039,9 +2042,13 @@ * login etc. can distinguish new mail from old. * The mtime will be set to now by the following write() calls. */ - sfseek(fp, (off_t)-2, SEEK_END); + sfseek(fp, (Sfoff_t)-2LL, SEEK_END); len = sfread(fp, buf, 2); - sfseek(fp, (off_t)0, SEEK_END); /* to end of file, again */ + sfseek(fp, (Sfoff_t)0, SEEK_END); + /* to end of file, again */ + +if (verboselog) + fprintf(verboselog," .. EOF read did yield %d bytes\n", len); if (len == 1 || len == 2) { int err; @@ -2049,6 +2056,9 @@ len = (buf[len]!='\n') + (len == 1 ? buf[0]!='\n' : 1); err = (len > 0 && (sfwrite(fp, "\n\n", len) != len)); sfsync(fp); + +if (verboselog) + fprintf(verboselog," .. wrote %d newlines to the end\n", len); if (!err) err = sferror(fp); if (err) { Index: transports/smtp/smtp.c =================================================================== RCS file: /home/mea/src/CVSROOT/zmailer/transports/smtp/smtp.c,v retrieving revision 1.116 retrieving revision 1.117 diff -u -r1.116 -r1.117 --- transports/smtp/smtp.c 1999/12/30 15:36:50 1.116 +++ transports/smtp/smtp.c 1999/12/31 05:37:11 1.117 @@ -2161,6 +2161,7 @@ if (! isreconnect) { /* For possible reconnect */ + if (SS->ai.ai_canonname) free(SS->ai.ai_canonname); memcpy(&SS->ai, ai, sizeof(*ai)); memset(&SS->ai_addr, 0, sizeof(SS->ai_addr)); if (ai->ai_family == AF_INET) @@ -2170,7 +2171,6 @@ memcpy(&SS->ai_addr.v6, ai->ai_addr, sizeof(SS->ai_addr.v6)); #endif SS->ai.ai_addr = (struct sockaddr *) & SS->ai_addr; - if (SS->ai.ai_canonname) free(SS->ai.ai_canonname); SS->ai.ai_canonname = NULL; if (ai->ai_canonname) SS->ai.ai_canonname = strdup(ai->ai_canonname);