I was not aware, until reading this thread at BroadbandReports.com, that it is possible to limit the time of a SIP call. Quoting Nitzan Kon, CEO of Future Nine Corporation:
# L(x[:y][:z]): Limit the call to 'x' ms, warning when 'y' ms are left, repeated every 'z' ms) Only 'x' is required, 'y' and 'z' are optional.
* LIMIT_PLAYAUDIO_CALLER - yes|no (default yes) - Play sounds to the caller.
* LIMIT_PLAYAUDIO_CALLEE - yes|no - Play sounds to the callee.
* LIMIT_TIMEOUT_FILE - File to play when time is up.
* LIMIT_CONNECT_FILE - File to play when call begins.
* LIMIT_WARNING_FILE - File to play as warning if 'y' is defined. If LIMIT_WARNING_FILE is not defined, then the default behaviour is to announce ("You have [XX minutes] YY seconds").
To my knowledge this is not supported in FreePBX at all. However, it might be desirable to have a system-wide maximum call length that can be set in the general settings (I'd say 6 hours would be a good default for any system not supporting dial-up Internet users) :-) and perhaps a way to override that on certain (unusually expensive) trunks. The idea would be to simply modify the current Dial string to include the L option and associated parameters.
I don't know if this would work with any other technologies (IAX2, etc.), but if so this could be applicable to those as well.
The main reason would be to avoid "runaway" call times - the rare case where someone accidentally leaves a phone off-hook and for whatever reason the other end never sends a hangup or other call termination signal, and you use up a huge number of minutes for no good reason. (I once knew someone who had a modem or computer malfunction, and it left a toll call to a dial-up service connected for three days, running up a $600+ phone bill. Of course that was in pre-VoIP days!).
By the way, the linked thread has another possibly good suggestion for controlling unterminated/"lost in the system" calls, which is adding rtptimeout=120 and rtpholdtimeout=300 to sip.conf (or in FreePBX, I put those in /etc/asterisk/sip_general_custom.conf).