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
