I have a very serious problem with my system. My scenario consists of many phones that make calls to just one phone (PHONE1). On its side, PHONE1 can make calls to any of the other phones.
To manage what phone gets answered by PHONE1 I use a queue so that when various phones try to call PHONE1 at the same time, PHONE1 can answer one call and the others get put on hold (ringinuse=no).
This system works great most of the time, but now comes the problem. For reasons that are unknown to me sometimes call’s channels don’t get closed, wich causes PHONE1 to report that it’s “in use” and, because of that, all the calls that arrive at the queue get immediately put on hold, when no real call is taking place.
The problem only gets worse if I turn ringinuse on. Channels keep not getting closed and clogging the system.
When I check the channels in the asterisk CLI and request their hangup, they get closed but I get a Retransmission Timeout Warning. After doing a little research I’m inclined to say that the network where my system is operating has some issues and sometimes starts dropping packets, which causes some calls to drop and not get closed properly (please correct me if I’m wrong).
Additionally, sometimes the Retransmission timeout Warning pops-up in the middle of the CLI, in other words, it not just when I close the ghost channels.
So, my question is, is there a way/trick, within Asterisk only, that can help me prevent this ghost channels from existing? (At the moment I don’t have the required means to try to discover the problem on the network and fix it). Something like limiting the calls duration time so the channels get closed after some time (I don’t mind limiting the calls PHONE1 takes to 2 or 3 minutes).
Things I tried:
rtptimeout=60 - Didn’t work for me. The ghost calls keep clogging the system.
TL;DR: Call’s channels don’t get closed, which causes the only agent in the queue to report that it is “in use” and so no calls get answered.