mod_proxy.h revision 97a5bc6357edb8fc5adc1b4caca85c271449c180
2d0611ffc9f91c5fc2ddccb93f9a3d17791ae650takashi/* Copyright 1999-2004 The Apache Software Foundation
dc0d8d65d35787d30a275895ccad8d8e1b58a5ednd * Licensed under the Apache License, Version 2.0 (the "License");
dc0d8d65d35787d30a275895ccad8d8e1b58a5ednd * you may not use this file except in compliance with the License.
dc0d8d65d35787d30a275895ccad8d8e1b58a5ednd * You may obtain a copy of the License at
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor * Unless required by applicable law or agreed to in writing, software
e8df3f2d5908b6903c510c8e839a5db27d1e104bgryzor * distributed under the License is distributed on an "AS IS" BASIS,
6ae232055d4d8a97267517c5e50074c2c819941and * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
dc0d8d65d35787d30a275895ccad8d8e1b58a5ednd * See the License for the specific language governing permissions and
6ae232055d4d8a97267517c5e50074c2c819941and * 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
struct proxy_worker {
int status;
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;
proxy_worker *w;
struct proxy_balancer {
char max_attempts_set;
#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);
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);