diff --git a/contrib/src/pjproject/0016-use-addrinfo-instead-CFHOST.patch b/contrib/src/pjproject/0016-use-addrinfo-instead-CFHOST.patch new file mode 100644 index 0000000000000000000000000000000000000000..a5d7239f240a493a0d548e927bfae8c33c967145 --- /dev/null +++ b/contrib/src/pjproject/0016-use-addrinfo-instead-CFHOST.patch @@ -0,0 +1,117 @@ + pjlib/include/pj/compat/os_auto.h.in | 2 -- + pjlib/src/pj/addr_resolv_sock.c | 66 ------------------------------------------------------------------ + 2 files changed, 68 deletions(-) + +diff --git a/pjlib/include/pj/compat/os_auto.h.in b/pjlib/include/pj/compat/os_auto.h.in +index 159d2bcf0..aef68490b 100644 +--- a/pjlib/include/pj/compat/os_auto.h.in ++++ b/pjlib/include/pj/compat/os_auto.h.in +@@ -190,8 +190,6 @@ + # include "TargetConditionals.h" + # if TARGET_OS_IPHONE + # include "Availability.h" +- /* Use CFHost API for pj_getaddrinfo() (see ticket #1246) */ +-# define PJ_GETADDRINFO_USE_CFHOST 1 + # ifdef __IPHONE_4_0 + /* Is multitasking support available? (see ticket #1107) */ + # define PJ_IPHONE_OS_HAS_MULTITASKING_SUPPORT 1 +diff --git a/pjlib/src/pj/addr_resolv_sock.c b/pjlib/src/pj/addr_resolv_sock.c +index 54646007c..4b09a989e 100644 +--- a/pjlib/src/pj/addr_resolv_sock.c ++++ b/pjlib/src/pj/addr_resolv_sock.c +@@ -24,11 +24,6 @@ + #include <pj/ip_helper.h> + #include <pj/compat/socket.h> + +-#if defined(PJ_GETADDRINFO_USE_CFHOST) && PJ_GETADDRINFO_USE_CFHOST!=0 +-# include <CoreFoundation/CFString.h> +-# include <CFNetwork/CFHost.h> +-#endif +- + PJ_DEF(pj_status_t) pj_gethostbyname(const pj_str_t *hostname, pj_hostent *phe) + { + struct hostent *he; +@@ -68,14 +63,8 @@ PJ_DEF(pj_status_t) pj_getaddrinfo(int af, const pj_str_t *nodename, + char nodecopy[PJ_MAX_HOSTNAME]; + pj_bool_t has_addr = PJ_FALSE; + unsigned i; +-#if defined(PJ_GETADDRINFO_USE_CFHOST) && PJ_GETADDRINFO_USE_CFHOST!=0 +- CFStringRef hostname; +- CFHostRef hostRef; +- pj_status_t status = PJ_SUCCESS; +-#else + int rc; + struct addrinfo hint, *res, *orig_res; +-#endif + + PJ_ASSERT_RETURN(nodename && count && *count && ai, PJ_EINVAL); + PJ_ASSERT_RETURN(nodename->ptr && nodename->slen, PJ_EINVAL); +@@ -121,60 +110,6 @@ PJ_DEF(pj_status_t) pj_getaddrinfo(int af, const pj_str_t *nodename, + pj_memcpy(nodecopy, nodename->ptr, nodename->slen); + nodecopy[nodename->slen] = '\0'; + +-#if defined(PJ_GETADDRINFO_USE_CFHOST) && PJ_GETADDRINFO_USE_CFHOST!=0 +- hostname = CFStringCreateWithCStringNoCopy(kCFAllocatorDefault, nodecopy, +- kCFStringEncodingASCII, +- kCFAllocatorNull); +- hostRef = CFHostCreateWithName(kCFAllocatorDefault, hostname); +- if (CFHostStartInfoResolution(hostRef, kCFHostAddresses, nil)) { +- CFArrayRef addrRef = CFHostGetAddressing(hostRef, nil); +- i = 0; +- if (addrRef != nil) { +- CFIndex idx, naddr; +- +- naddr = CFArrayGetCount(addrRef); +- for (idx = 0; idx < naddr && i < *count; idx++) { +- struct sockaddr *addr; +- size_t addr_size; +- +- addr = (struct sockaddr *) +- CFDataGetBytePtr(CFArrayGetValueAtIndex(addrRef, idx)); +- /* This should not happen. */ +- pj_assert(addr); +- +- /* Ignore unwanted address families */ +- if (af!=PJ_AF_UNSPEC && addr->sa_family != af) +- continue; +- +- /* Store canonical name */ +- pj_ansi_strcpy(ai[i].ai_canonname, nodecopy); +- +- /* Store address */ +- addr_size = sizeof(*addr); +- if (addr->sa_family == PJ_AF_INET6) { +- addr_size = addr->sa_len; +- } +- PJ_ASSERT_ON_FAIL(addr_size <= sizeof(pj_sockaddr), continue); +- pj_memcpy(&ai[i].ai_addr, addr, addr_size); +- PJ_SOCKADDR_RESET_LEN(&ai[i].ai_addr); +- +- i++; +- } +- } +- +- *count = i; +- if (*count == 0) +- status = PJ_ERESOLVE; +- +- } else { +- status = PJ_ERESOLVE; +- } +- +- CFRelease(hostRef); +- CFRelease(hostname); +- +- return status; +-#else + /* Call getaddrinfo() */ + pj_bzero(&hint, sizeof(hint)); + hint.ai_family = af; +@@ -216,7 +151,6 @@ PJ_DEF(pj_status_t) pj_getaddrinfo(int af, const pj_str_t *nodename, + + /* Done */ + return (*count > 0? PJ_SUCCESS : PJ_ERESOLVE); +-#endif + + #else /* PJ_SOCK_HAS_GETADDRINFO */ + pj_bool_t has_addr = PJ_FALSE; diff --git a/contrib/src/pjproject/package.json b/contrib/src/pjproject/package.json index afc4a0c6002c91618b1fc8332740c5591b1606a4..ec1623b3a93cabedaae408e8723da808a2b0eedd 100644 --- a/contrib/src/pjproject/package.json +++ b/contrib/src/pjproject/package.json @@ -18,10 +18,11 @@ "0013-Assign-unique-local-preferences-for-candidates-with-.patch", "0014-Add-new-compile-time-setting-PJ_ICE_ST_USE_TURN_PERM.patch", "0015-update-local-preference-for-peer-reflexive-candidate.patch", + "0016-use-addrinfo-instead-CFHOST.patch", "0001-win-config.patch", "0002-win-vs-gnutls.patch", "0003-win-vs2017-props.patch" - ], +], "project_paths": [ "pjlib-util/build/pjlib_util.vcxproj", "pjmedia/build/pjmedia.vcxproj", diff --git a/contrib/src/pjproject/rules.mak b/contrib/src/pjproject/rules.mak index 103e666dacb796716ecadf302f55716f98c9e6d5..bde966f450eb8de66e5a95de1340a0b2699f51bf 100644 --- a/contrib/src/pjproject/rules.mak +++ b/contrib/src/pjproject/rules.mak @@ -60,6 +60,7 @@ pjproject: pjproject-$(PJPROJECT_VERSION).tar.gz .sum-pjproject $(APPLY) $(SRC)/pjproject/0013-Assign-unique-local-preferences-for-candidates-with-.patch $(APPLY) $(SRC)/pjproject/0014-Add-new-compile-time-setting-PJ_ICE_ST_USE_TURN_PERM.patch $(APPLY) $(SRC)/pjproject/0015-update-local-preference-for-peer-reflexive-candidate.patch + $(APPLY) $(SRC)/pjproject/0016-use-addrinfo-instead-CFHOST.patch ifdef HAVE_ANDROID $(APPLY) $(SRC)/pjproject/0001-android.patch endif