return AST_RTP_GLUE_RESULT_FORBID;
}
- if (!(opp_chan = ast_bridged_channel(chan))) {
- return AST_RTP_GLUE_RESULT_FORBID;
- } else if (((opp_chan->tech != &sip_tech) && (opp_chan->tech != &sip_tech_info)) ||
- (!(opp = opp_chan->tech_pvt))) {
+ if ((opp_chan = ast_bridged_channel(chan)) && (((opp_chan->tech != &sip_tech) && (opp_chan->tech != &sip_tech_info)) ||
+ (!(opp = opp_chan->tech_pvt)))) {
return AST_RTP_GLUE_RESULT_FORBID;
}
sip_pvt_lock(p);
- while (sip_pvt_trylock(opp)) {
+ while (opp && sip_pvt_trylock(opp)) {
sip_pvt_unlock(p);
usleep(1);
sip_pvt_lock(p);
}
if (!(p->rtp)) {
- sip_pvt_unlock(opp);
+ if (opp) {
+ sip_pvt_unlock(opp);
+ }
sip_pvt_unlock(p);
return AST_RTP_GLUE_RESULT_FORBID;
}
if (ast_test_flag(&p->flags[0], SIP_DIRECT_MEDIA)) {
res = AST_RTP_GLUE_RESULT_REMOTE;
- if (!apply_directmedia_ha(p, opp, "audio")) {
+ if (opp && !apply_directmedia_ha(p, opp, "audio")) {
res = AST_RTP_GLUE_RESULT_FORBID;
}
} else if (ast_test_flag(&p->flags[0], SIP_DIRECT_MEDIA_NAT)) {
res = AST_RTP_GLUE_RESULT_FORBID;
}
- sip_pvt_unlock(opp);
+ if (opp) {
+ sip_pvt_unlock(opp);
+ }
if (p->srtp) {
res = AST_RTP_GLUE_RESULT_FORBID;
return AST_RTP_GLUE_RESULT_FORBID;
}
- if (!(opp_chan = ast_bridged_channel(chan))) {
- return AST_RTP_GLUE_RESULT_FORBID;
- } else if (((opp_chan->tech != &sip_tech) && (opp_chan->tech != &sip_tech_info)) ||
- (!(opp = opp_chan->tech_pvt))) {
+ if ((opp_chan = ast_bridged_channel(chan)) && (((opp_chan->tech != &sip_tech) && (opp_chan->tech != &sip_tech_info)) ||
+ (!(opp = opp_chan->tech_pvt)))) {
return AST_RTP_GLUE_RESULT_FORBID;
}
sip_pvt_lock(p);
- while (sip_pvt_trylock(opp)) {
+ while (opp && sip_pvt_trylock(opp)) {
sip_pvt_unlock(p);
usleep(1);
sip_pvt_lock(p);
}
if (!(p->vrtp)) {
- sip_pvt_unlock(opp);
+ if (opp) {
+ sip_pvt_unlock(opp);
+ }
sip_pvt_unlock(p);
return AST_RTP_GLUE_RESULT_FORBID;
}
if (ast_test_flag(&p->flags[0], SIP_DIRECT_MEDIA)) {
res = AST_RTP_GLUE_RESULT_REMOTE;
- if (!apply_directmedia_ha(p, opp, "video")) {
+ if (opp && !apply_directmedia_ha(p, opp, "video")) {
res = AST_RTP_GLUE_RESULT_FORBID;
}
}
- sip_pvt_unlock(opp);
+ if (opp) {
+ sip_pvt_unlock(opp);
+ }
sip_pvt_unlock(p);
return res;
return AST_RTP_GLUE_RESULT_FORBID;
}
- if (!(opp_chan = ast_bridged_channel(chan))) {
- return AST_RTP_GLUE_RESULT_FORBID;
- } else if (((opp_chan->tech != &sip_tech) && (opp_chan->tech != &sip_tech_info)) ||
- (!(opp = opp_chan->tech_pvt))) {
+ if ((opp_chan = ast_bridged_channel(chan)) && (((opp_chan->tech != &sip_tech) && (opp_chan->tech != &sip_tech_info)) ||
+ (!(opp = opp_chan->tech_pvt)))) {
return AST_RTP_GLUE_RESULT_FORBID;
}
sip_pvt_lock(p);
- while (sip_pvt_trylock(opp)) {
+ while (opp && sip_pvt_trylock(opp)) {
sip_pvt_unlock(p);
usleep(1);
sip_pvt_lock(p);
}
if (!(p->trtp)) {
- sip_pvt_unlock(opp);
+ if (opp) {
+ sip_pvt_unlock(opp);
+ }
sip_pvt_unlock(p);
return AST_RTP_GLUE_RESULT_FORBID;
}
if (ast_test_flag(&p->flags[0], SIP_DIRECT_MEDIA)) {
res = AST_RTP_GLUE_RESULT_REMOTE;
- if (!apply_directmedia_ha(p, opp, "text")) {
+ if (opp && !apply_directmedia_ha(p, opp, "text")) {
res = AST_RTP_GLUE_RESULT_FORBID;
}
}
- sip_pvt_unlock(opp);
+ if (opp) {
+ sip_pvt_unlock(opp);
+ }
sip_pvt_unlock(p);
return res;