summaryrefslogtreecommitdiffstats
path: root/httpd-2.2.6-ssllibver.patch
diff options
context:
space:
mode:
Diffstat (limited to 'httpd-2.2.6-ssllibver.patch')
-rw-r--r--httpd-2.2.6-ssllibver.patch95
1 files changed, 95 insertions, 0 deletions
diff --git a/httpd-2.2.6-ssllibver.patch b/httpd-2.2.6-ssllibver.patch
new file mode 100644
index 0000000..c46835d
--- /dev/null
+++ b/httpd-2.2.6-ssllibver.patch
@@ -0,0 +1,95 @@
+--- httpd-2.2.6/modules/ssl/ssl_private.h.ssllibver
++++ httpd-2.2.6/modules/ssl/ssl_private.h
+@@ -648,7 +648,7 @@ void ssl_die(void);
+ void ssl_log_ssl_error(const char *, int, int, server_rec *);
+
+ /** Variables */
+-void ssl_var_register(void);
++void ssl_var_register(apr_pool_t *p);
+ char *ssl_var_lookup(apr_pool_t *, server_rec *, conn_rec *, request_rec *, char *);
+ const char *ssl_ext_lookup(apr_pool_t *p, conn_rec *c, int peer, const char *oid);
+
+--- httpd-2.2.6/modules/ssl/mod_ssl.c.ssllibver
++++ httpd-2.2.6/modules/ssl/mod_ssl.c
+@@ -500,7 +500,7 @@ static void ssl_register_hooks(apr_pool_
+ ap_hook_insert_filter (ssl_hook_Insert_Filter, NULL,NULL, APR_HOOK_MIDDLE);
+ /* ap_hook_handler (ssl_hook_Upgrade, NULL,NULL, APR_HOOK_MIDDLE); */
+
+- ssl_var_register();
++ ssl_var_register(p);
+
+ APR_REGISTER_OPTIONAL_FN(ssl_proxy_enable);
+ APR_REGISTER_OPTIONAL_FN(ssl_engine_disable);
+--- httpd-2.2.6/modules/ssl/ssl_engine_vars.c.ssllibver
++++ httpd-2.2.6/modules/ssl/ssl_engine_vars.c
+@@ -58,12 +58,30 @@ static int ssl_is_https(conn_rec *c)
+ return sslconn && sslconn->ssl;
+ }
+
+-void ssl_var_register(void)
++static const char var_interface[] = "mod_ssl/" MOD_SSL_VERSION;
++static char var_library_interface[] = SSL_LIBRARY_TEXT;
++static char *var_library = NULL;
++
++void ssl_var_register(apr_pool_t *p)
+ {
+ APR_REGISTER_OPTIONAL_FN(ssl_is_https);
+ APR_REGISTER_OPTIONAL_FN(ssl_var_lookup);
+ APR_REGISTER_OPTIONAL_FN(ssl_ext_lookup);
+- return;
++
++ /* Perform once-per-process library version determination: */
++ var_library = apr_pstrdup(p, SSL_LIBRARY_DYNTEXT);
++
++ if ((cp = strchr(var_library, ' ')) != NULL) {
++ *cp = '/';
++ if ((cp2 = strchr(cp, ' ')) != NULL)
++ *cp2 = NUL;
++ }
++
++ if ((cp = strchr(var_library_interface, ' ')) != NULL) {
++ *cp = '/';
++ if ((cp2 = strchr(cp, ' ')) != NULL)
++ *cp2 = NUL;
++ }
+ }
+
+ /* This function must remain safe to use for a non-SSL connection. */
+@@ -635,34 +653,14 @@ static void ssl_var_lookup_ssl_cipher_bi
+
+ static char *ssl_var_lookup_ssl_version(apr_pool_t *p, char *var)
+ {
+- static char interface[] = "mod_ssl/" MOD_SSL_VERSION;
+- static char library_interface[] = SSL_LIBRARY_TEXT;
+- static char *library = NULL;
+- char *result;
+-
+- if (!library) {
+- char *cp, *cp2;
+- library = apr_pstrdup(p, SSL_LIBRARY_DYNTEXT);
+- if ((cp = strchr(library, ' ')) != NULL) {
+- *cp = '/';
+- if ((cp2 = strchr(cp, ' ')) != NULL)
+- *cp2 = NUL;
+- }
+- if ((cp = strchr(library_interface, ' ')) != NULL) {
+- *cp = '/';
+- if ((cp2 = strchr(cp, ' ')) != NULL)
+- *cp2 = NUL;
+- }
+- }
+-
+ if (strEQ(var, "INTERFACE")) {
+- result = apr_pstrdup(p, interface);
++ result = apr_pstrdup(p, var_interface);
+ }
+ else if (strEQ(var, "LIBRARY_INTERFACE")) {
+- result = apr_pstrdup(p, library_interface);
++ result = apr_pstrdup(p, var_library_interface);
+ }
+ else if (strEQ(var, "LIBRARY")) {
+- result = apr_pstrdup(p, library);
++ result = apr_pstrdup(p, var_library);
+ }
+ else {
+ result = NULL;