From 560d8dba3b98b2a5ae65da01b5021757eb366888 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Sun, 22 Apr 2007 12:48:30 +0000 Subject: Merged changes from the trunk git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/split-3rd-party@1210 74dad513-b988-da41-8d7b-12977e46ad98 --- pjnath/src/pjnath/ice_session.c | 2 +- pjnath/src/pjnath/ice_strans.c | 16 +++++++++++++++- pjnath/src/pjstun-client/client_main.c | 10 +++++----- 3 files changed, 21 insertions(+), 7 deletions(-) (limited to 'pjnath/src') diff --git a/pjnath/src/pjnath/ice_session.c b/pjnath/src/pjnath/ice_session.c index 6cdea360..d6811768 100644 --- a/pjnath/src/pjnath/ice_session.c +++ b/pjnath/src/pjnath/ice_session.c @@ -549,7 +549,7 @@ PJ_DEF(pj_status_t) pj_ice_sess_add_cand(pj_ice_sess *ice, pj_status_t status = PJ_SUCCESS; char tmp[128]; - PJ_ASSERT_RETURN(ice && comp_id && local_pref && + PJ_ASSERT_RETURN(ice && comp_id && foundation && addr && base_addr && addr_len, PJ_EINVAL); PJ_ASSERT_RETURN(comp_id <= ice->comp_cnt, PJ_EINVAL); diff --git a/pjnath/src/pjnath/ice_strans.c b/pjnath/src/pjnath/ice_strans.c index d3ba78f4..a7e5f8f3 100644 --- a/pjnath/src/pjnath/ice_strans.c +++ b/pjnath/src/pjnath/ice_strans.c @@ -212,10 +212,24 @@ static pj_status_t add_cand( pj_ice_strans *ice_st, pj_bool_t set_default) { pj_ice_strans_cand *cand; + unsigned i; PJ_ASSERT_RETURN(ice_st && comp && addr, PJ_EINVAL); PJ_ASSERT_RETURN(comp->cand_cnt < PJ_ICE_ST_MAX_CAND, PJ_ETOOMANY); + /* Check that we don't have candidate with the same + * address. + */ + for (i=0; icand_cnt; ++i) { + if (pj_memcmp(addr, &comp->cand_list[i].addr, + sizeof(pj_sockaddr_in))==0) + { + /* Duplicate */ + PJ_LOG(5,(ice_st->obj_name, "Duplicate candidate not added")); + return PJ_SUCCESS; + } + } + cand = &comp->cand_list[comp->cand_cnt]; pj_bzero(cand, sizeof(*cand)); @@ -225,7 +239,7 @@ static pj_status_t add_cand( pj_ice_strans *ice_st, cand->ice_cand_id = -1; cand->local_pref = local_pref; pj_ice_calc_foundation(ice_st->pool, &cand->foundation, type, - (const pj_sockaddr*)addr); + &comp->local_addr); if (set_default) comp->default_cand = comp->cand_cnt; diff --git a/pjnath/src/pjstun-client/client_main.c b/pjnath/src/pjstun-client/client_main.c index 11094e2b..cb62788e 100644 --- a/pjnath/src/pjstun-client/client_main.c +++ b/pjnath/src/pjstun-client/client_main.c @@ -66,7 +66,7 @@ static struct options static pj_status_t parse_addr(const char *input, pj_sockaddr_in *addr); -static my_perror(const char *title, pj_status_t status) +static void my_perror(const char *title, pj_status_t status) { char errmsg[PJ_ERR_MSG_SIZE]; pj_strerror(status, errmsg, sizeof(errmsg)); @@ -145,7 +145,7 @@ static int worker_thread(void *unused) n = pj_sock_select(g.sock+1, &readset, NULL, NULL, &timeout); if (n > 0) { if (PJ_FD_ISSET(g.sock, &readset)) { - char buffer[512]; + pj_uint8_t buffer[512]; pj_ssize_t len; pj_sockaddr_in addr; int addrlen; @@ -426,7 +426,7 @@ static void send_send_ind(void) PJ_STUN_ATTR_REMOTE_ADDR, PJ_FALSE, &g.peer_addr, sizeof(g.peer_addr)); pj_stun_msg_add_binary_attr(tdata->pool, tdata->msg, - PJ_STUN_ATTR_DATA, g.data, len); + PJ_STUN_ATTR_DATA, (pj_uint8_t*)g.data, len); rc = pj_stun_session_send_msg(g.sess, PJ_FALSE, &g.srv_addr, sizeof(g.srv_addr), @@ -520,7 +520,7 @@ static void set_peer_addr(void) printf("Input peer address in IP:PORT format: "); fflush(stdout); - gets(addr); + fgets(addr, sizeof(addr), stdin); if (parse_addr(addr, &g.peer_addr) != PJ_SUCCESS) { return; @@ -561,7 +561,7 @@ static void console_main(void) } else if (input[0]=='d' && input[1]=='t') { printf("Input data: "); - gets(g.data); + fgets(g.data, sizeof(g.data_buf), stdin); } else if (input[0]=='p' && input[1]=='r') { set_peer_addr(); -- cgit v1.2.3