]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-http: server: Fixed memory problem reported by Valgrind, which was caused by...
authorStephan Bosch <stephan@rename-it.nl>
Mon, 8 Feb 2016 21:52:38 +0000 (22:52 +0100)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Wed, 10 Feb 2016 11:55:26 +0000 (13:55 +0200)
Fixed by referencing the request while it is being sent.

src/lib-http/http-server-connection.c

index 308925e75e4800f2b83781d12f5c6debcae01307..699daf80cb69b2d1be62e225c49987d59867d410 100644 (file)
@@ -594,6 +594,7 @@ http_server_connection_next_response(struct http_server_connection *conn)
 {
        struct http_server_request *req;
        const char *error = NULL;
+       int ret;
 
        if (conn->output_locked)
                return FALSE;
@@ -645,7 +646,11 @@ http_server_connection_next_response(struct http_server_connection *conn)
 
        http_server_connection_timeout_start(conn);
 
-       if (http_server_response_send(req->response, &error) < 0) {
+       http_server_request_ref(req);
+       ret = http_server_response_send(req->response, &error);
+       http_server_request_unref(&req);
+
+       if (ret < 0) {
                if (error != NULL) {
                        http_server_connection_error(conn,
                                "Failed to send response: %s", error);