You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by mt...@apache.org on 2005/04/09 18:16:57 UTC
svn commit: r160690 - in httpd/httpd/trunk/modules/proxy: ajp_header.c
mod_proxy.c mod_proxy.h
Author: mturk
Date: Sat Apr 9 09:16:54 2005
New Revision: 160690
URL: http://svn.apache.org/viewcvs?view=rev&rev=160690
Log:
Use two optional functions from mod_ssl so that we
can receive both is_ssl and ssl_var for ajp protocol.
This is combined work based on patch from Brad Boyer and
Joe Orton's suggestion to use ssl_var_lookup.
Modified:
httpd/httpd/trunk/modules/proxy/ajp_header.c
httpd/httpd/trunk/modules/proxy/mod_proxy.c
httpd/httpd/trunk/modules/proxy/mod_proxy.h
Modified: httpd/httpd/trunk/modules/proxy/ajp_header.c
URL: http://svn.apache.org/viewcvs/httpd/httpd/trunk/modules/proxy/ajp_header.c?view=diff&r1=160689&r2=160690
==============================================================================
--- httpd/httpd/trunk/modules/proxy/ajp_header.c (original)
+++ httpd/httpd/trunk/modules/proxy/ajp_header.c Sat Apr 9 09:16:54 2005
@@ -225,8 +225,7 @@
return AJP_EBAD_METHOD;
}
- /* XXXX need something */
- is_ssl = (apr_byte_t) 0; /* s->is_ssl */
+ is_ssl = (apr_byte_t) ap_proxy_conn_is_https(r->connection);
if (r->headers_in && apr_table_elts(r->headers_in)) {
const apr_array_header_t *t = apr_table_elts(r->headers_in);
@@ -342,7 +341,7 @@
* SetEnv SSL_SESSION_ID CUSTOM_SSL_SESSION_ID
* </Location>
*/
- if ((envvar = apr_table_get(r->subprocess_env,
+ if ((envvar = ap_proxy_ssl_val(r->pool, r->server, r->connection, r,
AJP13_SSL_CLIENT_CERT_INDICATOR))) {
if (ajp_msg_append_uint8(msg, SC_A_SSL_CERT) ||
ajp_msg_append_string(msg, envvar)) {
@@ -353,7 +352,7 @@
}
}
- if ((envvar = apr_table_get(r->subprocess_env,
+ if ((envvar = ap_proxy_ssl_val(r->pool, r->server, r->connection, r,
AJP13_SSL_CIPHER_INDICATOR))) {
if (ajp_msg_append_uint8(msg, SC_A_SSL_CIPHER) ||
ajp_msg_append_string(msg, envvar)) {
@@ -364,7 +363,7 @@
}
}
- if ((envvar = apr_table_get(r->subprocess_env,
+ if ((envvar = ap_proxy_ssl_val(r->pool, r->server, r->connection, r,
AJP13_SSL_SESSION_INDICATOR))) {
if (ajp_msg_append_uint8(msg, SC_A_SSL_SESSION) ||
ajp_msg_append_string(msg, envvar)) {
Modified: httpd/httpd/trunk/modules/proxy/mod_proxy.c
URL: http://svn.apache.org/viewcvs/httpd/httpd/trunk/modules/proxy/mod_proxy.c?view=diff&r1=160689&r2=160690
==============================================================================
--- httpd/httpd/trunk/modules/proxy/mod_proxy.c (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy.c Sat Apr 9 09:16:54 2005
@@ -27,6 +27,10 @@
#else
APR_DECLARE_OPTIONAL_FN(int, ssl_proxy_enable, (conn_rec *));
APR_DECLARE_OPTIONAL_FN(int, ssl_engine_disable, (conn_rec *));
+APR_DECLARE_OPTIONAL_FN(int, ssl_is_https, (conn_rec *));
+APR_DECLARE_OPTIONAL_FN(char *, ssl_var_lookup,
+ (apr_pool_t *, server_rec *,
+ conn_rec *, request_rec *, char *));
#endif
#ifndef MAX
@@ -1575,6 +1579,8 @@
static APR_OPTIONAL_FN_TYPE(ssl_proxy_enable) *proxy_ssl_enable = NULL;
static APR_OPTIONAL_FN_TYPE(ssl_engine_disable) *proxy_ssl_disable = NULL;
+static APR_OPTIONAL_FN_TYPE(ssl_is_https) *proxy_is_https = NULL;
+static APR_OPTIONAL_FN_TYPE(ssl_var_lookup) *proxy_ssl_val = NULL;
PROXY_DECLARE(int) ap_proxy_ssl_enable(conn_rec *c)
{
@@ -1598,12 +1604,35 @@
return 0;
}
+PROXY_DECLARE(int) ap_proxy_conn_is_https(conn_rec *c)
+{
+ if (proxy_is_https) {
+ return proxy_is_https(c);
+ }
+ else
+ return 0;
+}
+
+PROXY_DECLARE(const char *) ap_proxy_ssl_val(apr_pool_t *p, server_rec *s,
+ conn_rec *c, request_rec *r,
+ const char *var)
+{
+ if (proxy_ssl_val) {
+ /* XXX Perhaps the casting useless */
+ return (const char *)proxy_ssl_val(p, s, c, r, (char *)var);
+ }
+ else
+ return NULL;
+}
+
static int proxy_post_config(apr_pool_t *pconf, apr_pool_t *plog,
apr_pool_t *ptemp, server_rec *s)
{
proxy_ssl_enable = APR_RETRIEVE_OPTIONAL_FN(ssl_proxy_enable);
proxy_ssl_disable = APR_RETRIEVE_OPTIONAL_FN(ssl_engine_disable);
+ proxy_is_https = APR_RETRIEVE_OPTIONAL_FN(ssl_is_https);
+ proxy_ssl_val = APR_RETRIEVE_OPTIONAL_FN(ssl_var_lookup);
return OK;
}
Modified: httpd/httpd/trunk/modules/proxy/mod_proxy.h
URL: http://svn.apache.org/viewcvs/httpd/httpd/trunk/modules/proxy/mod_proxy.h?view=diff&r1=160689&r2=160690
==============================================================================
--- httpd/httpd/trunk/modules/proxy/mod_proxy.h (original)
+++ httpd/httpd/trunk/modules/proxy/mod_proxy.h Sat Apr 9 09:16:54 2005
@@ -403,6 +403,8 @@
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 *);
PROXY_DECLARE(int) ap_proxy_ssl_enable(conn_rec *c);
PROXY_DECLARE(int) ap_proxy_ssl_disable(conn_rec *c);
+PROXY_DECLARE(int) ap_proxy_conn_is_https(conn_rec *c);
+PROXY_DECLARE(const char *) ap_proxy_ssl_val(apr_pool_t *p, server_rec *s, conn_rec *c, request_rec *r, const char *var);
/* Header mapping functions, and a typedef of their signature */
PROXY_DECLARE(const char *) ap_proxy_location_reverse_map(request_rec *r, proxy_server_conf *conf, const char *url);