Skip to content

Commit 4a9694d

Browse files
authored
ensure curlver.h has been included before checking LIBCURL_VERSION (#5159)
- move all LIBCURL_VERSION_MAJOR checks into CFURLSessionInterface.c - modify EasyHandle.swift to use the byproducts of libcurl version checks
1 parent db6474a commit 4a9694d

File tree

3 files changed

+30
-29
lines changed

3 files changed

+30
-29
lines changed

Sources/FoundationNetworking/URLSession/libcurl/EasyHandle.swift

+3-3
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ import Dispatch
2929
// These helper functions avoid warnings about "will never be executed" code which checks the availability of the underlying libcurl features.
3030

3131
internal func curlInfoCAInfoSupported() -> Bool {
32-
NS_CURL_CURLINFO_CAINFO_SUPPORTED == 1
32+
CFURLSessionInfoCAINFO.value != CFURLSessionInfoNONE.value
3333
}
3434

3535
internal func maxHostConnectionsSupported() -> Bool {
36-
NS_CURL_MAX_HOST_CONNECTIONS_SUPPORTED == 1
36+
CFURLSessionMultiOptionMAX_HOST_CONNECTIONS.value != 0
3737
}
3838

3939
internal func xferInfoFunctionSupported() -> Bool {
40-
NS_CURL_XFERINFOFUNCTION_SUPPORTED == 1
40+
CFURLSessionOptionXFERINFOFUNCTION.value != 0
4141
}
4242

4343
/// Minimal wrapper around the [curl easy interface](https://curl.haxx.se/libcurl/c/)

Sources/_CFURLSessionInterface/CFURLSessionInterface.c

+26-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,31 @@
2323
#include "CFString.h"
2424
#include <curl/curl.h>
2525

26+
#if !defined(LIBCURL_VERSION_MAJOR)
27+
#error "LIBCURL_VERSION_MAJOR not defined, missing curlver.h"
28+
#endif
29+
30+
// 7.84.0 or later
31+
#if LIBCURL_VERSION_MAJOR > 7 || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR > 84) || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR == 84 && LIBCURL_VERSION_PATCH >= 0)
32+
#define NS_CURL_CURLINFO_CAINFO_SUPPORTED 1
33+
#else
34+
#define NS_CURL_CURLINFO_CAINFO_SUPPORTED 0
35+
#endif
36+
37+
// 7.30.0 or later
38+
#if LIBCURL_VERSION_MAJOR > 7 || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR > 30) || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR == 30 && LIBCURL_VERSION_PATCH >= 0)
39+
#define NS_CURL_MAX_HOST_CONNECTIONS_SUPPORTED 1
40+
#else
41+
#define NS_CURL_MAX_HOST_CONNECTIONS_SUPPORTED 0
42+
#endif
43+
44+
// 7.32.0 or later
45+
#if LIBCURL_VERSION_MAJOR > 7 || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR > 32) || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR == 32 && LIBCURL_VERSION_PATCH >= 0)
46+
#define NS_CURL_XFERINFOFUNCTION_SUPPORTED 1
47+
#else
48+
#define NS_CURL_XFERINFOFUNCTION_SUPPORTED 0
49+
#endif
50+
2651
FILE* aa = NULL;
2752
CURL * gcurl = NULL;
2853

@@ -223,7 +248,7 @@ CFURLSessionEasyCode const CFURLSessionEasyCodeFTP_COULDNT_RETR_FILE = { CURLE_F
223248
#if LIBCURL_VERSION_MAJOR > 7 || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR > 67) || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR == 67 && LIBCURL_VERSION_PATCH >= 1)
224249
CFURLSessionEasyCode const CFURLSessionEasyCodeHTTP3 = { CURLE_HTTP3 };
225250
#else
226-
CFURLSessionEasyCode const CFURLSessionEasyCodeOBSOLETE20 = { CURLE_OBSOLETE20 };
251+
CFURLSessionEasyCode const CFURLSessionEasyCodeHTTP3 = { CURLE_OBSOLETE20 };
227252
#endif
228253
CFURLSessionEasyCode const CFURLSessionEasyCodeQUOTE_ERROR = { CURLE_QUOTE_ERROR };
229254
CFURLSessionEasyCode const CFURLSessionEasyCodeHTTP_RETURNED_ERROR = { CURLE_HTTP_RETURNED_ERROR };

Sources/_CFURLSessionInterface/include/CFURLSessionInterface.h

+1-25
Original file line numberDiff line numberDiff line change
@@ -35,26 +35,6 @@
3535
#include <winsock2.h>
3636
#endif
3737

38-
// 7.84.0 or later
39-
#if LIBCURL_VERSION_MAJOR > 7 || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR > 84) || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR == 84 && LIBCURL_VERSION_PATCH >= 0)
40-
#define NS_CURL_CURLINFO_CAINFO_SUPPORTED 1
41-
#else
42-
#define NS_CURL_CURLINFO_CAINFO_SUPPORTED 0
43-
#endif
44-
45-
// 7.30.0 or later
46-
#if LIBCURL_VERSION_MAJOR > 7 || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR > 30) || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR == 30 && LIBCURL_VERSION_PATCH >= 0)
47-
#define NS_CURL_MAX_HOST_CONNECTIONS_SUPPORTED 1
48-
#else
49-
#define NS_CURL_MAX_HOST_CONNECTIONS_SUPPORTED 0
50-
#endif
51-
52-
// 7.32.0 or later
53-
#if LIBCURL_VERSION_MAJOR > 7 || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR > 32) || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR == 32 && LIBCURL_VERSION_PATCH >= 0)
54-
#define NS_CURL_XFERINFOFUNCTION_SUPPORTED 1
55-
#else
56-
#define NS_CURL_XFERINFOFUNCTION_SUPPORTED 0
57-
#endif
5838

5939
CF_IMPLICIT_BRIDGING_ENABLED
6040
CF_EXTERN_C_BEGIN
@@ -104,11 +84,7 @@ CF_EXPORT CFURLSessionEasyCode const CFURLSessionEasyCodeFTP_CANT_GET_HOST; // C
10484
CF_EXPORT CFURLSessionEasyCode const CFURLSessionEasyCodeFTP_COULDNT_SET_TYPE; // CURLE_FTP_COULDNT_SET_TYPE
10585
CF_EXPORT CFURLSessionEasyCode const CFURLSessionEasyCodePARTIAL_FILE; // CURLE_PARTIAL_FILE
10686
CF_EXPORT CFURLSessionEasyCode const CFURLSessionEasyCodeFTP_COULDNT_RETR_FILE; // CURLE_FTP_COULDNT_RETR_FILE
107-
#if LIBCURL_VERSION_MAJOR > 7 || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR > 67) || (LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR == 67 && LIBCURL_VERSION_PATCH >= 1)
108-
CF_EXPORT CFURLSessionEasyCode const CFURLSessionEasyCodeHTTP3; // CURLE_HTTP3
109-
#else
110-
CF_EXPORT CFURLSessionEasyCode const CFURLSessionEasyCodeOBSOLETE20; // CURLE_OBSOLETE20
111-
#endif
87+
CF_EXPORT CFURLSessionEasyCode const CFURLSessionEasyCodeHTTP3; // CURLE_HTTP3 || CURLE_OBSOLETE20
11288
CF_EXPORT CFURLSessionEasyCode const CFURLSessionEasyCodeQUOTE_ERROR; // CURLE_QUOTE_ERROR
11389
CF_EXPORT CFURLSessionEasyCode const CFURLSessionEasyCodeHTTP_RETURNED_ERROR; // CURLE_HTTP_RETURNED_ERROR
11490
CF_EXPORT CFURLSessionEasyCode const CFURLSessionEasyCodeWRITE_ERROR; // CURLE_WRITE_ERROR

0 commit comments

Comments
 (0)