if (conn->closing)
break;
- if (!smtp_server_connection_check_pipeline(conn)) {
+ if (!smtp_server_connection_check_pipeline(conn))
+ pipeline_blocked = TRUE;
+ if (pipeline_blocked &&
+ !smtp_command_parser_pending_data(conn->smtp_parser)) {
smtp_server_connection_input_halt(conn);
return;
}
if (conn->disconnected)
return;
- if (conn->input_broken || conn->closing || pipeline_blocked) {
+ if (conn->input_broken || conn->closing) {
smtp_server_connection_input_halt(conn);
return;
}
reply */
smtp_server_command_ready_to_reply(pending_command);
}
+
+ if (pipeline_blocked &&
+ !smtp_command_parser_pending_data(conn->smtp_parser)) {
+ smtp_server_connection_input_halt(conn);
+ return;
+ }
}
}