sendmail: don't talk until 220 code is seen. Closes 3487
function old new delta sendmail_main 934 939 +5 smtp_checkp 167 165 -2 packed_usage 28634 28621 -13 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
@ -57,10 +57,13 @@ void FAST_FUNC launch_helper(const char **argv)
|
||||
G.helper_pid = xvfork();
|
||||
|
||||
i = (!G.helper_pid) * 2; // for parent:0, for child:2
|
||||
close(pipes[i + 1]); // 1 or 3 - closing one write end
|
||||
close(pipes[2 - i]); // 2 or 0 - closing one read end
|
||||
xmove_fd(pipes[i], STDIN_FILENO); // 0 or 2 - using other read end
|
||||
xmove_fd(pipes[3 - i], STDOUT_FILENO); // 3 or 1 - other write end
|
||||
close(pipes[i + 1]); // 1 or 3 - closing one write end
|
||||
close(pipes[2 - i]); // 2 or 0 - closing one read end
|
||||
xmove_fd(pipes[i], STDIN_FILENO); // 0 or 2 - using other read end
|
||||
xmove_fd(pipes[3 - i], STDOUT_FILENO); // 3 or 1 - using other write end
|
||||
// End result:
|
||||
// parent stdout [3] -> child stdin [2]
|
||||
// child stdout [1] -> parent stdin [0]
|
||||
|
||||
if (!G.helper_pid) {
|
||||
// child: try to execute connection helper
|
||||
|
Reference in New Issue
Block a user