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

Reply via email to