backend_relay_cmd_data(struct submission_backend *_backend,
struct smtp_server_cmd_ctx *cmd,
struct smtp_server_transaction *trans,
- struct istream *data_input)
+ struct istream *data_input, uoff_t data_size ATTR_UNUSED)
{
struct submission_backend_relay *backend =
(struct submission_backend_relay *)_backend;
int submission_backend_cmd_data(struct submission_backend *backend,
struct smtp_server_cmd_ctx *cmd,
struct smtp_server_transaction *trans,
- struct istream *data_input)
+ struct istream *data_input, uoff_t data_size)
{
- return backend->v.cmd_data(backend, cmd, trans, data_input);
+ return backend->v.cmd_data(backend, cmd, trans, data_input, data_size);
}
int submission_backend_cmd_vrfy(struct submission_backend *backend,
int (*cmd_data)(struct submission_backend *backend,
struct smtp_server_cmd_ctx *cmd,
struct smtp_server_transaction *trans,
- struct istream *data_input);
+ struct istream *data_input, uoff_t data_size);
int (*cmd_vrfy)(struct submission_backend *backend,
struct smtp_server_cmd_ctx *cmd,
int submission_backend_cmd_data(struct submission_backend *backend,
struct smtp_server_cmd_ctx *cmd,
struct smtp_server_transaction *trans,
- struct istream *data_input);
+ struct istream *data_input, uoff_t data_size);
int submission_backend_cmd_vrfy(struct submission_backend *backend,
struct smtp_server_cmd_ctx *cmd,
{
struct client *client = conn_ctx;
struct istream *data_input = client->state.data_input;
+ uoff_t data_size;
struct istream *inputs[3];
string_t *added_headers;
const unsigned char *data;
inputs[2] = NULL;
data_input = i_stream_create_concat(inputs);
+ data_size = client->state.data_size + str_len(added_headers);
+
i_stream_unref(&inputs[0]);
i_stream_unref(&inputs[1]);
ret = submission_backend_cmd_data(client->backend_default, cmd,
- trans, data_input);
+ trans, data_input, data_size);
i_stream_unref(&data_input);
return ret;