[Asterisk-cvs] asterisk/channels chan_iax.c,1.38,1.39
martinp at lists.digium.com
martinp at lists.digium.com
Thu Nov 13 17:23:00 CST 2003
Update of /usr/cvsroot/asterisk/channels
In directory mongoose.digium.com:/tmp/cvs-serv2152/channels
Modified Files:
chan_iax.c
Log Message:
Fix deadlock in iax
Index: chan_iax.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_iax.c,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- chan_iax.c 13 Nov 2003 16:25:52 -0000 1.38
+++ chan_iax.c 13 Nov 2003 23:49:15 -0000 1.39
@@ -3774,7 +3774,13 @@
ast_log(LOG_DEBUG, "Ooh, voice format changed to %s\n", ast_getformatname(f.subclass));
if (iaxs[fr.callno]->owner) {
int orignative;
- ast_mutex_lock(&iaxs[fr.callno]->owner->lock);
+retryowner:
+ if (ast_mutex_trylock(&iaxs[fr.callno]->owner->lock)) {
+ ast_mutex_unlock(&iaxsl[fr.callno]);
+ usleep(1);
+ ast_mutex_lock(&iaxsl[fr.callno]);
+ if (iaxs[fr.callno] && iaxs[fr.callno]->owner) goto retryowner;
+ }
orignative = iaxs[fr.callno]->owner->nativeformats;
iaxs[fr.callno]->owner->nativeformats = f.subclass;
if (iaxs[fr.callno]->owner->readformat)
More information about the svn-commits
mailing list