summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViktor Szakats <vszakats@users.noreply.github.com>2017-09-12 18:14:00 +0000
committerViktor Szakats <vszakats@users.noreply.github.com>2017-09-22 19:01:28 +0000
commitde47158934075322cb8fd0e681ddb7d6e50b40a7 (patch)
tree3403986804cb5f46a3f29be58ee42905f56fcd88
parent6f86022df26243cc8a035fe8b4c89033b6a04bc0 (diff)
downloadcurl-de47158934075322cb8fd0e681ddb7d6e50b40a7.tar.gz
metalink: fix NSS issue in MultiSSL builds
In MultiSSL mode (i.e. when more than one SSL backend is compiled in), we cannot use the compile time flag `USE_NSS` as indicator that the NSS backend is in use. As far as Metalink is concerned, the SSL backend is only used for MD5, SHA-1 and SHA-256 calculations, therefore one of the available SSL backends is selected at compile time, in a strict order of preference. Let's introduce a new `HAVE_NSS_CONTEXT` constant that can be used to determine whether the SSL backend used for Metalink is the NSS backend, and use that to guard the code that wants to de-initialize the NSS-specific data structure. Ref: https://github.com/curl/curl/pull/1848
-rw-r--r--src/tool_metalink.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/tool_metalink.c b/src/tool_metalink.c
index 8a8c66cff..270345547 100644
--- a/src/tool_metalink.c
+++ b/src/tool_metalink.c
@@ -30,6 +30,8 @@
# include <fcntl.h>
#endif
+#undef HAVE_NSS_CONTEXT
+
#ifdef USE_OPENSSL
# include <openssl/md5.h>
# include <openssl/sha.h>
@@ -50,6 +52,7 @@
# define MD5_CTX void *
# define SHA_CTX void *
# define SHA256_CTX void *
+# define HAVE_NSS_CONTEXT
static NSSInitContext *nss_context;
#elif defined(USE_POLARSSL)
# include <polarssl/md5.h>
@@ -967,7 +970,7 @@ void clean_metalink(struct OperationConfig *config)
void metalink_cleanup(void)
{
-#ifdef USE_NSS
+#ifdef HAVE_NSS_CONTEXT
if(nss_context) {
NSS_ShutdownContext(nss_context);
nss_context = NULL;