------- You are receiving this mail because: ------- You are on the CC list for the bug.
http://bugs.exim.org/show_bug.cgi?id=1246 Summary: headers_only option doesn't work Product: Exim Version: 4.72 Platform: All OS/Version: All Status: NEW Severity: bug Priority: medium Component: Transports AssignedTo: [email protected] ReportedBy: [email protected] CC: [email protected] Exim version 4.72 Tested on Debian. Hello, There is problem with headers_only transport option (tested with driver = smtp). After connection to remote host and start DATA stage, Exim doesn't send final dot when headers_only is in use. -- example -- #220 Custom LMTP server ready LHLO localhost #250 OK MAIL FROM:<> #250 OK RCPT TO:<[email protected]> #250 OK DATA #354 Enter message, ending with "." on a line by itself Received: from Debian-exim by myhost with local (Exim 4.72) id 1STHmQ-0003nV-FH for [email protected]; Sat, 12 May 2012 21:15:02 +0200 Date: Sat, 12 May 2012 21:15:02 +0200 Message-Id: <E1STHmQ-0003nV-FH@myhost> X-Failed-Recipients: [email protected] Auto-Submitted: auto-replied From: Mail Delivery System <Mailer-Daemon@myhost> To: [email protected] Subject: Mail delivery failed: returning message to sender -- end of example -- Exim hangs until timeout. After quick look into source code (Exim 4.72 & Exim 4.77) I found possible problem. In transport.c on line 902: --- source code --- if ((options & topt_no_body) == 0) { nl_check_length = abs(nl_check_length); nl_partial_match = 0; lseek(deliver_datafile, SPOOL_DATA_START_OFFSET, SEEK_SET); while ((len = read(deliver_datafile, deliver_in_buffer, DELIVER_IN_BUFFER_SIZE)) > 0) { if (!write_chunk(fd, deliver_in_buffer, len, use_crlf)) return FALSE; if (size_limit > 0) { written += len; if (written > size_limit) { len = 0; /* Pretend EOF */ break; } } } /* Finished with the check string */ nl_check_length = nl_escape_length = 0; /* A read error on the body will have left len == -1 and errno set. */ if (len != 0) return FALSE; /* If requested, add a terminating "." line (SMTP output). */ if ((options & topt_end_dot) != 0 && !write_chunk(fd, US".\n", 2, use_crlf)) return FALSE; } --- end of source code --- I think this fragment should be unconditional: if ((options & topt_end_dot) != 0 && !write_chunk(fd, US".\n", 2, use_crlf)) return FALSE; Best regards Tomasz Kusy -- Configure bugmail: http://bugs.exim.org/userprefs.cgi?tab=email -- ## List details at https://lists.exim.org/mailman/listinfo/exim-dev Exim details at http://www.exim.org/ ##
