changeset 20254:5e50b5711dd9

doveadm-server: Handle istream send error.
author Aki Tuomi <aki.tuomi@dovecot.fi>
date Tue, 26 Apr 2016 19:26:34 +0300
parents 3d700b8ae925
children 8ccdc8b81cd5
files src/doveadm/client-connection-http.c
diffstat 1 files changed, 7 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/doveadm/client-connection-http.c	Fri Apr 29 21:36:31 2016 +0300
+++ b/src/doveadm/client-connection-http.c	Tue Apr 26 19:26:34 2016 +0300
@@ -189,7 +189,13 @@
 	string_t *escaped;
 	escaped = str_new(conn->client.pool, 10);
 	o_stream_nsend_str(conn->client.output,"[\"doveadmResponse\",");
-	o_stream_send_istream(conn->client.output, result);
+	if (o_stream_send_istream(conn->client.output, result) < 0) {
+		if (conn->client.output->stream_errno != 0) {
+			i_fatal("write(%s) failed: %s", o_stream_get_name(conn->client.output), o_stream_get_error(conn->client.output));
+		} else if (result->stream_errno != 0) {
+			i_fatal("read(%s) failed: %s", i_stream_get_name(result), i_stream_get_error(result));
+		} else i_unreached(); /* either it's output or input error */
+	}
 	o_stream_nsend_str(conn->client.output,",\"");
 	if (conn->method_id != NULL) {
 		json_append_escaped(escaped, conn->method_id);