[Raw Msg Headers][Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: bug in transports/smtp



Hi!

On Thu, Feb 05, 2004 at 18:14 +0200, Andrey Blochintsev wrote:

> Zmailer system can lost messages then
>  * transaction to best MX failed with diagnistic "ERROR: SMTP socket write timeout; leftover=...."
>  * connection to next MX was successfull
> 

And now fix:

--- zmailer/transports/smtp/appendlet.c.prev	Thu Feb  5 21:51:25 2004
+++ zmailer/transports/smtp/appendlet.c	Thu Feb  5 21:52:12 2004
@@ -329,7 +329,7 @@
 {
   if (SS->chunkbuf == NULL) {
     if (sferror(fp)) return EOF;
-    if (sfputc(fp, ch) < 0) return EOF;
+    if (sfputc(fp, ch) < 0 || sferror(fp)) return EOF;
     return 0;
   }
   if (SS->chunksize >= CHUNK_MAX_SIZE) {


Zmailer logic was broken by sfputc() macro/function
which NEVER returns EOF, as expected from manual... :(


sfio/src/lib/sfio/sfio.h:
...
#define __sf_putc(f,c)  (_SF_(f)->next >= _SF_(f)->endw ? \
                         _sfflsbuf(_SF_(f),(int)((unsigned char)(c))) : \
                         (int)(*_SF_(f)->next++ = (unsigned char)(c)) )
...


sfio/src/lib/sfio/sfflsbuf.c:
...
int _sfflsbuf(reg Sfio_t* f, reg int c)
...
{
...
        int             inpc = c;
...
        return inpc < 0 ? (f->endb-f->next) : inpc;
}




> 
> Latest zmailer version was installed to "horse"
> 
> Submitting message:
> Feb  5 17:17:20 horse router[2886]: S1219339AbUBEPRU: from=<bag@i.kiev.ua>, rrelay=STDIN (bag@horse.iptelecom.net.ua), size=423455, nrcpts=1, msgid=<S1219339AbUBEPRU/20040205151720Z+5@horse.iptelecom.net.ua>, delay=00:00:00, xdelay=00:00:00
> 
> Now starting tranfer:
> 
> 030965E80-0000-0000#	Start time: Thu, 5 Feb 2004 17:17:20 +0200
> 030965E80-0001-0000#	jobspec: R/1219339	i.kiev.ua
> 030965E80-0002-0000#	1219339: <S1219339AbUBEPRU/20040205151720Z+5@horse.iptelecom.net.ua>
> 030965E80-0003-0000#	(Connecting to `mail.iptelecom.net.ua' [212.9.224.15|25] Thu Feb  5 17:17:20 2004)
> 030965E80-0004-0000r	220 mail.i.kiev.ua ESMTP MTA ready; Thu, 5 Feb 2004 17:26:26 +0200 (EET)
> 030965E80-0005-0000#	('220' expectance did yield 0 )
> 030965E80-0006-0000w	EHLO horse.iptelecom.net.ua
> 030965E80-0007-0000r	250-mail.i.kiev.ua Hello horse.iptelecom.net.ua [212.9.224.8], pleased to meet you
> 030965E80-0008-0000r	250-ENHANCEDSTATUSCODES
> 030965E80-0009-0000r	250-PIPELINING
> 030965E80-0010-0000r	250-8BITMIME
> 030965E80-0011-0000r	250-SIZE 5000000
> 030965E80-0012-0000r	250-DSN
> 030965E80-0013-0000r	250-ETRN
> 030965E80-0014-0000r	250-DELIVERBY
> 030965E80-0015-0000r	250 HELP
> 030965E80-0016-0000#	smtpopen: status = 0
> 030965E80-0017-0000w	MAIL From:<bag@i.kiev.ua> BODY=8BITMIME SIZE=436283
> 030965E80-0018-0000w	RCPT To:<bag@i.kiev.ua> NOTIFY=FAILURE ORCPT=rfc822;bag@i.kiev.ua
> 030965E80-0019-0000w	DATA
> 030965E80-0020-0001r	250 2.1.0 <bag@i.kiev.ua>... Sender ok
> 030965E80-0021-0001r	250 2.1.5 <bag@i.kiev.ua>... Recipient ok
> 030965E80-0022-0001r	354 Enter mail, end with "." on a line by itself
> 
> 
> *** Link horse.iptelecom.net.ua -> mail.iptelecom.net.ua limited to 100bytes/sec
> *** In test installation all timeout values (timeout_data, timeout_dot, timeout_tcpw ...) changed to 30 sec
> *** .... some time passed ... 1-5 Kbytes transmitted
> *** now simulating network failure:
> *** "ipfw add drop tcp from 212.9.224.8 to 212.9.224.15 25"
> 
> 030965E80-0023-0040w	.
> 030965E80-0024-0070#	Timeout (30 sec) while waiting responses from remote (errno=35)
> 
> *** Timeout detected and: "Feb  5 17:18:00 horse smtp[3096]: S1219339AbUBEPRU: ERROR: SMTP socket write timeout; leftover=26440; IP=[212.9.224.15|25|212.9.224.8|2109] mx=1/2" logged to maillog
> 
> 030965E80-0025-0070#	 smtp_sync() did yield code 75/TEMPFAIL
> 030965E80-0026-0070#	(Connecting to `mail.iptelecom.net.ua' [212.9.224.15|25] Thu Feb  5 17:18:30 2004)
> 030965E80-0027-0145#	; 500 (connect to mail.iptelecom.net.ua [212.9.224.15|25|212.9.224.8|2110]: Operation timed out)
> 030965E80-0028-0145#	(vcsetup() did yield 100 )
> 030965E80-0029-0145#	(Connecting to `relay.iptelecom.net.ua' [212.9.224.1|25] Thu Feb  5 17:19:45 2004)
> 030965E80-0030-0146r	220 ns1.iptelecom.net.ua ESMTP MTA ready; Thu, 5 Feb 2004 17:28:52 +0200 (EET)
> 030965E80-0031-0146#	('220' expectance did yield 0 )
> 030965E80-0032-0146w	EHLO horse.iptelecom.net.ua
> 030965E80-0033-0146r	250-ns1.iptelecom.net.ua Hello horse.iptelecom.net.ua [212.9.224.8], pleased to meet you
> 030965E80-0034-0146r	250-ENHANCEDSTATUSCODES
> 030965E80-0035-0146r	250-PIPELINING
> 030965E80-0036-0146r	250-8BITMIME
> 030965E80-0037-0146r	250-SIZE 5000000
> 030965E80-0038-0146r	250-DSN
> 030965E80-0039-0146r	250-ETRN
> 030965E80-0040-0146r	250-DELIVERBY
> 030965E80-0041-0146r	250 HELP
> 030965E80-0042-0146#	smtpopen: status = 0
> 030965E80-0043-0146#	DIAG: C='smtp' H='i.kiev.ua' U='bag@i.kiev.ua' P='65534' ID=1219339/161 L=0 -- stat='ok3' notary='bag@i.kiev.uafailedsmtp; 250 (HELP)dns; relay.iptelecom.net.ua (212.9.224.1|25|212.9.224.8|2111)smtp[3096]' WTT='dns; relay.iptelecom.net.ua'  MSG='
<<- EHLO horse.iptelecom.net.ua
->> 250-ns1.iptelecom.net.ua Hello horse.iptelecom.net.ua [212.9.224.8], pleased to meet you
->> 250-ENHANCEDSTATUSCODES
->> 250-PIPELINING
->> 250-8BITMIME
->> 250-SIZE 5000000
->> 250-DSN
->> 250-ETRN
->> 250-DELIVERBY
->> 250 HELP'
> 
> *** ???? mail transaction finished:
> Feb  5 17:19:46 horse smtp[3096]: S1219339AbUBEPRU: to=<bag@i.kiev.ua>, delay=00:02:26, xdelay=00:02:25, mailer=smtp, relay=relay.iptelecom.net.ua ([212.9.224.1|25|212.9.224.8|2111]), stat=ok3 ->> 250 HELP cvt=NONE
> *** message marked "sent" and deleted from queue !!!
> 
> 030965E80-0044-0146#	jobspec: #idle
> 030965E80-0045-0326w	NOOP
> 030965E80-0046-0326r	250 2.0.0 OK
> 030965E80-0047-0412#	jobspec: 
> 030965E80-0048-0412w	QUIT
> 030965E80-0049-0412#	(closed SMTP channel - final close)
> 
> 
> 
> -
> To unsubscribe from this list: send the line "unsubscribe zmailer" in
> the body of a message to majordomo@nic.funet.fi
-
To unsubscribe from this list: send the line "unsubscribe zmailer" in
the body of a message to majordomo@nic.funet.fi