From 6ac615fc101529f55ed352e1273c33d89b111996 Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Thu, 17 Nov 2016 04:38:25 +0000 Subject: Fixed #1979: Add support to parse address string with scope ID git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5485 74dad513-b988-da41-8d7b-12977e46ad98 --- pjlib/include/pj/compat/os_auto.h.in | 4 ++++ pjlib/src/pj/sock_common.c | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/pjlib/include/pj/compat/os_auto.h.in b/pjlib/include/pj/compat/os_auto.h.in index 0cf14968..55dd6520 100644 --- a/pjlib/include/pj/compat/os_auto.h.in +++ b/pjlib/include/pj/compat/os_auto.h.in @@ -181,6 +181,10 @@ #if defined(PJ_DARWINOS) && PJ_DARWINOS!=0 /* Disable local host resolution in pj_gethostip() (see ticket #1342) */ # define PJ_GETHOSTIP_DISABLE_LOCAL_RESOLUTION 1 + /* Use pj_getaddrinfo() (instead of pj_inet_pton()) in + * pj_sockaddr_set_str_addr() + */ +# define PJ_SOCKADDR_USE_GETADDRINFO 1 # include "TargetConditionals.h" # if TARGET_OS_IPHONE diff --git a/pjlib/src/pj/sock_common.c b/pjlib/src/pj/sock_common.c index 0ea25fbc..96108758 100644 --- a/pjlib/src/pj/sock_common.c +++ b/pjlib/src/pj/sock_common.c @@ -172,8 +172,12 @@ PJ_DEF(pj_status_t) pj_sockaddr_set_str_addr(int af, PJ_SOCKADDR_RESET_LEN(addr); if (str_addr && str_addr->slen) { +#if defined(PJ_SOCKADDR_USE_GETADDRINFO) && PJ_SOCKADDR_USE_GETADDRINFO!=0 + if (1) { +#else status = pj_inet_pton(PJ_AF_INET6, str_addr, &addr->ipv6.sin6_addr); if (status != PJ_SUCCESS) { +#endif pj_addrinfo ai; unsigned count = 1; @@ -181,6 +185,7 @@ PJ_DEF(pj_status_t) pj_sockaddr_set_str_addr(int af, if (status==PJ_SUCCESS) { pj_memcpy(&addr->ipv6.sin6_addr, &ai.ai_addr.ipv6.sin6_addr, sizeof(addr->ipv6.sin6_addr)); + addr->ipv6.sin6_scope_id = ai.ai_addr.ipv6.sin6_scope_id; } } } else { -- cgit v1.2.3