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")) {