Skip to content

Commit

Permalink
rtpengine: remove square brackets from IPv6 address for getaddrinfo f…
Browse files Browse the repository at this point in the history
…unction

- After loading from DB rn_address is in form: [x:x:x:x:x:x:x:x]:nnnn, getaddrinfo function expect ipv6 in node argument without square brackets, otherwise, the argument is interpreted as FQDN.

(cherry picked from commit 491d126)
  • Loading branch information
Den4t authored and miconda committed Mar 29, 2021
1 parent 5d47465 commit 3141310
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion src/modules/rtpengine/rtpengine.c
Expand Up @@ -1813,6 +1813,7 @@ static int build_rtpp_socks(int lmode, int rtest) {
rtpe_reload_lock_get(rtpp_list->rset_lock);
for (pnode=rtpp_list->rn_first; pnode!=0; pnode = pnode->rn_next) {
char *hostname;
char *hp;

if (pnode->rn_umode == 0) {
rtpp_socks[pnode->idx] = -1;
Expand All @@ -1839,11 +1840,23 @@ static int build_rtpp_socks(int lmode, int rtest) {
if (cp == NULL || *cp == '\0')
cp = CPORT;

if(pnode->rn_umode == 6) {
hp = strrchr(hostname, ']');
if(hp != NULL)
*hp = '\0';

hp = hostname;
if(*hp == '[')
hp++;
} else {
hp = hostname;
}

memset(&hints, 0, sizeof(hints));
hints.ai_flags = 0;
hints.ai_family = (pnode->rn_umode == 6) ? AF_INET6 : AF_INET;
hints.ai_socktype = SOCK_DGRAM;
if ((n = getaddrinfo(hostname, cp, &hints, &res)) != 0) {
if ((n = getaddrinfo(hp, cp, &hints, &res)) != 0) {
LM_ERR("%s\n", gai_strerror(n));
pkg_free(hostname);
rtpp_socks[pnode->idx] = -1;
Expand Down

0 comments on commit 3141310

Please sign in to comment.