diff options
author | Viktor Szakats <vszakats@users.noreply.github.com> | 2017-09-12 18:14:00 +0000 |
---|---|---|
committer | Viktor Szakats <vszakats@users.noreply.github.com> | 2017-09-22 19:01:28 +0000 |
commit | de47158934075322cb8fd0e681ddb7d6e50b40a7 (patch) | |
tree | 3403986804cb5f46a3f29be58ee42905f56fcd88 /src | |
parent | 6f86022df26243cc8a035fe8b4c89033b6a04bc0 (diff) | |
download | curl-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
Diffstat (limited to 'src')
-rw-r--r-- | src/tool_metalink.c | 5 |
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; |