summaryrefslogtreecommitdiff
path: root/pjnath
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2015-10-01 04:43:28 +0000
committerNanang Izzuddin <nanang@teluu.com>2015-10-01 04:43:28 +0000
commit6c8379528fa59c07748c7ff2a63cccdf358fe45e (patch)
treeb5beb9a96c51642be8fe9a0e08babff7870eea51 /pjnath
parent068a9a1f341d0363730403422a7a300da7c7a5b1 (diff)
Fix #1891: Also match base address in find local candidate after receiving ICE check response.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5184 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjnath')
-rw-r--r--pjnath/src/pjnath/ice_session.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/pjnath/src/pjnath/ice_session.c b/pjnath/src/pjnath/ice_session.c
index d2b9dcdb..1d1a1824 100644
--- a/pjnath/src/pjnath/ice_session.c
+++ b/pjnath/src/pjnath/ice_session.c
@@ -2323,7 +2323,13 @@ static void on_stun_request_complete(pj_stun_session *stun_sess,
/* Find local candidate that matches the XOR-MAPPED-ADDRESS */
pj_assert(lcand == NULL);
for (i=0; i<ice->lcand_cnt; ++i) {
- if (pj_sockaddr_cmp(&xaddr->sockaddr, &ice->lcand[i].addr) == 0) {
+ /* Ticket #1891: apply additional check as there may be a shared
+ * mapped address for different base/local addresses.
+ */
+ if (pj_sockaddr_cmp(&xaddr->sockaddr, &ice->lcand[i].addr) == 0 &&
+ pj_sockaddr_cmp(&check->lcand->base_addr,
+ &ice->lcand[i].base_addr) == 0)
+ {
/* Match */
lcand = &ice->lcand[i];
break;