diff options
author | qwell <qwell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-09-29 21:12:43 +0000 |
---|---|---|
committer | qwell <qwell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2010-09-29 21:12:43 +0000 |
commit | ca1d1635dfc36c72b822834e26b704814deef28a (patch) | |
tree | 42d7bd8b46407a77ea6c26a8ef705153530c4a39 /main | |
parent | 2ac16afaa0321938734646f3dc7ec13fe95848dd (diff) |
Merged revisions 289339 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.6.2
................
r289339 | qwell | 2010-09-29 16:03:47 -0500 (Wed, 29 Sep 2010) | 15 lines
Merged revisions 289338 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r289338 | qwell | 2010-09-29 15:56:26 -0500 (Wed, 29 Sep 2010) | 8 lines
Allow a manager originate to succeed on forwarded devices.
The timeout to wait for an answer was being set to 0 when a device forwarded to another
extension. We don't always need the timeout set like this, so make it an optional
parameter, and don't use it in this case.
ABE-2544
........
................
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.8@289340 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main')
-rw-r--r-- | main/channel.c | 9 | ||||
-rw-r--r-- | main/features.c | 2 |
2 files changed, 8 insertions, 3 deletions
diff --git a/main/channel.c b/main/channel.c index 3718386df..120138b43 100644 --- a/main/channel.c +++ b/main/channel.c @@ -5002,6 +5002,7 @@ struct ast_channel *ast_call_forward(struct ast_channel *caller, struct ast_chan struct ast_party_redirecting *apr = &orig->redirecting; char *data, *type; int cause = 0; + int res; /* gather data and request the new forward channel */ ast_copy_string(tmpchan, orig->call_forward, sizeof(tmpchan)); @@ -5060,7 +5061,11 @@ struct ast_channel *ast_call_forward(struct ast_channel *caller, struct ast_chan ast_channel_unlock(orig); /* call new channel */ - if ((*timeout = ast_call(new, data, 0))) { + res = ast_call(new, data, 0); + if (timeout) { + *timeout = res; + } + if (res) { ast_log(LOG_NOTICE, "Unable to call forward to channel %s/%s\n", type, (char *)data); ast_hangup(orig); ast_hangup(new); @@ -5137,7 +5142,7 @@ struct ast_channel *__ast_request_and_dial(const char *type, format_t format, co if (timeout > -1) timeout = res; if (!ast_strlen_zero(chan->call_forward)) { - if (!(chan = ast_call_forward(NULL, chan, &timeout, format, oh, outstate))) { + if (!(chan = ast_call_forward(NULL, chan, NULL, format, oh, outstate))) { return NULL; } continue; diff --git a/main/features.c b/main/features.c index b3d87fdb2..2c9954c24 100644 --- a/main/features.c +++ b/main/features.c @@ -2833,7 +2833,7 @@ static struct ast_channel *feature_request_and_dial(struct ast_channel *caller, if (chan && (chan == active_channel)){ if (!ast_strlen_zero(chan->call_forward)) { - if (!(chan = ast_call_forward(caller, chan, &to, format, NULL, outstate))) { + if (!(chan = ast_call_forward(caller, chan, NULL, format, NULL, outstate))) { return NULL; } continue; |