Remove AST_PBX_KEEPALIVE usage from res_agi.
authorRussell Bryant <russell@russellbryant.com>
Mon, 22 Dec 2008 14:16:54 +0000 (14:16 +0000)
committerRussell Bryant <russell@russellbryant.com>
Mon, 22 Dec 2008 14:16:54 +0000 (14:16 +0000)
commit7e72821959f399242b3358296c0e99b9942e937a
tree5a4a66737f004799f1610ad0cdb5e0c7efdf697d
parent894c91afe0f67811194126d458f10610bb54bbd6
Remove AST_PBX_KEEPALIVE usage from res_agi.

This patch removes the usage of AST_PBX_KEEPALIVE from res_agi.  The only usage
was for the AGI command, "asyncagi break".  This patch removes this feature.
Normally, a feature would not be removed like this.  However, this code is
broken and usage of it will result in a memory leak.

Usage of this feature will make the AGI code return a result of
AST_PBX_KEEPALIVE.  The PBX handler assumes that another thread has assumed
ownership of the channel.  The channel thread will exit without destroying the
channel.  Unfortunately, _no_ thread has ownership of the channel at this
point.  There are a couple of serious problems here:

1) The only way to recover the caller is to issue a channel redirect.  This
   will work, but this will be done with a masquerade, and the old ast_channel
   structure will be lost.

2) Until the channel redirect happens, there is no code servicing the channel.
   That means nothing is reading audio or handling events coming from the
   channel.  This is very bad.

The recommended way to get this same "break" functionality is to issue the
redirect while the channel is still being handled by the AGI code.  That way,
there will be no memory leak, and there will be no period of time that the
channel is not being serviced.

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@166258 65c4cc65-6c06-0410-ace0-fbb531ad65f3
res/res_agi.c