(closes issue #10579)
authorJoshua Colp <jcolp@digium.com>
Tue, 28 Aug 2007 14:37:09 +0000 (14:37 +0000)
committerJoshua Colp <jcolp@digium.com>
Tue, 28 Aug 2007 14:37:09 +0000 (14:37 +0000)
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

res/res_features.c

index 1f01f71..8895880 100644 (file)
@@ -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 {