if (!submission_backend_handle_failure(backend, cmd))
return -1;
+ i_assert(backend->started);
+
if (backend->v.cmd_rcpt == NULL) {
/* backend is not interested, respond right away */
return 1;
if (!submission_backend_handle_failure(backend, cmd))
return -1;
+ submission_backend_start(backend);
+
if (backend->v.cmd_rset == NULL) {
/* backend is not interested, respond right away */
return 1;
return 0;
}
+ i_assert(backend->started);
+
return backend->v.cmd_data(backend, cmd, trans,
backend->data_input, backend->data_size);
}
/* failure on default backend closes the client connection */
i_assert(backend->fail_reason == NULL);
+ submission_backend_start(backend);
+
if (backend->v.cmd_vrfy == NULL) {
/* backend is not interested, respond right away */
return 1;
/* failure on default backend closes the client connection */
i_assert(backend->fail_reason == NULL);
+ submission_backend_start(backend);
+
if (backend->v.cmd_noop == NULL) {
/* backend is not interested, respond right away */
return 1;
/* failure on default backend closes the client connection */
i_assert(backend->fail_reason == NULL);
+ if (!backend->started) {
+ /* quit before backend even started */
+ return 1;
+ }
if (backend->v.cmd_quit == NULL) {
/* backend is not interested, respond right away */
return 1;