Don't crash on a guest directmedia call

A sip_pvt may not have relatedpeer set if a call doesn't match up
with a peer. If there is no relatedpeer, there is no direct media
ACL to apply, so just return that it is allowed.

(closes issue ASTERISK-20040)
Reported by: Terry Wilson

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@369214 65c4cc65-6c06-0410-ace0-fbb531ad65f3
certified/1.8.15
Terry Wilson 13 years ago
parent c842a8c145
commit 4151dff715

@ -29159,6 +29159,12 @@ static int apply_directmedia_ha(struct sip_pvt *p1, struct sip_pvt *p2, const ch
ast_rtp_instance_get_remote_address(p1->rtp, &them);
ast_rtp_instance_get_local_address(p1->rtp, &us);
/* If p2 is a guest call, there will be no peer. If there is no peer, there
* is no directmediaha, so go ahead and allow it */
if (!p2->relatedpeer) {
return res;
}
if ((res = ast_apply_ha(p2->relatedpeer->directmediaha, &them)) == AST_SENSE_DENY) {
const char *us_addr = ast_strdupa(ast_sockaddr_stringify(&us));
const char *them_addr = ast_strdupa(ast_sockaddr_stringify(&them));

Loading…
Cancel
Save