Skip to content

Commit

Permalink
Merge branch 'http-ssl-backend'
Browse files Browse the repository at this point in the history
This topic branch brings support for choosing cURL's SSL backend at
runtime via http.sslBackend, based on patches already submitted to the
cURL project and backported to cURL 7.54.1 as used in Git for Windows'
SDK.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
  • Loading branch information
dscho committed Aug 2, 2017
2 parents 34cf36e + d81216e commit 9b9ea5f
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
5 changes: 5 additions & 0 deletions Documentation/config.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1969,6 +1969,11 @@ http.sslCAPath::
with when fetching or pushing over HTTPS. Can be overridden
by the `GIT_SSL_CAPATH` environment variable.

http.sslBackend::
Name of the SSL backend to use (e.g. "openssl" or "schannel").
This option is ignored if cURL lacks support for choosing the SSL
backend at runtime.

http.pinnedpubkey::
Public key of the https service. It may either be the filename of
a PEM or DER encoded public key file or a string starting with
Expand Down
23 changes: 23 additions & 0 deletions http.c
Original file line number Diff line number Diff line change
Expand Up @@ -291,6 +291,29 @@ static int http_options(const char *var, const char *value, void *cb)
curl_ssl_try = git_config_bool(var, value);
return 0;
}
#if LIBCURL_VERSION_NUM >= 0x073800 || \
defined(CURL_WITH_EXPERIMENTAL_SSL_BACKEND_SUPPORT)
if (!strcmp("http.sslbackend", var)) {
const curl_ssl_backend **backends;
struct strbuf buf = STRBUF_INIT;
int i;

switch (curl_global_sslset(-1, value, &backends)) {
case CURLSSLSET_UNKNOWN_BACKEND:
strbuf_addf(&buf, _("Unsupported SSL backend '%s'. "
"Supported SSL backends:"), value);
for (i = 0; backends[i]; i++)
strbuf_addf(&buf, "\n\t%s", backends[i]->name);
die(buf.buf);
case CURLSSLSET_TOO_LATE:
die(_("Could not set SSL backend to '%s': already set"),
value);
case CURLSSLSET_OK:
break; /* Okay! */
}
}
#endif

if (!strcmp("http.minsessions", var)) {
min_curl_sessions = git_config_int(var, value);
#ifndef USE_CURL_MULTI
Expand Down

0 comments on commit 9b9ea5f

Please sign in to comment.