changeset 20265:2e9253743a09

lmtp: Fixed error logging when writing to temp file
author Timo Sirainen <timo.sirainen@dovecot.fi>
date Mon, 16 May 2016 19:16:55 +0300
parents 0fd0fb05e2b3
children bd22ff741f5d
files src/lmtp/commands.c
diffstat 1 files changed, 8 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/lmtp/commands.c	Mon May 16 15:49:08 2016 +0300
+++ b/src/lmtp/commands.c	Mon May 16 19:16:55 2016 +0300
@@ -1171,7 +1171,6 @@
 {
 	struct client_state *state = &client->state;
 	string_t *path;
-	ssize_t ret;
 	int fd;
 
 	if (state->mail_data_output != NULL) {
@@ -1200,15 +1199,17 @@
 
 	state->mail_data_fd = fd;
 	state->mail_data_output = o_stream_create_fd_file(fd, 0, FALSE);
+	o_stream_set_name(state->mail_data_output, str_c(path));
 	o_stream_cork(state->mail_data_output);
 
-	ret = o_stream_send(state->mail_data_output,
-			    state->mail_data->data, state->mail_data->used);
-	if (ret != (ssize_t)state->mail_data->used)
+	o_stream_nsend(state->mail_data_output,
+		       state->mail_data->data, state->mail_data->used);
+	o_stream_nsend(client->state.mail_data_output, data, size);
+	if (o_stream_nfinish(client->state.mail_data_output) < 0) {
+		i_error("write(%s) failed: %s", str_c(path),
+			o_stream_get_error(client->state.mail_data_output));
 		return -1;
-	if (o_stream_send(client->state.mail_data_output,
-			  data, size) != (ssize_t)size)
-		return -1;
+	}
 	return 0;
 }