rtp_engine: improved handling of get_rtp_info failure

In ast_rtp_instance_make_compatible(), after a failure of
channel tech call get_rtp_info() to return peer_instance,
the null pointer would be passed to ao2_ref, producing an
error that looked like a refernce counting problem but is
not.  This patch corrects that and adds helpful LOG_ERROR
messages to indicate which failure path occurred.

(issue AST-1276)
Review: https://reviewboard.asterisk.org/r/3156/
........

Merged revisions 406721 from http://svn.asterisk.org/svn/asterisk/branches/1.8


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@406722 65c4cc65-6c06-0410-ace0-fbb531ad65f3
changes/61/61/1
Scott Griepentrog 12 years ago
parent b2f5dd0bfd
commit ab09661031

@ -1925,11 +1925,15 @@ int ast_rtp_instance_make_compatible(struct ast_channel *chan, struct ast_rtp_in
}
glue->get_rtp_info(peer, &peer_instance);
if (!peer_instance || peer_instance->engine != instance->engine) {
if (!peer_instance) {
ast_log(LOG_ERROR, "Unable to get_rtp_info for peer type %s\n", glue->type);
ast_channel_unlock(peer);
return -1;
}
if (peer_instance->engine != instance->engine) {
ast_log(LOG_ERROR, "Peer engine mismatch for type %s\n", glue->type);
ast_channel_unlock(peer);
ao2_ref(peer_instance, -1);
peer_instance = NULL;
return -1;
}

Loading…
Cancel
Save