Line reversals were withdrawn from new sales June/July this year [2008] and will be removed from existing services June/July next year [2009].(http://forums.whirlpool.net.au/archive/1076769).
Now I accept that to some extent these kinds of problems are
unavoidable without the assistance of something like ROIC. There
is no immediate way to tell the difference between a gap between
two RINGs and the remote caller having hung up. The difference
only becomes obvious at the time when the next RING ought to have
started (I suppose a RING that was cut short could also be
detected, but since the gaps are longer than the RINGs it is more
likely that the hangup will occur during a gap).
Likewise, if a second caller comes along just perfectly starting
at the instant that the next RING was due for the first caller
then I can't see how FreeTDM can avoid being tricked.
However, at present, FreeTDM totally ignores FTDM_OOB_RING_STOP
events, and only seems to take notice of the first
FTDM_OOB_RING_START event (well it counts rings, but doesn't seem
to notice that the count has stopped increasing, at least not
until more than 25 seconds after the ringing has stopped). This
creates an unnecessarily long window of opportunity for problems.
Given the Australian ring cadence (0.4s RING, 0.2s gap, 0.4s
RING, 2s gap) it is possible to detect the caller having hung up
within at most 2 seconds - simply reset a timer on each
FTDM_OOB_RING_START and FTDM_OOB_RING_STOP event, and reset the
line state if the timer gets over 2 seconds. I have implemented
this (rather awkwardly), and it works well for me, but my timeout
is hard-coded and therefore it would not work with a US cadence
(2s RING, 4s gap).