mirror of https://github.com/moparisthebest/curl
macOS: Fix missing connectx function with Xcode version older than 9.0
The previous fix https://github.com/curl/curl/pull/1788 worked just for Xcode 9. This commit extends the fix to older Xcode versions effectively by not using connectx function. Fixes https://github.com/curl/curl/issues/1330 Fixes https://github.com/curl/curl/issues/2080 Closes https://github.com/curl/curl/pull/1336 Closes #2082
This commit is contained in:
parent
d3ab7c5a21
commit
6ce9845677
|
@ -1065,10 +1065,12 @@ static CURLcode singleipconnect(struct connectdata *conn,
|
|||
/* Connect TCP sockets, bind UDP */
|
||||
if(!isconnected && (conn->socktype == SOCK_STREAM)) {
|
||||
if(conn->bits.tcp_fastopen) {
|
||||
#if defined(CONNECT_DATA_IDEMPOTENT) /* OS X */
|
||||
#ifdef HAVE_BUILTIN_AVAILABLE
|
||||
#if defined(CONNECT_DATA_IDEMPOTENT) /* Darwin */
|
||||
# if defined(HAVE_BUILTIN_AVAILABLE)
|
||||
/* while connectx function is available since macOS 10.11 / iOS 9,
|
||||
it did not have the interface declared correctly until
|
||||
Xcode 9 / macOS SDK 10.13 */
|
||||
if(__builtin_available(macOS 10.11, iOS 9.0, tvOS 9.0, watchOS 2.0, *)) {
|
||||
#endif /* HAVE_BUILTIN_AVAILABLE */
|
||||
sa_endpoints_t endpoints;
|
||||
endpoints.sae_srcif = 0;
|
||||
endpoints.sae_srcaddr = NULL;
|
||||
|
@ -1079,12 +1081,13 @@ static CURLcode singleipconnect(struct connectdata *conn,
|
|||
rc = connectx(sockfd, &endpoints, SAE_ASSOCID_ANY,
|
||||
CONNECT_RESUME_ON_READ_WRITE | CONNECT_DATA_IDEMPOTENT,
|
||||
NULL, 0, NULL, NULL);
|
||||
#ifdef HAVE_BUILTIN_AVAILABLE
|
||||
}
|
||||
else {
|
||||
rc = connect(sockfd, &addr.sa_addr, addr.addrlen);
|
||||
}
|
||||
#endif /* HAVE_BUILTIN_AVAILABLE */
|
||||
# else
|
||||
rc = connect(sockfd, &addr.sa_addr, addr.addrlen);
|
||||
# endif /* HAVE_BUILTIN_AVAILABLE */
|
||||
#elif defined(MSG_FASTOPEN) /* Linux */
|
||||
if(conn->given->flags & PROTOPT_SSL)
|
||||
rc = connect(sockfd, &addr.sa_addr, addr.addrlen);
|
||||
|
|
Loading…
Reference in New Issue