mirror of
https://github.com/apache/httpd.git
synced 2025-08-07 04:02:58 +03:00
mod_proxy: Add proxy check_trans hook.
This allows proxy modules to decline request handling at early stage. Then mod_proxy_wstunnel can implement that hook to verify that an Upgrade is requested, and otherwise hand over to mod_proxy_http. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1869399 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -764,6 +764,15 @@ PROXY_DECLARE(int) ap_proxy_trans_match(request_rec *r, struct proxy_alias *ent,
|
||||
}
|
||||
|
||||
if (found) {
|
||||
/* A proxy module is assigned this URL, check whether it's interested
|
||||
* in the request itself (e.g. proxy_wstunnel cares about Upgrade
|
||||
* requests only, and could hand over to proxy_http otherwise).
|
||||
*/
|
||||
int rc = proxy_run_check_trans(r, found + 6);
|
||||
if (rc != OK && rc != DECLINED) {
|
||||
return DONE;
|
||||
}
|
||||
|
||||
r->filename = found;
|
||||
r->handler = "proxy-server";
|
||||
r->proxyreq = PROXYREQ_REVERSE;
|
||||
@@ -3120,6 +3129,7 @@ APR_HOOK_STRUCT(
|
||||
APR_HOOK_LINK(pre_request)
|
||||
APR_HOOK_LINK(post_request)
|
||||
APR_HOOK_LINK(request_status)
|
||||
APR_HOOK_LINK(check_trans)
|
||||
)
|
||||
|
||||
APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(proxy, PROXY, int, scheme_handler,
|
||||
@@ -3128,6 +3138,9 @@ APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(proxy, PROXY, int, scheme_handler,
|
||||
char *url, const char *proxyhost,
|
||||
apr_port_t proxyport),(r,worker,conf,
|
||||
url,proxyhost,proxyport),DECLINED)
|
||||
APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(proxy, PROXY, int, check_trans,
|
||||
(request_rec *r, const char *url),
|
||||
(r, url), DECLINED)
|
||||
APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(proxy, PROXY, int, canon_handler,
|
||||
(request_rec *r, char *url),(r,
|
||||
url),DECLINED)
|
||||
|
Reference in New Issue
Block a user