summaryrefslogtreecommitdiff
path: root/pjnath/src
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-04-22 12:48:30 +0000
committerBenny Prijono <bennylp@teluu.com>2007-04-22 12:48:30 +0000
commit560d8dba3b98b2a5ae65da01b5021757eb366888 (patch)
tree2b947a42f03be862b6fa1a45ce1e95723cee0ac1 /pjnath/src
parent44d9c946fc77600985b869552887497c2a539d5c (diff)
Merged changes from the trunk
git-svn-id: http://svn.pjsip.org/repos/pjproject/branches/split-3rd-party@1210 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjnath/src')
-rw-r--r--pjnath/src/pjnath/ice_session.c2
-rw-r--r--pjnath/src/pjnath/ice_strans.c16
-rw-r--r--pjnath/src/pjstun-client/client_main.c10
3 files changed, 21 insertions, 7 deletions
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; i<comp->cand_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();