Return-Path: Delivered-To: apmail-httpd-cvs-archive@www.apache.org Received: (qmail 41172 invoked from network); 11 Aug 2004 22:00:50 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 11 Aug 2004 22:00:50 -0000 Received: (qmail 13664 invoked by uid 500); 11 Aug 2004 22:00:50 -0000 Delivered-To: apmail-httpd-cvs-archive@httpd.apache.org Received: (qmail 13479 invoked by uid 500); 11 Aug 2004 22:00:48 -0000 Mailing-List: contact cvs-help@httpd.apache.org; run by ezmlm Precedence: bulk Reply-To: dev@httpd.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list cvs@httpd.apache.org Received: (qmail 13466 invoked by uid 500); 11 Aug 2004 22:00:48 -0000 Delivered-To: apmail-httpd-2.0-cvs@apache.org Received: (qmail 13460 invoked by uid 99); 11 Aug 2004 22:00:48 -0000 X-ASF-Spam-Status: No, hits=-2.8 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.27.1) with SMTP; Wed, 11 Aug 2004 15:00:48 -0700 Received: (qmail 41121 invoked by uid 1134); 11 Aug 2004 22:00:47 -0000 Date: 11 Aug 2004 22:00:47 -0000 Message-ID: <20040811220047.41120.qmail@minotaur.apache.org> From: wrowe@apache.org To: httpd-2.0-cvs@apache.org Subject: cvs commit: httpd-2.0/modules/proxy mod_proxy.h proxy_util.c X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N wrowe 2004/08/11 15:00:47 Modified: modules/proxy mod_proxy.h proxy_util.c Log: Add ap_proxy_pre_request API function. It calls the actual module pre_request hook if present Submitted by: mturk Revision Changes Path 1.100 +4 -2 httpd-2.0/modules/proxy/mod_proxy.h Index: mod_proxy.h =================================================================== RCS file: /home/cvs/httpd-2.0/modules/proxy/mod_proxy.h,v retrieving revision 1.99 retrieving revision 1.100 diff -u -r1.99 -r1.100 --- mod_proxy.h 11 Aug 2004 21:56:38 -0000 1.99 +++ mod_proxy.h 11 Aug 2004 22:00:47 -0000 1.100 @@ -249,11 +249,13 @@ #endif }; -/* data structure for set/get module_config */ +/* per connection data structure for set/get module_config */ typedef struct { char *url; /* rewtitten url */ struct proxy_balancer *balancer; /* load balancer to use */ proxy_worker *worker; /* most suitable worker */ + proxy_conn_rec *conn_rec; + proxy_conn *conn; void *opaque; /* module private data */ } proxy_module_conf; @@ -350,7 +352,7 @@ PROXY_DECLARE(struct proxy_balancer *) ap_proxy_get_balancer(apr_pool_t *p, proxy_server_conf *conf, const char *url); PROXY_DECLARE(const char *) ap_proxy_add_balancer(struct proxy_balancer **balancer, apr_pool_t *p, proxy_server_conf *conf, const char *url); PROXY_DECLARE(void) ap_proxy_add_worker_to_balancer(struct proxy_balancer *balancer, proxy_worker *worker); - +PROXY_DECLARE(int) ap_proxy_pre_request(proxy_worker **worker, struct proxy_balancer **balancer, request_rec *r, proxy_server_conf *conf, char **url); /* For proxy_util */ extern module PROXY_DECLARE_DATA proxy_module; 1.112 +41 -0 httpd-2.0/modules/proxy/proxy_util.c Index: proxy_util.c =================================================================== RCS file: /home/cvs/httpd-2.0/modules/proxy/proxy_util.c,v retrieving revision 1.111 retrieving revision 1.112 diff -u -r1.111 -r1.112 --- proxy_util.c 11 Aug 2004 21:49:40 -0000 1.111 +++ proxy_util.c 11 Aug 2004 22:00:47 -0000 1.112 @@ -1192,6 +1192,47 @@ } +PROXY_DECLARE(int) ap_proxy_pre_request(proxy_worker **worker, + struct proxy_balancer **balancer, + request_rec *r, + proxy_server_conf *conf, char **url) +{ + int access_status; + + access_status = proxy_run_pre_request(worker, balancer, r, conf, url); + if (access_status == DECLINED && *balancer == NULL) { + *worker = ap_proxy_get_worker(r->pool, conf, *url); + if (*worker) { + *balancer = NULL; + access_status = OK; + } + else + access_status = DECLINED; + } + else if (access_status == DECLINED && balancer != NULL) { + /* All the workers are busy */ + access_status = HTTP_SERVICE_UNAVAILABLE; + } + return access_status; +} + +PROXY_DECLARE(int) ap_proxy_post_request(proxy_worker *worker, + struct proxy_balancer *balancer, + request_rec *r, + proxy_server_conf *conf) +{ + int access_status; + if (balancer) + access_status = proxy_run_post_request(worker, balancer, r, conf); + else { + + + access_status = OK; + } + + return access_status; +} + PROXY_DECLARE(int) ap_proxy_connect_to_backend(apr_socket_t **newsock, const char *proxy_function, apr_sockaddr_t *backend_addr,