Skip to main content

Limit Call Foreward

Posted by gerteizinga on Wed, 02/04/2009

Hello

Recently one of our users forewarded his phone. He did that to his own extention, so a loop occured which resulted in killing the asterisk process.

The same happens if i foreward my extention to my cell phone, after forewarding my cell to my extention on the pbx.

I would like to know if it is possible to limit the call forward feature.

Regards

Gert


Submitted by eeman on Wed, 02/04/2009 Permalink

the system would not realize it was a loop because the act of forwarding spawns a new Dial application and subsequently a new uniqueID for the call. The same thing occurs when you loop it from the outside (cell phone). limiting concurrent call count at the gateway will stop external loops from crashing asterisk. On an internal loop, this becomes more difficult, _especially_ if you are trying to preserve the original callerID. There is also another type of forwarding done on the phone itself that also could fall victim to such end-user gotchas. If end-users decide it might be cute to forward phone A to phone B and forward phone B to phone C and point C back to phone A they could still crash your system. Is this a single-tenant box(STE)? If its an STE then only that company is inconvenienced and hopefully, shame and embarrassment will auto-correct any deliberate silliness.

Submitted by cbbs70a on Wed, 02/04/2009 Permalink

I ran into a similiar problem last year where user A forwarded his calls to user B and user B forwarded to user A without either of them knowing about it. I was left with 2 choices.

Either

(1) Write a background program that would look at the configurations of each user. Then calculate the "call forwarding topology" of the network using non-linear global optimization and combinatorial optimization routines and Markov chains. If a conflict existed, then self-correct and notify the user(s) of the error. Re-optimize the topology and calculate again. Of course, if IP phones ran routing protocols like OSPF, we could use that. This would take several dozen man hours to write.

or

(2) Yell at the user(s) and tell them not to be so freaking stupid next time. Also make sure that I sent them a big enough bill for fixing the problem that they won't make the same mistake again.

Option 2 was much cheaper to implement and I have not had a re-occurrence since.

FSD