diff options
-rw-r--r-- | pjnath/include/pjnath/stun_sock.h | 6 | ||||
-rw-r--r-- | pjnath/src/pjnath/ice_strans.c | 8 | ||||
-rw-r--r-- | pjnath/src/pjnath/stun_sock.c | 8 |
3 files changed, 17 insertions, 5 deletions
diff --git a/pjnath/include/pjnath/stun_sock.h b/pjnath/include/pjnath/stun_sock.h index dae0b305..5dcaad2b 100644 --- a/pjnath/include/pjnath/stun_sock.h +++ b/pjnath/include/pjnath/stun_sock.h @@ -74,6 +74,12 @@ typedef enum pj_stun_sock_op */ PJ_STUN_SOCK_KEEP_ALIVE_OP, + /** + * IP address change notification from the keep-alive operation. + */ + PJ_STUN_SOCK_MAPPED_ADDR_CHANGE + + } pj_stun_sock_op; 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) |