Problem with queue and call's channels


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.

What version of Asterisk are you using?

Yup, sorry about that.
Asterisk 11.7.0.

That’s a pretty old version of Asterisk 11. I would recommend upgrading to the latest Asterisk release to see if that fixes the problem.

If not, you should look at the SIP call flow to see if the channels that are ‘hanging around’ have a properly processed BYE request. If they do, and the problem persists after you’ve upgraded, I’d file an issue on the issue tracker.

1 Like

Ok. Thanks for the quick reply. I’m gonna try to update to the latest Asterisk 13 via apt-get.

apt-get is not a good option to make an update, based on the Asterisk Wiki There is currently no official repository for asterisk packages. Asterisk source code is distributed by Digium via tarballs and Git.

1 Like

Hi, mjordan
I met the same problem on Asterisk 14.2.1, sometimes our sip client crashed during the call, then the channel isn’t released until we restart Asterisk, although I have set rtptimeout=20. we found out the problem when we checked the cdr record, the duration is longer than 24 hours.
It turns out jbenable=yes causes the problem, why? @mjordan