1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-02 18:26:38 +03:00
Files
apache/modules/proxy/proxy_util.h
Yann Ylavic 6716ada174 mod_proxy: Fix canonicalisation and FCGI env (PATH_INFO, SCRIPT_NAME) for
"balancer:" URLs set via SetHandler, also allowing for "unix:"
           sockets with BalancerMember(s).  PR 69168.

* modules/proxy/proxy_util.h, modules/proxy/proxy_util.c:
  Move proxy_interpolate() from mod_proxy.c to ap_proxy_interpolate(),
  exported locally only (non public).
  Move proxy_fixup() from mod_proxy.c to ap_proxy_canon_url(), exported
  locally only too (non public).
  Rollback ap_proxy_fixup_uds_filename() to a local fixup_uds_filename()
  usable from proxy_util.c only. The public function will be removed in
  a following commit.

* modules/proxy/mod_proxy.h:
  Note that ap_proxy_fixup_uds_filename() is deprecated.

* modules/proxy/mod_proxy.c:
  Just use ap_proxy_canon_url() from proxy_fixup() and proxy_handler()
  for SetHandler URLs.

* modules/proxy/mod_proxy_balancer.c:
  Do not canonicalize the path from proxy_balancer_canon() anymore but
  rather from balancer_fixup() where the balancer URL is rewritten to
  the BalancerMember URL.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1919022 13f79535-47bb-0310-9956-ffa450edef68
2024-07-08 13:59:50 +00:00

99 lines
3.2 KiB
C

/* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef PROXY_UTIL_H_
#define PROXY_UTIL_H_
/**
* @file proxy_util.h
* @brief Internal interfaces private to mod_proxy.
*
* @defgroup MOD_PROXY_PRIVATE Private
* @ingroup MOD_PROXY
* @{
*/
PROXY_DECLARE(int) ap_proxy_is_ipaddr(struct dirconn_entry *This, apr_pool_t *p);
PROXY_DECLARE(int) ap_proxy_is_domainname(struct dirconn_entry *This, apr_pool_t *p);
PROXY_DECLARE(int) ap_proxy_is_hostname(struct dirconn_entry *This, apr_pool_t *p);
PROXY_DECLARE(int) ap_proxy_is_word(struct dirconn_entry *This, apr_pool_t *p);
extern PROXY_DECLARE_DATA int proxy_lb_workers;
extern PROXY_DECLARE_DATA const apr_strmatch_pattern *ap_proxy_strmatch_path;
extern PROXY_DECLARE_DATA const apr_strmatch_pattern *ap_proxy_strmatch_domain;
/**
* Register optional functions declared within proxy_util.c.
*/
void proxy_util_register_hooks(apr_pool_t *p);
/*
* Get the busy counter from the shared worker memory
*
* @param worker Pointer to the worker structure.
* @return apr_size_t value atomically read for the worker.
*/
PROXY_DECLARE(apr_size_t) ap_proxy_get_busy_count(proxy_worker *worker);
/*
* Set the busy counter from the shared worker memory
*
* @param worker Pointer to the worker structure.
* @param to value to set the busy counter.
* @return void
*/
PROXY_DECLARE(void) ap_proxy_set_busy_count(proxy_worker *worker, apr_size_t to);
/*
* decrement the busy counter from the shared worker memory
* note it is called by apr_pool_cleanup_register()
* therfore the void * and apr_status_t.
*
* @param worker_ Pointer to the worker structure.
* @return apr_status_t returns APR_SUCCESS.
*/
PROXY_DECLARE(apr_status_t) ap_proxy_decrement_busy_count(void *worker_);
/*
* increment the busy counter from the shared worker memory
*
* @param worker Pointer to the worker structure.
* @return void
*/
PROXY_DECLARE(void) ap_proxy_increment_busy_count(proxy_worker *worker);
/*
* interpolate an env str in a configuration string
*
* @param r current request
* @param str the string to interpolcate
* @return the interpolated string
*/
PROXY_DECLARE(const char *) ap_proxy_interpolate(request_rec *r,
const char *str);
/*
* Canonicalize the URL in r->filename
* @param r current request
* @return OK or an HTTP_XXX error
*/
PROXY_DECLARE(int) ap_proxy_canon_url(request_rec *r);
/** @} */
#endif /* PROXY_UTIL_H_ */