From: Stephan Bosch Date: Mon, 9 Mar 2026 06:51:19 +0000 (+0100) Subject: lib-http: http-server - Add global request_finished() callback X-Git-Tag: 2.4.3~94 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6c56e682fe55ecb11537beaa078b4ceded62c7cd;p=thirdparty%2Fdovecot%2Fcore.git lib-http: http-server - Add global request_finished() callback --- diff --git a/src/lib-http/http-server-request.c b/src/lib-http/http-server-request.c index a9c148d5b5..093fdbb361 100644 --- a/src/lib-http/http-server-request.c +++ b/src/lib-http/http-server-request.c @@ -424,9 +424,14 @@ void http_server_request_finished(struct http_server_request *req) http_server_tunnel_callback_t tunnel_callback = resp->tunnel_callback; void *tunnel_context = resp->tunnel_context; + i_assert(conn != NULL); i_assert(req->state < HTTP_SERVER_REQUEST_STATE_FINISHED); req->state = HTTP_SERVER_REQUEST_STATE_FINISHED; + if (conn->callbacks != NULL && + conn->callbacks->request_finished != NULL) + conn->callbacks->request_finished(conn->context, req); + http_server_connection_remove_request(conn, req); conn->stats.response_count++; diff --git a/src/lib-http/http-server.h b/src/lib-http/http-server.h index c27170777a..12dc57f3d4 100644 --- a/src/lib-http/http-server.h +++ b/src/lib-http/http-server.h @@ -343,6 +343,12 @@ struct http_server_callbacks { struct http_server_request *req, struct http_url *target); + /* Called once a request is finished (response is sent). This also + catches requests that fail before the handle_request() callback is + reached. */ + void (*request_finished)(void *context, + struct http_server_request *req); + /* Called once the connection is destroyed. */ void (*connection_destroy)(void *context, const char *reason); };