diff options
author | Benny Prijono <bennylp@teluu.com> | 2009-03-04 12:56:32 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2009-03-04 12:56:32 +0000 |
commit | d33a9e7ea8dfd4afbe02d62c2180636f5e9f1a94 (patch) | |
tree | 9e379bd432c24e1a352e909388cff6be6b4cd6b2 /pjnath/src | |
parent | c205201320f80d9e25e554566da5b7f11203f871 (diff) |
Ticket #742: Change in mapped/STUN IP address does not update ICE srflx candidate (thanks Alexei Kuznetsov for the report)
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2484 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjnath/src')
-rw-r--r-- | pjnath/src/pjnath/ice_strans.c | 8 | ||||
-rw-r--r-- | pjnath/src/pjnath/stun_sock.c | 8 |
2 files changed, 11 insertions, 5 deletions
diff --git a/pjnath/src/pjnath/ice_strans.c b/pjnath/src/pjnath/ice_strans.c index c9ad487c..3cb5f4e6 100644 --- a/pjnath/src/pjnath/ice_strans.c +++ b/pjnath/src/pjnath/ice_strans.c @@ -1265,12 +1265,16 @@ static pj_bool_t stun_on_status(pj_stun_sock *stun_sock, } break; case PJ_STUN_SOCK_BINDING_OP: + case PJ_STUN_SOCK_MAPPED_ADDR_CHANGE: if (status == PJ_SUCCESS) { pj_stun_sock_info info; status = pj_stun_sock_get_info(stun_sock, &info); if (status == PJ_SUCCESS) { char ipaddr[PJ_INET6_ADDRSTRLEN+10]; + const char *op_name = (op==PJ_STUN_SOCK_BINDING_OP) ? + "Binding discovery complete" : + "srflx address changed"; pj_bool_t dup = PJ_FALSE; /* Eliminate the srflx candidate if the address is @@ -1308,9 +1312,9 @@ static pj_bool_t stun_on_status(pj_stun_sock *stun_sock, } PJ_LOG(4,(comp->ice_st->obj_name, - "Comp %d: Binding discovery complete, " + "Comp %d: %s, " "srflx address is %s", - comp->comp_id, + comp->comp_id, op_name, pj_sockaddr_print(&info.mapped_addr, ipaddr, sizeof(ipaddr), 3))); diff --git a/pjnath/src/pjnath/stun_sock.c b/pjnath/src/pjnath/stun_sock.c index 9bcd7c94..70c257a9 100644 --- a/pjnath/src/pjnath/stun_sock.c +++ b/pjnath/src/pjnath/stun_sock.c @@ -669,11 +669,13 @@ static void sess_on_request_complete(pj_stun_session *sess, pj_sockaddr_cp(&stun_sock->mapped_addr, &mapped_attr->sockaddr); - resched = (*stun_sock->cb.on_status)(stun_sock, op, PJ_SUCCESS); - - goto on_return; + if (op==PJ_STUN_SOCK_KEEP_ALIVE_OP) + op = PJ_STUN_SOCK_MAPPED_ADDR_CHANGE; } + /* Notify user */ + resched = (*stun_sock->cb.on_status)(stun_sock, op, PJ_SUCCESS); + on_return: /* Start/restart keep-alive timer */ if (resched) |