rcpt->rcpt_to_callback(success, line, rcpt->context);
}
-static void lmtp_client_send_data_cmd(struct lmtp_client *client)
+static int lmtp_client_send_data_cmd(struct lmtp_client *client)
{
if (client->rcpt_next_receive_idx < array_count(&client->recipients))
- return;
+ return 0;
- if (client->global_fail_string != NULL || !client->rcpt_to_successes)
+ if (client->global_fail_string != NULL || !client->rcpt_to_successes) {
lmtp_client_fail(client, client->global_fail_string);
- else {
+ return -1;
+ } else {
client->input_state++;
o_stream_send_str(client->output, "DATA\r\n");
+ return 0;
}
}
lmtp_client_rcpt_next(client, line);
if (client->data_input == NULL)
break;
- lmtp_client_send_data_cmd(client);
+ if (lmtp_client_send_data_cmd(client) < 0)
+ return -1;
break;
case LMTP_INPUT_STATE_DATA_CONTINUE:
/* Start sending DATA */
i_stream_ref(data_input);
client->data_input = data_input;
- lmtp_client_send_data_cmd(client);
+ (void)lmtp_client_send_data_cmd(client);
}
void lmtp_client_send_more(struct lmtp_client *client)