mod_proxy.h revision 92e22cf3d516024d3ed9c6a85610e927e9b3b32d
a505b2b6321b7ffc8c21684973535722f12686ffrse/* Copyright 1999-2004 The Apache Software Foundation
a505b2b6321b7ffc8c21684973535722f12686ffrse * Licensed under the Apache License, Version 2.0 (the "License");
f997d134bcee6bfa4cd87b69acee96e80c5a358bpquerna * you may not use this file except in compliance with the License.
f997d134bcee6bfa4cd87b69acee96e80c5a358bpquerna * You may obtain a copy of the License at
c1f462d7c99794eaeaeab3940aa84f36ede3e587bjh * Unless required by applicable law or agreed to in writing, software
c1f462d7c99794eaeaeab3940aa84f36ede3e587bjh * distributed under the License is distributed on an "AS IS" BASIS,
a505b2b6321b7ffc8c21684973535722f12686ffrse * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4847426da36d9b1470458521c56130e342988895rjung * See the License for the specific language governing permissions and
4847426da36d9b1470458521c56130e342988895rjung * limitations under the License.
#define CORE_PRIVATE
#include "apr_hooks.h"
#include "apr.h"
#include "apr_lib.h"
#include "apr_strings.h"
#include "apr_buckets.h"
#include "apr_md5.h"
#include "apr_network_io.h"
#include "apr_pools.h"
#include "apr_strings.h"
#include "apr_uri.h"
#include "apr_date.h"
#include "apr_strmatch.h"
#include "apr_fnmatch.h"
#include "apr_reslist.h"
#define APR_WANT_STRFUNC
#include "apr_want.h"
#include "httpd.h"
#include "http_config.h"
#include "ap_config.h"
#include "http_core.h"
#include "http_protocol.h"
#include "http_request.h"
#include "http_vhost.h"
#include "http_main.h"
#include "http_log.h"
#include "http_connection.h"
#include "util_filter.h"
#include "util_ebcdic.h"
enum enctype {
struct proxy_remote {
struct proxy_alias {
const char *real;
const char *fake;
struct dirconn_entry {
char *name;
struct noproxy_entry {
const char *name;
char req_set;
char viaopt_set;
char recv_buffer_size_set;
char io_buffer_size_set;
long maxfwd;
char maxfwd_set;
int error_override;
int error_override_set;
int preserve_host;
int preserve_host_set;
char timeout_set;
char badopt_set;
char proxy_status_set;
const char *hostname;
int is_ssl;
struct proxy_conn_pool {
#if APR_HAS_THREADS
int status;
struct proxy_worker {
const char *name;
char timeout_set;
apr_interval_time_t acquire; /* acquire timeout when the maximum number of connections is exceeded */
char acquire_set;
char recv_buffer_size_set;
char io_buffer_size_set;
char keepalive;
char keepalive_set;
int is_address_reusable;
#if APR_HAS_THREADS
struct proxy_balancer {
char max_attempts_set;
#if APR_HAS_THREADS
#if APR_HAS_THREADS
#if !defined(WIN32)
#define PROXY_DECLARE_DATA
#define PROXY_DECLARE_DATA
char *url))
request_rec *r,
/* proxy_util.c */
int isenc);
PROXY_DECLARE(int) ap_proxy_checkproxyblock(request_rec *r, proxy_server_conf *conf, apr_sockaddr_t *uri_addr);
PROXY_DECLARE(apr_status_t) ap_proxy_string_read(conn_rec *c, apr_bucket_brigade *bb, char *buff, size_t bufflen, int *eos);
PROXY_DECLARE(int) ap_proxy_connect_to_backend(apr_socket_t **, const char *, apr_sockaddr_t *, const char *, proxy_server_conf *, server_rec *, apr_pool_t *);
const char *url);
apr_pool_t *p,
const char *url);
server_rec *s);
server_rec *s);
const char *url);
apr_pool_t *p,
const char *url);
* The balancer then rewrites the url to particular worker, like http://host:port
request_rec *r,
char **url);
request_rec *r,
char **url,
const char *proxyname,
char *server_portstr,
int server_portstr_size);
server_rec *s);
server_rec *s);
server_rec *s);
server_rec *s);
#define PROXY_HAS_SCOREBOARD 0
int ap_proxy_lb_workers(void);