[asterisk-dev] [Code Review] app_queue: Makes call_queue objects ao2 objects so ref counting can be done

Russell Bryant russell at digium.com
Fri Nov 20 18:53:44 CST 2009



> On 2009-11-20 14:18:08, David Vossel wrote:
> > /branches/1.4/apps/app_queue.c, line 4012
> > <https://reviewboard.asterisk.org/r/427/diff/1/?file=7500#file7500line4012>
> >
> >     not necessary, we do a memset right below this

If so, I'd rather keep this and remove the memset.


- Russell


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/427/#review1267
-----------------------------------------------------------


On 2009-11-12 15:56:40, David Vossel wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/427/
> -----------------------------------------------------------
> 
> (Updated 2009-11-12 15:56:40)
> 
> 
> Review request for Asterisk Developers.
> 
> 
> Summary
> -------
> 
> In app_queue, it is possible for a call_queue to be destroyed while another object still holds a pointer to it.  This patch converts call_queue objects to ao2 objects allowing them to be ref counted.  This makes it safe for the queue_ent object in queue_exec() to reference it's parent call_queue even after it has left the queue.
> 
> 
> This addresses bug 15686.
>     https://issues.asterisk.org/view.php?id=15686
> 
> 
> Diffs
> -----
> 
>   /branches/1.4/apps/app_queue.c 229742 
> 
> Diff: https://reviewboard.asterisk.org/r/427/diff
> 
> 
> Testing
> -------
> 
> I developed a situation in which a call_queue would be destroyed after the queue_ent left the queue, but while the queue_ent would still attempt to access it's parent call_queue to do an update_queue() on hangup... This originally caused a horrible crash because the call_queue was already freed.  Now it exits correctly destroying the call_queue right before queue_exec() exits.
> 
> 
> Thanks,
> 
> David
> 
>




More information about the asterisk-dev mailing list