changeset 19685:71627df01608

lib-http: Add function to update HTTP response status
author Aki Tuomi <aki.tuomi@dovecot.fi>
date Mon, 01 Feb 2016 14:44:11 +0200
parents cecbfa036d9f
children d3aa060852e6
files src/lib-http/http-server-response.c src/lib-http/http-server.h
diffstat 2 files changed, 13 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-http/http-server-response.c	Thu Jan 21 19:49:12 2016 +0200
+++ b/src/lib-http/http-server-response.c	Mon Feb 01 14:44:11 2016 +0200
@@ -92,6 +92,16 @@
 	str_printfa(resp->headers, "%s: %s\r\n", key, value);
 }
 
+void http_server_response_update_status(struct http_server_response *resp,
+					unsigned int status,
+					const char *reason)
+{
+	i_assert(!resp->submitted);
+	resp->status = status;
+	/* free not called because pool is alloconly */
+	resp->reason = p_strdup(resp->request->pool, reason);
+}
+
 void http_server_response_set_date(struct http_server_response *resp,
 				    time_t date)
 {
--- a/src/lib-http/http-server.h	Thu Jan 21 19:49:12 2016 +0200
+++ b/src/lib-http/http-server.h	Mon Feb 01 14:44:11 2016 +0200
@@ -144,6 +144,9 @@
 	unsigned int status, const char *reason);
 void http_server_response_add_header(struct http_server_response *resp,
 				    const char *key, const char *value);
+/* Change the response code and text, cannot be used after submission */
+void http_server_response_update_status(struct http_server_response *resp,
+					unsigned int status, const char *reason);
 void http_server_response_set_date(struct http_server_response *resp,
 				    time_t date);
 void http_server_response_set_payload(struct http_server_response *resp,