Fix random crashes when using the MeetMe application. This patch converts list

handling to use the linked list macros and most importantly, implements
reference counting on the ast_conference objects.  The reference counting was
first backported from 1.4.  However, that code has some problems that caused
the reference count to never hit zero.  Those problems are fixed in this patch
and will be resolved in 1.4 and trunk next, with a different patch.

(issues #7647, #9073, #9106, BE-115). 


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@55750 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Russell Bryant
2007-02-21 00:19:14 +00:00
parent 960d22deb4
commit 602c5bb8c3
3 changed files with 173 additions and 187 deletions

11
utils.c
View File

@@ -907,3 +907,14 @@ void ast_enable_packet_fragmentation(int sock)
#endif
}
AST_MUTEX_DEFINE_STATIC(fetchadd_m); /* used for all fetc&add ops */
int ast_atomic_fetchadd_int_slow(volatile int *p, int v)
{
int ret;
ast_mutex_lock(&fetchadd_m);
ret = *p;
*p += v;
ast_mutex_unlock(&fetchadd_m);
return ret;
}