From: Stephan Bosch Date: Tue, 19 Nov 2019 00:34:06 +0000 (+0100) Subject: lib-http: http-server-request - Add http_server_request_fail_bad_method(). X-Git-Tag: 2.3.11.2~320 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=11bdfbf1a9db40b162c6c85faaeef160e7241f25;p=thirdparty%2Fdovecot%2Fcore.git lib-http: http-server-request - Add http_server_request_fail_bad_method(). --- diff --git a/src/lib-http/http-server-request.c b/src/lib-http/http-server-request.c index 6328d02067..d7d22f8560 100644 --- a/src/lib-http/http-server-request.c +++ b/src/lib-http/http-server-request.c @@ -503,6 +503,20 @@ void http_server_request_fail_auth_basic(struct http_server_request *req, http_server_request_fail_auth(req, reason, &chlng); } +void http_server_request_fail_bad_method(struct http_server_request *req, + const char *allow) +{ + struct http_server_response *resp; + const char *reason = "Method Not Allowed"; + + req->failed = TRUE; + + resp = http_server_request_create_fail_response(req, 405, reason, + reason); + http_server_response_add_header(resp, "Allow", allow); + http_server_response_submit(resp); +} + /* * Payload input stream */ diff --git a/src/lib-http/http-server.h b/src/lib-http/http-server.h index 0eea4afc51..fce35eed6c 100644 --- a/src/lib-http/http-server.h +++ b/src/lib-http/http-server.h @@ -264,6 +264,12 @@ void http_server_request_fail_auth_basic(struct http_server_request *req, const char *reason, const char *realm) ATTR_NULL(2); +/* Send a 405 failure response for a request with an unknown method. The allow + parameter is the value used for the mandatory "Allow" header in the response. + */ +void http_server_request_fail_bad_method(struct http_server_request *req, + const char *allow); + /* Call the specified callback when HTTP request is destroyed. This happens after one of the following: