summaryrefslogtreecommitdiff
path: root/pjnath/src/pjnath/ice_session.c
diff options
context:
space:
mode:
Diffstat (limited to 'pjnath/src/pjnath/ice_session.c')
-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;