From 6c8379528fa59c07748c7ff2a63cccdf358fe45e Mon Sep 17 00:00:00 2001 From: Nanang Izzuddin Date: Thu, 1 Oct 2015 04:43:28 +0000 Subject: 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 --- pjnath/src/pjnath/ice_session.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'pjnath') 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; ilcand_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; -- cgit v1.2.3