summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorRuediger Pluem <rpluem@apache.org>2021-09-21 20:03:52 +0000
committerRuediger Pluem <rpluem@apache.org>2021-09-21 20:03:52 +0000
commit6d9a8cd1f243d9f6df4481f5ec19ec0d96109654 (patch)
treef9b03537abb7d19e268986bb98fdee84ce38f421 /include
parent8e54d2793c4c3c50b678f647cd2f9f21610409c3 (diff)
downloadhttpd-6d9a8cd1f243d9f6df4481f5ec19ec0d96109654.tar.gz
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.h3
-rw-r--r--include/http_connection.h15
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.