From 1328f69d53f2f2e937696ea954c480412b018451 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Fri, 7 Jul 2017 11:49:08 +0200 Subject: vtls: introduce curl_global_sslset() Let's add a compile time safe API to select an SSL backend. This function needs to be called *before* curl_global_init(), and can be called only once. Side note: we do not explicitly test that it is called before curl_global_init(), but we do verify that it is not called multiple times (even implicitly). If SSL is used before the function was called, it will use whatever the CURL_SSL_BACKEND environment variable says (or default to the first available SSL backend), and if a subsequent call to curl_global_sslset() disagrees with the previous choice, it will fail with CURLSSLSET_TOO_LATE. The function also accepts an "avail" parameter to point to a (read-only) NULL-terminated list of available backends. This comes in real handy if an application wants to let the user choose between whatever SSL backends the currently available libcurl has to offer: simply call curl_global_sslset(-1, NULL, &avail); which will return CURLSSLSET_UNKNOWN_BACKEND and populate the avail variable to point to the relevant information to present to the user. Just like with the HTTP/2 push functions, we have to add the function declaration of curl_global_sslset() function to the header file *multi.h* because VMS and OS/400 require a stable order of functions declared in include/curl/*.h (where the header files are sorted alphabetically). This looks a bit funny, but it cannot be helped. Signed-off-by: Johannes Schindelin --- tests/data/test1135 | 1 + 1 file changed, 1 insertion(+) (limited to 'tests/data/test1135') diff --git a/tests/data/test1135 b/tests/data/test1135 index f7c6a7ae2..fb0a4e0c1 100644 --- a/tests/data/test1135 +++ b/tests/data/test1135 @@ -89,6 +89,7 @@ CURL_EXTERN CURLMcode curl_multi_setopt(CURLM *multi_handle, CURL_EXTERN CURLMcode curl_multi_assign(CURLM *multi_handle, CURL_EXTERN char *curl_pushheader_bynum(struct curl_pushheaders *h, CURL_EXTERN char *curl_pushheader_byname(struct curl_pushheaders *h, +CURL_EXTERN CURLsslset curl_global_sslset(curl_sslbackend id, const char *name, -- cgit v1.2.3