ietf-smtp
[Top] [All Lists]

Re: SendMail follows a NO RETRY 5yz logic as defined by specs.

2008-08-12 05:24:44

Hector Santos wrote:

lines 3399 and 3400 of deliver.c:
 
| if (i == EX_TEMPFAIL)           
|         to->q_state = QS_RETRY; 
 
This happens for i != EX_OK after (in line 3372):
 
Nope, thats not it. Thats for sending the RCTP commands.
We are looking for something along the lines
 
   if (rcode == EX_UNAVAILABLE)
            to->q_state = QS_QUEUEUP

Maybe we are looking for line 3396:

| markfailure(e, to, mci, i, false);

Markfailure does a QS_QUEUEUP, it's the switch you have
quoted here the day before yesterday (line 3676 ff.):

| markfailure(e, q, mci, rcode, ovr)
[...]
|          case EX_TEMPFAIL:
[...]
|                q->q_state = QS_QUEUEUP;

In line 3396 i == EX_TEMPFAIL for a 4xx reply code in 
smtprcpt() and similar problems, and therefore rcode 
is EX_TEMPFAIL in markfailure(), resulting in QUEUEUP. 

We now know its there.

Yep, it is what I guessed the day before yesterday:

The switch you've quoted is used also after RCPT TO
in smtprcpt(), not only after DATA.  It is a part of
the markfailure() used everywhere.

 Frank