Added deadlock protection to try_suggested_sip_codec in chan_sip.c.

Review: https://reviewboard.asterisk.org/r/285/


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@201717 65c4cc65-6c06-0410-ace0-fbb531ad65f3
certified/1.8.6
Matthew Nicholson 16 years ago
parent dcfe69ec64
commit 21ad428d0d

@ -6076,6 +6076,14 @@ static void try_suggested_sip_codec(struct sip_pvt *p)
{
int fmt;
const char *codec;
struct ast_channel* chan;
chan = ast_channel_ref(p->owner);
while (ast_channel_trylock(chan)) {
sip_pvt_unlock(p);
usleep(1);
sip_pvt_lock(p);
}
if (p->outgoing_call) {
codec = pbx_builtin_getvar_helper(p->owner, "SIP_CODEC_OUTBOUND");
@ -6083,7 +6091,12 @@ static void try_suggested_sip_codec(struct sip_pvt *p)
codec = pbx_builtin_getvar_helper(p->owner, "SIP_CODEC");
}
if (!codec)
codec = ast_strdupa(S_OR(codec, ""));
ast_channel_unlock(chan);
chan = ast_channel_unref(chan);
if (ast_strlen_zero(codec))
return;
fmt = ast_getformatbyname(codec);

Loading…
Cancel
Save