diff --git a/contrib/src/pjproject/0015-fix-socktype-and-duplicate-checking.patch b/contrib/src/pjproject/0015-fix-socktype-and-duplicate-checking.patch new file mode 100644 index 0000000000000000000000000000000000000000..a9ee26f999c1d6382889cae6bb5247e132ecf5b8 --- /dev/null +++ b/contrib/src/pjproject/0015-fix-socktype-and-duplicate-checking.patch @@ -0,0 +1,37 @@ +From 2feee8db77ed47e7b574367295d4f03f9aea67f8 Mon Sep 17 00:00:00 2001 +From: sauwming <ming@teluu.com> +Date: Fri, 6 Aug 2021 09:45:54 +0800 +Subject: [PATCH] Fix socktype and duplicate checking in pj_getaddrinfo() + +--- + pjlib/src/pj/addr_resolv_sock.c | 11 ++++++++--- + 1 file changed, 8 insertions(+), 3 deletions(-) + +diff --git a/pjlib/src/pj/addr_resolv_sock.c b/pjlib/src/pj/addr_resolv_sock.c +index f68c4b177..0954f2ee0 100644 +--- a/pjlib/src/pj/addr_resolv_sock.c ++++ b/pjlib/src/pj/addr_resolv_sock.c +@@ -197,15 +197,20 @@ PJ_DEF(pj_status_t) pj_getaddrinfo(int af, const pj_str_t *nodename, + if (af!=PJ_AF_UNSPEC && res->ai_family != af) + continue; + +- if (res->ai_socktype != pj_SOCK_DGRAM() +- && res->ai_socktype != pj_SOCK_STREAM()) { ++ if (res->ai_socktype != pj_SOCK_DGRAM() && ++ res->ai_socktype != pj_SOCK_STREAM() && ++ /* It is possible that the result's sock type ++ * is unspecified. ++ */ ++ res->ai_socktype != 0) ++ { + continue; + } + + /* Add current address in the resulting list if there + * is no duplicates only. */ + for (j = 0; j < i; j++) { +- if (!pj_memcmp(&ai[j].ai_addr, res->ai_addr, res->ai_addrlen)) { ++ if (!pj_sockaddr_cmp(&ai[j].ai_addr, res->ai_addr)) { + duplicate_found = PJ_TRUE; + break; + } \ No newline at end of file diff --git a/contrib/src/pjproject/package.json b/contrib/src/pjproject/package.json index b70ee54915aad3a091e2262a00ff73a226eaddce..9a2e0c66435a7128fcd19edc0d3a01beca74f884 100644 --- a/contrib/src/pjproject/package.json +++ b/contrib/src/pjproject/package.json @@ -18,6 +18,7 @@ "0012-ignore-down-interfaces.patch", "0013-ignore-addresses-for-RFC7335.patch", "0014-fix-socket-leak.patch", + "0015-fix-socktype-and-duplicate-checking.patch", "0001-win-config.patch", "0002-win-vs-gnutls.patch", "0003-win-vs2017-props.patch" diff --git a/contrib/src/pjproject/rules.mak b/contrib/src/pjproject/rules.mak index b3a1a1f50a97e5577600daa2f5e070f84ded187b..53c58e8c94cdf720ed716e47234eeb1e6cecd86d 100644 --- a/contrib/src/pjproject/rules.mak +++ b/contrib/src/pjproject/rules.mak @@ -59,6 +59,7 @@ pjproject: pjproject-$(PJPROJECT_VERSION).tar.gz .sum-pjproject $(APPLY) $(SRC)/pjproject/0012-ignore-down-interfaces.patch # TODO remove with 2.12 (https://github.com/pjsip/pjproject/commit/997a468a5e90f9a88a36f543bef85e0fb0af0dfc) $(APPLY) $(SRC)/pjproject/0013-ignore-addresses-for-RFC7335.patch # TODO remove with 2.12 (https://github.com/pjsip/pjproject/commit/d245ffaf91120fab7bb70e3f46206faeb5b01269) $(APPLY) $(SRC)/pjproject/0014-fix-socket-leak.patch + $(APPLY) $(SRC)/pjproject/0015-fix-socktype-and-duplicate-checking.patch # TODO remove with 2.12 (https://github.com/pjsip/pjproject/commits/2feee8db77ed47e7b574367295d4f03f9aea67f8) ifdef HAVE_ANDROID $(APPLY) $(SRC)/pjproject/0001-android.patch endif