Hi,
Here's another patch to fix one of the TODO items for SSL - it
enables the use of the ssl_var_lookup functionality in the various source
files in modules/ssl. The ap_hook_* functions are still not yet ported to
Apache 2.0 style.. Pl. let me know if you have any comments / suggestions..
Thanks
-Madhu
<<patch_vars.txt>>
Index: mod_ssl.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/modules/ssl/mod_ssl.c,v
retrieving revision 1.10
diff -u -r1.10 mod_ssl.c
--- mod_ssl.c 2001/07/30 22:35:33 1.10
+++ mod_ssl.c 2001/07/31 00:07:19
@@ -488,6 +488,7 @@
ap_hook_http_method (ssl_hook_http_method, NULL,NULL, APR_HOOK_MIDDLE);
ap_hook_default_port (ssl_hook_default_port, NULL,NULL, APR_HOOK_MIDDLE);
ap_hook_handler (ssl_hook_Handler, NULL,NULL, APR_HOOK_MIDDLE);
+ ap_hook_fixups (ssl_hook_Fixup, NULL,NULL, APR_HOOK_MIDDLE);
#if 0 /* XXX - Work in progress */
ap_hook_pre_config (ssl_hook_pre_config, NULL,NULL, APR_HOOK_MIDDLE);
@@ -509,10 +510,8 @@
ap_hook_type_checker (ssl_hook_fixer_upper, NULL,NULL, APR_HOOK_MIDDLE);
ap_hook_insert_filter (ssl_hook_insert_filter, NULL,NULL, APR_HOOK_MIDDLE);
#endif
-#if 0 /* XXX */
ssl_var_register();
ssl_io_register();
-#endif
}
module AP_MODULE_DECLARE_DATA ssl_module = {
Index: mod_ssl.h
===================================================================
RCS file: /home/cvspublic/httpd-2.0/modules/ssl/mod_ssl.h,v
retrieving revision 1.22
diff -u -r1.22 mod_ssl.h
--- mod_ssl.h 2001/07/30 22:35:33 1.22
+++ mod_ssl.h 2001/07/31 00:07:19
@@ -685,10 +685,8 @@
void ssl_die(void);
/* Variables */
-#if 0 /* XXX */
void ssl_var_register(void);
void ssl_var_unregister(void);
-#endif /* XXX */
char *ssl_var_lookup(apr_pool_t *, server_rec *, conn_rec *, request_rec *,
char *);
/* I/O */
Index: ssl_engine_init.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/modules/ssl/ssl_engine_init.c,v
retrieving revision 1.7
diff -u -r1.7 ssl_engine_init.c
--- ssl_engine_init.c 2001/07/19 16:08:01 1.7
+++ ssl_engine_init.c 2001/07/31 00:07:19
@@ -76,6 +76,7 @@
SSLModConfigRec *mc = myModConfig(s);
SSLSrvConfigRec *sc;
server_rec *s2;
+ char *cp;
/*
* Let us cleanup on restarts and exists
@@ -121,12 +122,10 @@
* Identification
*/
if (mc->nInitCount == 1) {
-#if 0 /* XXX */
ssl_log(s, SSL_LOG_INFO, "Server: %s, Interface: %s, Library: %s",
AP_SERVER_BASEVERSION,
- ssl_var_lookup(p, NULL, NULL, NULL, "SSL_VERSION_INTERFACE"),
- ssl_var_lookup(p, NULL, NULL, NULL, "SSL_VERSION_LIBRARY"));
-#endif
+ ssl_var_lookup(p, s, NULL, NULL, "SSL_VERSION_INTERFACE"),
+ ssl_var_lookup(p, s, NULL, NULL, "SSL_VERSION_LIBRARY"));
}
/*
@@ -257,12 +256,10 @@
* Announce mod_ssl and SSL library in HTTP Server field
* as ``mod_ssl/X.X.X OpenSSL/X.X.X''
*/
-#if 0 /* XXX */
- if ((cp = ssl_var_lookup(p, NULL, NULL, NULL, "SSL_VERSION_PRODUCT")) != NULL &&
cp[0] != NUL)
+ if ((cp = ssl_var_lookup(p, s, NULL, NULL, "SSL_VERSION_PRODUCT")) != NULL &&
+cp[0] != NUL)
ap_add_version_component(p, cp);
- ap_add_version_component(p, ssl_var_lookup(p, NULL, NULL, NULL,
"SSL_VERSION_INTERFACE"));
- ap_add_version_component(p, ssl_var_lookup(p, NULL, NULL, NULL,
"SSL_VERSION_LIBRARY"));
-#endif
+ ap_add_version_component(p, ssl_var_lookup(p, s, NULL, NULL,
+"SSL_VERSION_INTERFACE"));
+ ap_add_version_component(p, ssl_var_lookup(p, s, NULL, NULL,
+"SSL_VERSION_LIBRARY"));
return;
}
Index: ssl_engine_kernel.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/modules/ssl/ssl_engine_kernel.c,v
retrieving revision 1.11
diff -u -r1.11 ssl_engine_kernel.c
--- ssl_engine_kernel.c 2001/07/30 22:30:51 1.11
+++ ssl_engine_kernel.c 2001/07/31 00:07:20
@@ -1296,9 +1298,7 @@
if (dc->nOptions & SSL_OPT_STDENVVARS) {
for (i = 0; ssl_hook_Fixup_vars[i] != NULL; i++) {
var = (char *)ssl_hook_Fixup_vars[i];
-#if 0 /* XXX */
val = ssl_var_lookup(r->pool, r->server, r->connection, r, var);
-#endif
if (!strIsEmpty(val))
apr_table_set(e, var, val);
}
@@ -1308,18 +1308,14 @@
* On-demand bloat up the SSI/CGI environment with certificate data
*/
if (dc->nOptions & SSL_OPT_EXPORTCERTDATA) {
-#if 0 /* XXX */
val = ssl_var_lookup(r->pool, r->server, r->connection, r, "SSL_SERVER_CERT");
apr_table_set(e, "SSL_SERVER_CERT", val);
val = ssl_var_lookup(r->pool, r->server, r->connection, r, "SSL_CLIENT_CERT");
apr_table_set(e, "SSL_CLIENT_CERT", val);
-#endif
if ((sk = SSL_get_peer_cert_chain(ssl)) != NULL) {
for (i = 0; i < sk_X509_num(sk); i++) {
var = apr_psprintf(r->pool, "SSL_CLIENT_CERT_CHAIN_%d", i);
-#if 0 /* XXX */
val = ssl_var_lookup(r->pool, r->server, r->connection, r, var);
-#endif
if (val != NULL)
apr_table_setn(e, var, val);
}
@@ -1892,7 +1888,6 @@
* right after a finished handshake.
*/
if (where & SSL_CB_HANDSHAKE_DONE) {
-#if 0 /* XXX */
ssl_log(s, SSL_LOG_INFO,
"Connection: Client IP: %s, Protocol: %s, Cipher: %s (%s/%s bits)",
ssl_var_lookup(NULL, s, c, NULL, "REMOTE_ADDR"),
@@ -1900,7 +1895,6 @@
ssl_var_lookup(NULL, s, c, NULL, "SSL_CIPHER"),
ssl_var_lookup(NULL, s, c, NULL, "SSL_CIPHER_USEKEYSIZE"),
ssl_var_lookup(NULL, s, c, NULL, "SSL_CIPHER_ALGKEYSIZE"));
-#endif
}
return;