char *CAfile; /* CAfile path used to generate X509 store */
X509_STORE *store; /* cached X509 store or NULL if none */
struct curltime time; /* when the cached store was created */
+ BIT(no_partialchain); /* keep partial chain state */
};
#endif /* HAVE_SSL_X509_STORE_SHARE */
static bool cached_x509_store_different(
struct Curl_cfilter *cf,
+ const struct Curl_easy *data,
const struct multi_ssl_backend_data *mb)
{
struct ssl_primary_config *conn_config = Curl_ssl_cf_get_primary_config(cf);
+ struct ssl_config_data *ssl_config =
+ Curl_ssl_cf_get_config(cf, (struct Curl_easy *)data);
+ if(mb->no_partialchain != ssl_config->no_partialchain)
+ return true;
if(!mb->CAfile || !conn_config->CAfile)
return mb->CAfile != conn_config->CAfile;
multi->ssl_backend_data &&
multi->ssl_backend_data->store &&
!cached_x509_store_expired(data, multi->ssl_backend_data) &&
- !cached_x509_store_different(cf, multi->ssl_backend_data)) {
+ !cached_x509_store_different(cf, data, multi->ssl_backend_data)) {
store = multi->ssl_backend_data->store;
}
if(X509_STORE_up_ref(store)) {
char *CAfile = NULL;
+ struct ssl_config_data *ssl_config =
+ Curl_ssl_cf_get_config(cf, (struct Curl_easy *)data);
if(conn_config->CAfile) {
CAfile = strdup(conn_config->CAfile);
mbackend->time = Curl_now();
mbackend->store = store;
mbackend->CAfile = CAfile;
+ mbackend->no_partialchain = ssl_config->no_partialchain;
}
}