You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by yl...@apache.org on 2021/09/20 09:16:30 UTC

svn commit: r1893466 - /apr/apr/trunk/crypto/apr_crypto.c

Author: ylavic
Date: Mon Sep 20 09:16:30 2021
New Revision: 1893466

URL: http://svn.apache.org/viewvc?rev=1893466&view=rev
Log:
apr_crypto: non-DSO drivers should have global lifetime too.

Same lifetime as the hashtable used by apr_crypto_get_driver() to cache the
drivers for reloads.


Modified:
    apr/apr/trunk/crypto/apr_crypto.c

Modified: apr/apr/trunk/crypto/apr_crypto.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/crypto/apr_crypto.c?rev=1893466&r1=1893465&r2=1893466&view=diff
==============================================================================
--- apr/apr/trunk/crypto/apr_crypto.c (original)
+++ apr/apr/trunk/crypto/apr_crypto.c Mon Sep 20 09:16:30 2021
@@ -215,8 +215,8 @@ APR_DECLARE(apr_status_t) apr_crypto_get
     char symname[34];
     apr_dso_handle_t *dso;
     apr_dso_handle_sym_t symbol;
-    apr_pool_t *rootp;
 #endif
+    apr_pool_t *rootp;
     apr_status_t rv;
 
     if (result) {
@@ -237,11 +237,11 @@ APR_DECLARE(apr_status_t) apr_crypto_get
         return APR_SUCCESS;
     }
 
-#if APR_HAVE_MODULAR_DSO
-    /* The driver DSO must have exactly the same lifetime as the
+    /* The driver must have exactly the same lifetime as the
      * drivers hash table; ignore the passed-in pool */
     rootp = apr_hash_pool_get(drivers);
 
+#if APR_HAVE_MODULAR_DSO
 #if defined(NETWARE)
     apr_snprintf(modname, sizeof(modname), "crypto%s.nlm", name);
 #elif defined(WIN32) || defined(__CYGWIN__)
@@ -283,6 +283,8 @@ APR_DECLARE(apr_status_t) apr_crypto_get
 #else /* not builtin and !APR_HAS_DSO => not implemented */
     rv = APR_ENOTIMPL;
 
+    pool = rootp; /* global lifetime (aligned to hash table) */
+
     /* Load statically-linked drivers: */
 #if APU_HAVE_OPENSSL
     if (!strcmp(name, "openssl")) {