summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2009-08-17 09:06:31 +0000
committerNanang Izzuddin <nanang@teluu.com>2009-08-17 09:06:31 +0000
commitbd192be684e2d351f2779077015e2ccd4b4e59be (patch)
tree7f2fc729c5d0fe1d017cd53ca1360aa387d48d22
parent467a0f87dc49c1ae99a1f8c47fe4cd2d850cdac8 (diff)
Misc fix (ticket #915):
- Removed self detach() in destroy() in transport SRTP. - Added few more assertion checks in transport SRTP. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2885 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r--pjmedia/src/pjmedia/transport_srtp.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/pjmedia/src/pjmedia/transport_srtp.c b/pjmedia/src/pjmedia/transport_srtp.c
index d2bc2780..c0cd43ef 100644
--- a/pjmedia/src/pjmedia/transport_srtp.c
+++ b/pjmedia/src/pjmedia/transport_srtp.c
@@ -332,6 +332,8 @@ PJ_DEF(void) pjmedia_srtp_setting_default(pjmedia_srtp_setting *opt)
{
unsigned i;
+ pj_assert(opt);
+
pj_bzero(opt, sizeof(pjmedia_srtp_setting));
opt->close_member_tp = PJ_TRUE;
opt->use = PJMEDIA_SRTP_OPTIONAL;
@@ -357,7 +359,7 @@ PJ_DEF(pj_status_t) pjmedia_transport_srtp_create(
pj_status_t status;
unsigned i;
- PJ_ASSERT_RETURN(endpt && p_tp, PJ_EINVAL);
+ PJ_ASSERT_RETURN(endpt && tp && p_tp, PJ_EINVAL);
/* Check crypto availability */
if (opt && opt->crypto_count == 0 &&
@@ -459,6 +461,8 @@ PJ_DEF(pj_status_t) pjmedia_transport_srtp_start(
int au_rx_idx = 0;
int crypto_suites_cnt;
+ PJ_ASSERT_RETURN(tp && tx && rx, PJ_EINVAL);
+
if (srtp->session_inited) {
pjmedia_transport_srtp_stop(tp);
}
@@ -585,6 +589,8 @@ PJ_DEF(pj_status_t) pjmedia_transport_srtp_stop(pjmedia_transport *srtp)
transport_srtp *p_srtp = (transport_srtp*) srtp;
err_status_t err;
+ PJ_ASSERT_RETURN(srtp, PJ_EINVAL);
+
if (!p_srtp->session_inited)
return PJ_SUCCESS;
@@ -658,6 +664,8 @@ static pj_status_t transport_attach(pjmedia_transport *tp,
transport_srtp *srtp = (transport_srtp*) tp;
pj_status_t status;
+ PJ_ASSERT_RETURN(tp && rem_addr && addr_len, PJ_EINVAL);
+
/* Save the callbacks */
srtp->rtp_cb = rtp_cb;
srtp->rtcp_cb = rtcp_cb;
@@ -778,6 +786,8 @@ static pj_status_t transport_simulate_lost(pjmedia_transport *tp,
unsigned pct_lost)
{
transport_srtp *srtp = (transport_srtp *) tp;
+
+ PJ_ASSERT_RETURN(tp, PJ_EINVAL);
return pjmedia_transport_simulate_lost(srtp->member_tp, dir, pct_lost);
}
@@ -787,10 +797,10 @@ static pj_status_t transport_destroy (pjmedia_transport *tp)
transport_srtp *srtp = (transport_srtp *) tp;
pj_status_t status;
+ PJ_ASSERT_RETURN(tp, PJ_EINVAL);
+
pj_lock_acquire(srtp->mutex);
- pjmedia_transport_detach(tp, NULL);
-
if (srtp->setting.close_member_tp && srtp->member_tp) {
pjmedia_transport_close(srtp->member_tp);
}
@@ -1086,7 +1096,7 @@ static pj_status_t transport_media_create(pjmedia_transport *tp,
} else {
pjmedia_sdp_media *m_rem;
-
+
m_rem = sdp_remote->media[media_index];
/* Nothing to do on inactive media stream */
@@ -1489,6 +1499,8 @@ static pj_status_t transport_media_stop(pjmedia_transport *tp)
struct transport_srtp *srtp = (struct transport_srtp*) tp;
pj_status_t status;
+ PJ_ASSERT_RETURN(tp, PJ_EINVAL);
+
status = pjmedia_transport_media_stop(srtp->member_tp);
if (status != PJ_SUCCESS)
PJ_LOG(4, (srtp->pool->obj_name,
@@ -1509,7 +1521,7 @@ PJ_DEF(pj_status_t) pjmedia_transport_srtp_decrypt_pkt(pjmedia_transport *tp,
if (srtp->bypass_srtp)
return PJ_SUCCESS;
- PJ_ASSERT_RETURN(*pkt_len>0, PJ_EINVAL);
+ PJ_ASSERT_RETURN(tp && pkt && (*pkt_len>0), PJ_EINVAL);
PJ_ASSERT_RETURN(srtp->session_inited, PJ_EINVALIDOP);
/* Make sure buffer is 32bit aligned */