You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by rp...@apache.org on 2005/10/16 13:13:55 UTC
svn commit: r322468 -
/httpd/httpd/branches/2.2.x/modules/proxy/mod_proxy_ajp.c
Author: rpluem
Date: Sun Oct 16 04:13:50 2005
New Revision: 322468
URL: http://svn.apache.org/viewcvs?rev=322468&view=rev
Log:
Merge r322464, r322467 from trunk:
* Cleanup: Remove dead code. No functional change.
* Style fixes: Spaces, comments, typos. No functional change.
Modified:
httpd/httpd/branches/2.2.x/modules/proxy/mod_proxy_ajp.c
Modified: httpd/httpd/branches/2.2.x/modules/proxy/mod_proxy_ajp.c
URL: http://svn.apache.org/viewcvs/httpd/httpd/branches/2.2.x/modules/proxy/mod_proxy_ajp.c?rev=322468&r1=322467&r2=322468&view=diff
==============================================================================
--- httpd/httpd/branches/2.2.x/modules/proxy/mod_proxy_ajp.c (original)
+++ httpd/httpd/branches/2.2.x/modules/proxy/mod_proxy_ajp.c Sun Oct 16 04:13:50 2005
@@ -20,11 +20,12 @@
#include "ajp.h"
module AP_MODULE_DECLARE_DATA proxy_ajp_module;
+
/*
* Canonicalise http-like URLs.
- * scheme is the scheme for the URL
- * url is the URL starting with the first '/'
- * def_port is the default port for this scheme.
+ * scheme is the scheme for the URL
+ * url is the URL starting with the first '/'
+ * def_port is the default port for this scheme.
*/
static int proxy_ajp_canon(request_rec *r, char *url)
{
@@ -35,7 +36,7 @@
/* ap_port_of_scheme() */
if (strncasecmp(url, "ajp:", 4) == 0) {
url += 4;
- }
+ }
else {
return DECLINED;
}
@@ -43,7 +44,8 @@
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
"proxy: AJP: canonicalising URL %s", url);
- /* do syntatic check.
+ /*
+ * do syntactic check.
* We break the URL into host, port, path, search
*/
err = ap_proxy_canon_netloc(r->pool, &url, NULL, NULL, &host, &port);
@@ -54,10 +56,12 @@
return HTTP_BAD_REQUEST;
}
- /* now parse path/search args, according to rfc1738 */
- /* N.B. if this isn't a true proxy request, then the URL _path_
- * has already been decoded. True proxy requests have r->uri
- * == r->unparsed_uri, and no others have that property.
+ /*
+ * now parse path/search args, according to rfc1738
+ *
+ * N.B. if this isn't a true proxy request, then the URL _path_
+ * has already been decoded. True proxy requests have
+ * r->uri == r->unparsed_uri, and no others have that property.
*/
if (r->uri == r->unparsed_uri) {
search = strchr(url, '?');
@@ -68,26 +72,29 @@
search = r->args;
/* process path */
- path = ap_proxy_canonenc(r->pool, url, strlen(url), enc_path, 0, r->proxyreq);
+ path = ap_proxy_canonenc(r->pool, url, strlen(url), enc_path, 0,
+ r->proxyreq);
if (path == NULL)
return HTTP_BAD_REQUEST;
apr_snprintf(sport, sizeof(sport), ":%d", port);
- if (ap_strchr_c(host, ':')) { /* if literal IPv6 address */
+ if (ap_strchr_c(host, ':')) {
+ /* if literal IPv6 address */
host = apr_pstrcat(r->pool, "[", host, "]", NULL);
}
- r->filename = apr_pstrcat(r->pool, "proxy:ajp://", host, sport,
- "/", path, (search) ? "?" : "", (search) ? search : "", NULL);
+ r->filename = apr_pstrcat(r->pool, "proxy:ajp://", host, sport,
+ "/", path, (search) ? "?" : "",
+ (search) ? search : "", NULL);
return OK;
}
/*
- * process the request and write the respnse.
- */
+ * process the request and write the response.
+ */
static int ap_proxy_ajp_request(apr_pool_t *p, request_rec *r,
- proxy_conn_rec *conn,
- conn_rec *origin,
+ proxy_conn_rec *conn,
+ conn_rec *origin,
proxy_dir_conf *conf,
apr_uri_t *uri,
char *url, char *server_portstr)
@@ -131,18 +138,19 @@
"proxy: ajp_alloc_data_msg failed");
return HTTP_INTERNAL_SERVER_ERROR;
}
+
/* read the first bloc of data */
input_brigade = apr_brigade_create(p, r->connection->bucket_alloc);
tenc = apr_table_get(r->headers_in, "Transfer-Encoding");
- if (tenc && strcasecmp(tenc, "chunked")==0) {
- /* The AJP protocol does not want body data yet */
+ if (tenc && (strcasecmp(tenc, "chunked") == 0)) {
+ /* The AJP protocol does not want body data yet */
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
"proxy: request is chunked");
} else {
status = ap_get_brigade(r->input_filters, input_brigade,
AP_MODE_READBYTES, APR_BLOCK_READ,
AJP13_MAX_SEND_BODY_SZ);
-
+
if (status != APR_SUCCESS) {
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
"proxy: ap_get_brigade failed");
@@ -200,14 +208,14 @@
/* parse the reponse */
result = ajp_parse_type(r, conn->data);
output_brigade = apr_brigade_create(p, r->connection->bucket_alloc);
-
+
bufsiz = AJP13_MAX_SEND_BODY_SZ;
while (isok) {
switch (result) {
case CMD_AJP13_GET_BODY_CHUNK:
if (havebody) {
if (APR_BUCKET_IS_EOS(APR_BRIGADE_LAST(input_brigade))) {
- /* That is the end */
+ /* This is the end */
bufsiz = 0;
havebody = 0;
ap_log_error(APLOG_MARK, APLOG_DEBUG, status, r->server,
@@ -231,7 +239,8 @@
}
}
- ajp_msg_reset(msg); /* will go in ajp_send_data_msg */
+ ajp_msg_reset(msg);
+ /* will go in ajp_send_data_msg */
status = ajp_send_data_msg(conn->sock, msg, bufsiz);
if (status != APR_SUCCESS) {
ap_log_error(APLOG_MARK, APLOG_DEBUG, status, r->server,
@@ -240,11 +249,12 @@
}
conn->worker->s->transferred += bufsiz;
} else {
- /* something is wrong TC asks for more body but we are
+ /*
+ * something is wrong TC asks for more body but we are
* already at the end of the body data
*/
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
- "ap_proxy_ajp_request error read after end");
+ "ap_proxy_ajp_request error read after end");
isok = 0;
}
break;
@@ -252,7 +262,7 @@
/* AJP13_SEND_HEADERS: process them */
status = ajp_parse_header(r, conf, conn->data);
if (status != APR_SUCCESS) {
- isok=0;
+ isok = 0;
}
break;
case CMD_AJP13_SEND_BODY_CHUNK:
@@ -270,16 +280,16 @@
if (ap_pass_brigade(r->output_filters, output_brigade) != APR_SUCCESS) {
ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
"proxy: error processing body");
- isok=0;
+ isok = 0;
}
break;
default:
- isok=0;
+ isok = 0;
break;
}
if (!isok)
break;
-
+
if (result == CMD_AJP13_END_RESPONSE)
break;
@@ -287,7 +297,7 @@
status = ajp_read_header(conn->sock, r,
(ajp_msg_t **)&(conn->data));
if (status != APR_SUCCESS) {
- isok=0;
+ isok = 0;
ap_log_error(APLOG_MARK, APLOG_DEBUG, status, r->server,
"ajp_read_header failed");
break;
@@ -330,17 +340,11 @@
}
/*
- * This handles ajp:// URLs, and other URLs using a remote proxy over http
- * If proxyhost is NULL, then contact the server directly, otherwise
- * go via the proxy.
- * Note that if a proxy is used, then URLs other than http: can be accessed,
- * also, if we have trouble which is clearly specific to the proxy, then
- * we return DECLINED so that we can try another proxy. (Or the direct
- * route.)
+ * This handles ajp:// URLs
*/
static int proxy_ajp_handler(request_rec *r, proxy_worker *worker,
proxy_server_conf *conf,
- char *url, const char *proxyname,
+ char *url, const char *proxyname,
apr_port_t proxyport)
{
int status;
@@ -351,7 +355,8 @@
proxy_dir_conf *dconf = ap_get_module_config(r->per_dir_config,
&proxy_module);
- /* Note: Memory pool allocation.
+ /*
+ * Note: Memory pool allocation.
* A downstream keepalive connection is always connected to the existence
* (or not) of an upstream keepalive connection. If this is not done then
* load balancing against multiple backend servers breaks (one backend
@@ -365,30 +370,17 @@
* of the connection when the socket was opened.
*/
apr_pool_t *p = r->connection->pool;
-#if 0
- conn_rec *c = r->connection;
-#endif
apr_uri_t *uri = apr_palloc(r->connection->pool, sizeof(*uri));
-
+
if (strncasecmp(url, "ajp:", 4) != 0) {
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
"proxy: AJP: declining URL %s", url);
return DECLINED;
}
ap_log_error(APLOG_MARK, APLOG_DEBUG, 0, r->server,
- "proxy: AJP: serving URL %s", url);
-
+ "proxy: AJP: serving URL %s", url);
- /* only use stored info for top-level pages. Sub requests don't share
- * in keepalives
- */
-#if 0
- if (!r->main) {
- backend = (proxy_conn_rec *) ap_get_module_config(c->conn_config,
- &proxy_ajp_module);
- }
-#endif
/* create space for state information */
if (!backend) {
status = ap_proxy_acquire_connection(scheme, &backend, worker, r->server);
@@ -399,11 +391,6 @@
}
return status;
}
-#if 0
- if (!r->main) {
- ap_set_module_config(c->conn_config, &proxy_ajp_module, backend);
- }
-#endif
}
backend->is_ssl = 0;
@@ -417,37 +404,21 @@
if (status != OK)
goto cleanup;
+
/* Step Two: Make the Connection */
if (ap_proxy_connect_backend(scheme, backend, worker, r->server)) {
ap_log_error(APLOG_MARK, APLOG_ERR, 0, r->server,
- "proxy: AJP: failed to make connection to backend: %s",
- backend->hostname);
+ "proxy: AJP: failed to make connection to backend: %s",
+ backend->hostname);
status = HTTP_SERVICE_UNAVAILABLE;
goto cleanup;
}
-#if 0
- /* XXX: we don't need to create the bound client connection */
- /* Step Three: Create conn_rec */
- if (!backend->connection) {
- status = ap_proxy_connection_create(scheme, backend, c, r->server);
- if (status != OK)
- goto cleanup;
- }
-#endif
-
-
- /* Step Four: Process the Request */
+ /* Step Three: Process the Request */
status = ap_proxy_ajp_request(p, r, backend, origin, dconf, uri, url,
server_portstr);
- if (status != OK)
- goto cleanup;
cleanup:
-#if 0
- /* Clear the module config */
- ap_set_module_config(c->conn_config, &proxy_ajp_module, NULL);
-#endif
/* Do not close the socket */
ap_proxy_release_connection(scheme, backend, r->server);
return status;
@@ -461,11 +432,11 @@
module AP_MODULE_DECLARE_DATA proxy_ajp_module = {
STANDARD20_MODULE_STUFF,
- NULL, /* create per-directory config structure */
- NULL, /* merge per-directory config structures */
- NULL, /* create per-server config structure */
- NULL, /* merge per-server config structures */
- NULL, /* command apr_table_t */
- ap_proxy_http_register_hook/* register hooks */
+ NULL, /* create per-directory config structure */
+ NULL, /* merge per-directory config structures */
+ NULL, /* create per-server config structure */
+ NULL, /* merge per-server config structures */
+ NULL, /* command apr_table_t */
+ ap_proxy_http_register_hook /* register hooks */
};