diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/easy.c | 7 | ||||
| -rw-r--r-- | lib/setopt.c | 9 | ||||
| -rw-r--r-- | lib/urldata.h | 1 | 
3 files changed, 15 insertions, 2 deletions
diff --git a/lib/easy.c b/lib/easy.c index 5af90e326..027d0bef3 100644 --- a/lib/easy.c +++ b/lib/easy.c @@ -958,6 +958,13 @@ struct Curl_easy *curl_easy_duphandle(struct Curl_easy *data)      outcurl->change.referer_alloc = TRUE;    } +  /* Reinitialize an SSL engine for the new handle +   * note: the engine name has already been copied by dupset */ +  if(outcurl->set.str[STRING_SSL_ENGINE]) { +    if(Curl_ssl_set_engine(outcurl, outcurl->set.str[STRING_SSL_ENGINE])) +      goto fail; +  } +    /* Clone the resolver handle, if present, for the new handle */    if(Curl_resolver_duphandle(&outcurl->state.resolver,                               data->state.resolver)) diff --git a/lib/setopt.c b/lib/setopt.c index 5ecf5b97f..5c5f4b381 100644 --- a/lib/setopt.c +++ b/lib/setopt.c @@ -1603,14 +1603,19 @@ CURLcode Curl_vsetopt(struct Curl_easy *data, CURLoption option,       * String that holds the SSL crypto engine.       */      argptr = va_arg(param, char *); -    if(argptr && argptr[0]) -      result = Curl_ssl_set_engine(data, argptr); +    if(argptr && argptr[0]) { +      result = Curl_setstropt(&data->set.str[STRING_SSL_ENGINE], argptr); +      if(!result) { +        result = Curl_ssl_set_engine(data, argptr); +      } +    }      break;    case CURLOPT_SSLENGINE_DEFAULT:      /*       * flag to set engine as default.       */ +    Curl_setstropt(&data->set.str[STRING_SSL_ENGINE], NULL);      result = Curl_ssl_set_engine_default(data);      break;    case CURLOPT_CRLF: diff --git a/lib/urldata.h b/lib/urldata.h index 2a0540fa9..6119136d4 100644 --- a/lib/urldata.h +++ b/lib/urldata.h @@ -1404,6 +1404,7 @@ enum dupstring {    STRING_SSL_CRLFILE_PROXY, /* crl file to check certificate */    STRING_SSL_ISSUERCERT_ORIG, /* issuer cert file to check certificate */    STRING_SSL_ISSUERCERT_PROXY, /* issuer cert file to check certificate */ +  STRING_SSL_ENGINE,      /* name of ssl engine */    STRING_USERNAME,        /* <username>, if used */    STRING_PASSWORD,        /* <password>, if used */    STRING_OPTIONS,         /* <options>, if used */  | 
