diff options
Diffstat (limited to 'pjmedia/src')
-rw-r--r-- | pjmedia/src/pjmedia/transport_srtp.c | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/pjmedia/src/pjmedia/transport_srtp.c b/pjmedia/src/pjmedia/transport_srtp.c index 4b04e699..409ac00f 100644 --- a/pjmedia/src/pjmedia/transport_srtp.c +++ b/pjmedia/src/pjmedia/transport_srtp.c @@ -646,18 +646,23 @@ static pj_status_t transport_attach(pjmedia_transport *tp, transport_srtp *srtp = (transport_srtp*) tp; pj_status_t status; - /* Attach itself to transport */ - status = pjmedia_transport_attach(srtp->member_tp, srtp, rem_addr, rem_rtcp, - addr_len, &srtp_rtp_cb, &srtp_rtcp_cb); - if (status != PJ_SUCCESS) - return status; - /* Save the callbacks */ srtp->rtp_cb = rtp_cb; srtp->rtcp_cb = rtcp_cb; srtp->user_data = user_data; - return status; + /* Attach itself to transport */ + status = pjmedia_transport_attach(srtp->member_tp, srtp, rem_addr, + rem_rtcp, addr_len, &srtp_rtp_cb, + &srtp_rtcp_cb); + if (status != PJ_SUCCESS) { + srtp->rtp_cb = NULL; + srtp->rtcp_cb = NULL; + srtp->user_data = NULL; + return status; + } + + return PJ_SUCCESS; } static void transport_detach(pjmedia_transport *tp, void *strm) @@ -798,12 +803,7 @@ static void srtp_rtp_cb( void *user_data, void *pkt, pj_ssize_t size) err_status_t err; if (srtp->bypass_srtp) { - /* Callback may be NULL if we receive stray packets (or when packet - * is received while we're being detached/re-attached). - */ - if (srtp->rtp_cb) { - srtp->rtp_cb(srtp->user_data, pkt, size); - } + srtp->rtp_cb(srtp->user_data, pkt, size); return; } @@ -863,9 +863,6 @@ static void srtp_rtcp_cb( void *user_data, void *pkt, pj_ssize_t size) err_status_t err; if (srtp->bypass_srtp) { - /* Callback may be NULL if we receive stray packets (or when packet - * is received while we're being detached/re-attached). - */ srtp->rtcp_cb(srtp->user_data, pkt, size); return; } |