WipeOut
2003-Nov-14 13:00 UTC
[Asterisk-Users] Potential call logging problem for commercial systems..
I have been playing around a lot with the CDR today and I may have stumbled across a very serious problem, specifically where there is billing taking place.. If a call is placed between 2 phones and the network connection is broken from both the phones with out hanging up first the call is never logged to the CDR and it seems never termintaed.. It would appear that Asterisk relys on recieving the SIP signals to tell it that the call has terminated and so if it does not get that data it will never release the call, there does not appear to be any call progress checking that could terminate the call if the end points could no longer be reached.. This could have a major impact on, not only billing services, but also on things like IAX trunks that could sit with an open channel forever.. I may have missed something in the config that would solve this problem so if I have please reply and let us know what it is.. Later..
John Todd
2003-Nov-14 14:03 UTC
[Asterisk-Users] Potential call logging problem for commercial systems..
>I have been playing around a lot with the CDR today and I may have >stumbled across a very serious problem, specifically where there is >billing taking place.. > >If a call is placed between 2 phones and the network connection is >broken from both the phones with out hanging up first the call is >never logged to the CDR and it seems never termintaed.. It would >appear that Asterisk relys on recieving the SIP signals to tell it >that the call has terminated and so if it does not get that data it >will never release the call, there does not appear to be any call >progress checking that could terminate the call if the end points >could no longer be reached.. > >This could have a major impact on, not only billing services, but >also on things like IAX trunks that could sit with an open channel >forever.. > >I may have missed something in the config that would solve this >problem so if I have please reply and let us know what it is.. > >Later..You should set a maximum timeout on any channel you bring up. This kills SIP zombies. It's not optimal, but prevents infinite calls. Alternately, if your RTP data stream is passing through Asterisk during the call, you could write a short extension to chan_sip which would look for "imbalanced" traffic or zero traffic. In other words, if one side of the conversation kept sending audio data, but the other side became completely silent, then after a few minutes (configurable timer?) you could probably assume that the other side was disconnected. Same thing if both side of the RTP stream were happily sending data, and suddenly they both stopped; kill the call. See http://bugs.digium.com/bug_view_page.php?bug_id=0000207 JT