[asterisk-dev] [Code Review] Allow transfer loops w/o allowing forwarding loops

Terry Wilson reviewboard at asterisk.org
Fri May 6 03:22:23 CDT 2011



> On 2011-05-06 00:17:45, Alec Davis wrote:
> > /branches/1.4/apps/app_queue.c, lines 3050-3060
> > <https://reviewboard.asterisk.org/r/1195/diff/2/?file=16250#file16250line3050>
> >
> >     removing this section in app_queue appears to have broken then roundrobin attempts to multiple dynamic agents.
> >     
> >     only the first gets rung (say 15 seconds), then for the remainder (45seconds) of the queue timeout(60) noone else is atempted.
> >     
> >     The caller still is on the line.
> >     
> >     version SVN-branch-1.8-r315673M
> 
> Terry Wilson wrote:
>     Gah. I'll try to reproduce tomorrow and fix.

Ok, so I stayed up to fix it. Feel free to update and test and close any issue that may have been opened about it. Off to bed.


- Terry


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


On 2011-04-22 18:12:01, Terry Wilson wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviewboard.asterisk.org/r/1195/
> -----------------------------------------------------------
> 
> (Updated 2011-04-22 18:12:01)
> 
> 
> Review request for Asterisk Developers, Mark Michelson and David Vossel.
> 
> 
> Summary
> -------
> 
> We try to avoid the situation where two phones may be forwarded to each other causing an infinite loop by storing each dialed interface in a channel datastore and checking the list before dialing out. This works, but currently breaks situations like A calls B, A transfers B to C, B transfers C to A, and A transfers C to B. Since human interaction is happening here and not an automated forwarding loop, it should be allowed.
> 
> This patch removes the dialed_interfaces datastore when a call is bridged (a suggestion from the brilliant mmichelson). If a call is being bridged, it should be safe to assume that we aren't stuck in a loop.
> 
> I determined that it was "peer" and not "chan" where the datastore was stored by trial and error. No matter what I tried, "chan" never had the datastore. I will fully admit that the features code still confuses the hell out of me even after all of these years.
> 
> Note: This bug exists also up to 1.8 (probably trunk, I just haven't tried yet)
> 
> 
> Diffs
> -----
> 
>   /branches/1.4/apps/app_dial.c 314725 
>   /branches/1.4/apps/app_queue.c 314725 
>   /branches/1.4/res/res_features.c 314725 
> 
> Diff: https://reviewboard.asterisk.org/r/1195/diff
> 
> 
> Testing
> -------
> 
> I tried the above scenario and it now works. I also tried forwarding a couple of phones to each other and it still broke out of the loop.
> 
> 
> Thanks,
> 
> Terry
> 
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20110506/64999a18/attachment.htm>


More information about the asterisk-dev mailing list