diff options
author | Joshua Colp <jcolp@digium.com> | 2007-08-28 14:37:09 +0000 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2007-08-28 14:37:09 +0000 |
commit | bc5950c4ce6436c973eb91025a9f4e4e58b63b37 (patch) | |
tree | b6ffce1b045ea8e48ca21b809a5daaa4a09b13f5 /res/res_features.c | |
parent | aea8783546afe0f5433a2fd6c5df4687a0c23cbb (diff) |
(closes issue #10579)
Reported by: ornati
Make sure the called channel during the attended transfer process becomes associated with the calling channel so that the ast_waitfor_* call works properly under epoll.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81210 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_features.c')
-rw-r--r-- | res/res_features.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/res/res_features.c b/res/res_features.c index 1f01f71c6..88958807a 100644 --- a/res/res_features.c +++ b/res/res_features.c @@ -1578,6 +1578,9 @@ static struct ast_channel *ast_feature_request_and_dial(struct ast_channel *call x = 0; started = ast_tvnow(); to = timeout; + + ast_poll_channel_add(caller, chan); + while (!((transferee && ast_check_hangup(transferee)) && (!igncallerstate && ast_check_hangup(caller))) && timeout && (chan->_state != AST_STATE_UP)) { struct ast_frame *f = NULL; @@ -1665,6 +1668,9 @@ static struct ast_channel *ast_feature_request_and_dial(struct ast_channel *call if (f) ast_frfree(f); } /* end while */ + + ast_poll_channel_del(caller, chan); + } else ast_log(LOG_NOTICE, "Unable to call channel %s/%s\n", type, (char *)data); } else { |