Ignore:
Timestamp:
Jun 20, 2016 10:10:42 AM (3 years ago)
Author:
nanang
Message:

Close #1927: IPv6 support in DNS SRV:

  • support DNS A and AAAA resolution for each target in DNS SRV record
  • support fallback to DNS A and DNS AAAA resolution when DNS SRV record is not available
  • support IPv6 nameservers.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjnath/src/pjnath/turn_session.c

    r5170 r5349  
    609609        } 
    610610 
     611        /* Init DNS resolution option for IPv6 */ 
     612        if (sess->af == pj_AF_INET6()) 
     613            opt |= PJ_DNS_SRV_RESOLVE_AAAA_ONLY; 
     614 
    611615        /* Fallback to DNS A only if default port is specified */ 
    612616        if (default_port>0 && default_port<65536) { 
    613             opt = PJ_DNS_SRV_FALLBACK_A; 
     617            if (sess->af == pj_AF_INET6()) 
     618                opt |= PJ_DNS_SRV_FALLBACK_AAAA; 
     619            else 
     620                opt |= PJ_DNS_SRV_FALLBACK_A; 
    614621            sess->default_port = (pj_uint16_t)default_port; 
    615622        } 
     
    17191726                  cnt<PJ_TURN_MAX_DNS_SRV_CNT; ++j)  
    17201727        { 
    1721             pj_sockaddr_in *addr = &sess->srv_addr_list[cnt].ipv4; 
    1722  
    1723             addr->sin_family = sess->af; 
    1724             addr->sin_port = pj_htons(rec->entry[i].port); 
    1725             addr->sin_addr.s_addr = rec->entry[i].server.addr[j].s_addr; 
    1726  
    1727             ++cnt; 
     1728            if (rec->entry[i].server.addr[j].af == sess->af) { 
     1729                pj_sockaddr *addr = &sess->srv_addr_list[cnt]; 
     1730 
     1731                addr->addr.sa_family = sess->af; 
     1732                pj_sockaddr_set_port(addr, rec->entry[i].port); 
     1733                if (sess->af == pj_AF_INET6()) 
     1734                    addr->ipv6.sin6_addr = rec->entry[i].server.addr[j].ip.v6; 
     1735                else 
     1736                    addr->ipv4.sin_addr = rec->entry[i].server.addr[j].ip.v4; 
     1737 
     1738                ++cnt; 
     1739            } 
    17281740        } 
    17291741    } 
Note: See TracChangeset for help on using the changeset viewer.