diff options
author | Benny Prijono <bennylp@teluu.com> | 2009-03-23 13:02:53 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2009-03-23 13:02:53 +0000 |
commit | e2fe75a86e8adeebad0e9a155eadc4f77294cbeb (patch) | |
tree | 1911437fc636ea743c91aa8cdce92d7f13becb14 /pjnath | |
parent | d5fd9fcdf32eb47bb85d343da76e4aa41fc432e9 (diff) |
Ticket #743: backported from ticket #742
git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/1.0@2531 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjnath')
-rw-r--r-- | pjnath/include/pjnath/stun_sock.h | 6 | ||||
-rw-r--r-- | pjnath/src/pjnath-test/stun_sock_test.c | 6 | ||||
-rw-r--r-- | pjnath/src/pjnath/ice_strans.c | 8 | ||||
-rw-r--r-- | pjnath/src/pjnath/stun_sock.c | 8 |
4 files changed, 22 insertions, 6 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-test/stun_sock_test.c b/pjnath/src/pjnath-test/stun_sock_test.c index 2e1a6a1e..d867a6bb 100644 --- a/pjnath/src/pjnath-test/stun_sock_test.c +++ b/pjnath/src/pjnath-test/stun_sock_test.c @@ -627,12 +627,16 @@ static int keep_alive_test(pj_stun_config *cfg) /* Check that client status is still okay and on_status() callback is NOT * called */ + /* No longer valid due to this ticket: + * http://trac.pjsip.org/repos/ticket/742 + if (client->on_status_cnt != 0) { PJ_LOG(3, (THIS_FILE, " error: on_status() must not be called on successful" "keep-alive when mapped-address does not change")); ret = -430; goto on_return; } + */ /* Check that client doesn't receive anything */ if (client->on_rx_data_cnt != 0) { PJ_LOG(3,(THIS_FILE, " error: client shouldn't have received anything")); @@ -686,7 +690,7 @@ static int keep_alive_test(pj_stun_config *cfg) goto on_return; } /* Check that callback was called with correct operation */ - if (client->last_op != PJ_STUN_SOCK_KEEP_ALIVE_OP) { + if (client->last_op != PJ_STUN_SOCK_MAPPED_ADDR_CHANGE) { PJ_LOG(3,(THIS_FILE, " error: expecting keep-alive operation status")); ret = -470; goto on_return; 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) |