diff options
author | Ruediger Pluem <rpluem@apache.org> | 2021-09-21 22:03:52 +0200 |
---|---|---|
committer | Ruediger Pluem <rpluem@apache.org> | 2021-09-21 22:03:52 +0200 |
commit | 6d9a8cd1f243d9f6df4481f5ec19ec0d96109654 (patch) | |
tree | f9b03537abb7d19e268986bb98fdee84ce38f421 /include | |
parent | No nullglob with ls.. (diff) | |
download | apache2-6d9a8cd1f243d9f6df4481f5ec19ec0d96109654.tar.xz apache2-6d9a8cd1f243d9f6df4481f5ec19ec0d96109654.zip |
In case one of the pre_connection hooks causes the hook run to stop by an error
the pre_connection hook of the core module maybe did not run
(it is APR_HOOK_REALLY_LAST) and hence we missed to
- Put the socket in c->conn_config
- Setup core output and input filters
- Set socket options and timeouts
For calls of ap_run_pre_connection where this matters create a wrapper named
ap_pre_connection that ensures that this happens.
* include/ap_mmn.h: Bump minor version as we added new ap_pre_connection
function.
* include/http_connection.h: Declare ap_pre_connection prototype.
* server/connection.c: Make use of ap_pre_connection in ap_process_connection.
* server/core.c: Implement ap_pre_connection.
* server/mpm/event/event.c: Make use of ap_pre_connection.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1893497 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'include')
-rw-r--r-- | include/ap_mmn.h | 3 | ||||
-rw-r--r-- | include/http_connection.h | 15 |
2 files changed, 17 insertions, 1 deletions
diff --git a/include/ap_mmn.h b/include/ap_mmn.h index 349e56274c..5b21e78d10 100644 --- a/include/ap_mmn.h +++ b/include/ap_mmn.h @@ -680,6 +680,7 @@ * 20210531.3 (2.5.1-dev) Add hook child_stopping to get informed that a child * is being shut down. * 20210531.4 (2.5.1-dev) Add ap_create_connection + * 20210531.5 (2.5.1-dev) Add ap_pre_connection */ #define MODULE_MAGIC_COOKIE 0x41503235UL /* "AP25" */ @@ -687,7 +688,7 @@ #ifndef MODULE_MAGIC_NUMBER_MAJOR #define MODULE_MAGIC_NUMBER_MAJOR 20210531 #endif -#define MODULE_MAGIC_NUMBER_MINOR 4 /* 0...n */ +#define MODULE_MAGIC_NUMBER_MINOR 5 /* 0...n */ /** * Determine if the server's current MODULE_MAGIC_NUMBER is at least a diff --git a/include/http_connection.h b/include/http_connection.h index b49a2577c5..747a84af6e 100644 --- a/include/http_connection.h +++ b/include/http_connection.h @@ -136,6 +136,21 @@ AP_DECLARE_HOOK(int,process_connection,(conn_rec *c)) AP_DECLARE_HOOK(int,pre_close_connection,(conn_rec *c)) /** + * This is a wrapper around ap_run_pre_connection. In case that + * ap_run_pre_connection returns an error it marks the connection as + * aborted and ensures that the basic connection setup normally done + * by the core module is done in case it was not done so far. + * @param c The connection on which the request has been received. + * Same as for the pre_connection hook. + * @param csd The mechanism on which this connection is to be read. + * Most times this will be a socket, but it is up to the module + * that accepts the request to determine the exact type. + * Same as for the pre_connection hook. + * @return The result of ap_run_pre_connection + */ +AP_DECLARE(int) ap_pre_connection(conn_rec *c, void *csd); + +/** * Create a new server/incoming or client/outgoing/proxy connection * @param p The pool from which to allocate the connection record * @param server The server record to create the connection too. |