changeset 19729:283300040a6e

lib-http: server: Fixed datastack framing problem in error handling of response sending. The returned error string crossed a data stack frame, which wasn't handled correctly.
author Stephan Bosch <stephan@rename-it.nl>
date Mon, 08 Feb 2016 22:51:14 +0100
parents ea58eba051b5
children 5a31f0ae5b6f
files src/lib-http/http-server-response.c
diffstat 1 files changed, 5 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-http/http-server-response.c	Mon Feb 08 22:49:28 2016 +0100
+++ b/src/lib-http/http-server-response.c	Mon Feb 08 22:51:14 2016 +0100
@@ -418,10 +418,15 @@
 int http_server_response_send(struct http_server_response *resp,
 			     const char **error_r)
 {
+	char *errstr = NULL;
 	int ret;
 
 	T_BEGIN {
 		ret = http_server_response_send_real(resp, error_r);
+		if (ret < 0)
+			errstr = i_strdup(*error_r);
 	} T_END;
+	*error_r = t_strdup(errstr);
+	i_free(errstr);
 	return ret;
 }