aboutsummaryrefslogtreecommitdiffstats
path: root/main/features.c
diff options
context:
space:
mode:
authordvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-03 15:27:30 +0000
committerdvossel <dvossel@f38db490-d61c-443f-a65b-d21fe96a405b>2009-06-03 15:27:30 +0000
commitd45d40d0dfb9a9ba41ceaccdf508f68e92e0a352 (patch)
tree973b1665a48d1d7e013d9eeea085c27f4822d2c9 /main/features.c
parentb85722e8c6220fbe917f8d961c5e375206f77d0f (diff)
Merged revisions 198856 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk ........ r198856 | dvossel | 2009-06-02 16:17:49 -0500 (Tue, 02 Jun 2009) | 10 lines Generic call forward api, ast_call_forward() The function ast_call_forward() forwards a call to an extension specified in an ast_channel's call_forward string. After an ast_channel is called, if the channel's call_forward string is set this function can be used to forward the call to a new channel and terminate the original one. I have included this api call in both channel.c's ast_request_and_dial() and feature.c's feature_request_and_dial(). App_dial and app_queue already contain call forward logic specific for their application and options. (closes issue #13630) Reported by: festr Review: https://reviewboard.asterisk.org/r/271/ ........ git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@198889 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/features.c')
-rw-r--r--main/features.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/main/features.c b/main/features.c
index 67fa710f2..92a2695be 100644
--- a/main/features.c
+++ b/main/features.c
@@ -1955,7 +1955,13 @@ static struct ast_channel *ast_feature_request_and_dial(struct ast_channel *call
if (!active_channel)
continue;
- if (chan && (chan == active_channel)){
+ if (chan && (chan == active_channel)) {
+ if (!ast_strlen_zero(chan->call_forward)) {
+ if (!(chan = ast_call_forward(caller, chan, &to, format, NULL, outstate))) {
+ return NULL;
+ }
+ continue;
+ }
f = ast_read(chan);
if (f == NULL) { /*doh! where'd he go?*/
state = AST_CONTROL_HANGUP;