I’d like to suggest a change in the default dialing behavior of freepbx.
Currently, if voicemail is not enabled then the Ring Time (or the system-wide ringtimeout) is ignored and an “infinite” Dial is issued.
At first glance this may sound ok but I’ve run into a problem.
A lot of my extensions don’t need VM or other fancy magic. So the exten-vm macro just dials the destination without setting a timeout if “novm” is defined. The trouble is that I’ve had some softphones crashing lately and that led to having stale SIP channels.
For example, SIP/6010 (analog phone behind ATA) dialed SIP/4053 (softphone) but 4053 crashed somehow. Well, even if 4053 was unregistered and its channel cleared with “soft hangup”, the 6010 channel still stays up (even if I reboot the ATA and re-register).
show hints still shows InUse for 6010 and show channels gives:
Channel Location State Application(Data)
SIP/6010-b38d53e0 [email protected]:8 Up Dial(SIP/4053||tTwW)
So it seems that 6010 is in an infinite loop dialing out to 4053.
If it had a timeout it would eventually clear out on its own.
The fact is that now I don’t know how to get rid of that channel without restarting the Asterisk daemon.
What do you think?
I’ll leave the idea (which seems logical to me, say a 2 minute timeout) to others. To fix your issue and free the system do the following:
Get int othe asterisk CLI
and type soft hangup SIP/ and then press the tab key. It will give you a list of all sip devices online that you can hang up.
So in your example if you typed soft hangup SIP/6010 then without the space after it hit tab it would find the connection and allow you to hangup the connection for 6010.
Hope that helps some.
Thanks but I’m already aware of the useful “soft hangup” command but it doesn’t work in this case. I’ve successfully used “soft hangup” for other stale “active” channels (with or without RTP flow) but in this case, where SIP/6010 is dialing forever but there’s apparently no RTP flow, “soft hangup” exits saying that it requested the hangup but it’s still lying around there whenever I do a “show channels”. Besides, the extension is unreachable (InUse) as it has call waiting disabled. So I am forced to restart the asterisk daemon.
(I mentioned RTP flow because I also set rtp*timeout values in sip_general_custom.conf but that doesn’t help either)
Or just use RINGTIMER defined in extensions_additional.conf.
Anyway, I think that it’s a bug in 1.2 which has been supposedly fixed in 1.4 et al.
So I’m not sure if putting a timeout to DIal would actually fix these hung channel issues.
However, I do believe it’s good practice to always set a timeout (user-defined, so that it can be as long as one wants).