bug in v3.4.4 (and v3.6.0) lmtpd?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

as mentioned in the post from December 30th, 2022, (Subject: "Cyrus IMAP error (?): 'Undefined error 0'..."), we've been seeing the following response from the Cyrus imapd for successful delivery to a mailbox:

250 2.1.5 Undefined error: 0 SESSIONID=<imapd-1672619404-57025-2-15431856533157375633>

I started digging in the sources and found that between 3.0.8 and 3.4.4 the following code was added to the top of lmtpengine.c:send_lmtp_error():

    int code;

    if (resp) {
        int i;

        for (i = 0; i < strarray_size(resp); i++) {
            prot_puts(pout, strarray_nth(resp, i));
        }
        return;
    }

Presumably the "prot_puts(pout, strarray_nth(resp, i));" would emit the correct success notification ("250 2.1.5 Ok SESSIONID=<sess-id>"), but this depends on "resp" being non-null, however, in lmtpd.c:deliver(), in near the bottom of the loop which iterates through all the recipients, we see this line:

        msg_setrcpt_status(msgdata, n, r, NULL);

Which causes msg_setrcpt_status() to always assign:

    m->rcpt[rcpt_num]->resp = NULL;

Because resp is NULL, the "if (resp) {" block in send_lmtp_error() is not invoked, and control continues at the switch statement, which tests (r). As r contains zero (which indicates no error, I presume), the following matches:

    case 0:
        code = LMTP_OK;
        break;

which causes this:

    prot_printf(pout, error_message(code), error_message(r), session_id());

to emit the famous "250 2.1.5 Undefined error: 0 SESSIONID=..." line.

This would seem to be a bug.

The 3.0.8 send_lmtp_error() emits the success notification line when r == 0. There seem to be some wires crossed about how to propagate success/failure status.

The 3.6.0 code seems to be the same as the 3.4.4 code.

-Rob


------------------------------------------
Cyrus: Info
Permalink: https://cyrus.topicbox.com/groups/info/T98f17a6ea7456fc1-M0902a38fac2c64d3f7fa3643
Delivery options: https://cyrus.topicbox.com/groups/info/subscription




[Index of Archives]     [Cyrus SASL]     [Squirrel Mail]     [Asterisk PBX]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [KDE]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux