summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2016-05-31 07:59:06 +0000
committerNanang Izzuddin <nanang@teluu.com>2016-05-31 07:59:06 +0000
commit8dd1606319a5be52355c029359bc633467532d14 (patch)
treed2b3dacd39d2adfc3a141694fbce207805389a78
parent44ffa26787dc2e24069303eded31c9be5253e102 (diff)
Misc (re #1917): Print warning (instead of returning error) in creating SIP UDP transport IPv6 with STUN enabled.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5327 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjsip/src/pjsua-lib/pjsua_core.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c
index 1c9c7fef..6fa3da99 100644
--- a/pjsip/src/pjsua-lib/pjsua_core.c
+++ b/pjsip/src/pjsua-lib/pjsua_core.c
@@ -2137,18 +2137,13 @@ static pj_status_t create_sip_udp_sock(int af,
if (pj_sockaddr_get_port(p_pub_addr) == 0)
pj_sockaddr_set_port(p_pub_addr, (pj_uint16_t)port);
- } else if (stun_srv.slen) {
+ } else if (stun_srv.slen && af == pj_AF_INET()) {
pjstun_setting stun_opt;
/*
* STUN is specified, resolve the address with STUN.
+ * Currently, this is available for IPv4 address only.
*/
- if (af != pj_AF_INET()) {
- pjsua_perror(THIS_FILE, "Cannot use STUN", PJ_EAFNOTSUP);
- pj_sock_close(sock);
- return PJ_EAFNOTSUP;
- }
-
pj_bzero(&stun_opt, sizeof(stun_opt));
stun_opt.use_stun2 = pjsua_var.ua_cfg.stun_map_use_stun2;
stun_opt.srv1 = stun_opt.srv2 = stun_srv;
@@ -2163,6 +2158,7 @@ static pj_status_t create_sip_udp_sock(int af,
}
} else {
+
pj_bzero(p_pub_addr, sizeof(pj_sockaddr));
if (pj_sockaddr_has_addr(&bind_addr)) {
@@ -2178,6 +2174,15 @@ static pj_status_t create_sip_udp_sock(int af,
p_pub_addr->addr.sa_family = (pj_uint16_t)af;
pj_sockaddr_set_port(p_pub_addr, (pj_uint16_t)port);
+
+ if (stun_srv.slen && af != pj_AF_INET()) {
+ /* STUN is specified, but it is not IPv4, just print warning */
+ PJ_PERROR(2, (THIS_FILE, PJ_EAFNOTSUP,
+ "Cannot use STUN for SIP UDP socket %s:%d",
+ addr_string(p_pub_addr),
+ (int)pj_sockaddr_get_port(p_pub_addr)));
+ }
+
}
*p_sock = sock;