summaryrefslogtreecommitdiff
path: root/channels/chan_dahdi.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2012-04-25 20:51:58 +0000
committerRichard Mudgett <rmudgett@digium.com>2012-04-25 20:51:58 +0000
commitaf39a4374e411f70bcd164275f1339654d513805 (patch)
tree0c79f726be8cff8ad7776ac47674c3aeb5af6f09 /channels/chan_dahdi.c
parentd2ac624b877d3a4f9c47dfa85dba58f791582565 (diff)
Make DAHDISendCallreroutingFacility wait 5 seconds for a reply before disconnecting the call.
Some switches may not handle the call-deflection/call-rerouting message if the call is disconnected too soon after being sent. Asteisk was not waiting for any reply before disconnecting the call. * Added a 5 second delay before disconnecting the call to wait for a potential response if the peer does not disconnect first. (closes issue ASTERISK-19708) Reported by: mehdi Shirazi Patches: jira_asterisk_19708_v1.8.patch (license #5621) patch uploaded by rmudgett Tested by: rmudgett ........ Merged revisions 363730 from http://svn.asterisk.org/svn/asterisk/branches/1.8 ........ Merged revisions 363734 from http://svn.asterisk.org/svn/asterisk/branches/10 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@363740 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'channels/chan_dahdi.c')
-rw-r--r--channels/chan_dahdi.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index 6b63ed381..9a2352080 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -5985,7 +5985,7 @@ static int dahdi_send_callrerouting_facility_exec(struct ast_channel *chan, cons
/* Data will be our digit string */
struct dahdi_pvt *pvt;
char *parse;
- int res = -1;
+ int res;
AST_DECLARE_APP_ARGS(args,
AST_APP_ARG(destination);
AST_APP_ARG(original);
@@ -6032,10 +6032,17 @@ static int dahdi_send_callrerouting_facility_exec(struct ast_channel *chan, cons
args.reason = NULL;
}
- pri_send_callrerouting_facility_exec(pvt->sig_pvt, ast_channel_state(chan), args.destination,
- args.original, args.reason);
+ res = pri_send_callrerouting_facility_exec(pvt->sig_pvt, ast_channel_state(chan),
+ args.destination, args.original, args.reason);
+ if (!res) {
+ /*
+ * Wait up to 5 seconds for a reply before hanging up this call
+ * leg if the peer does not disconnect first.
+ */
+ ast_safe_sleep(chan, 5000);
+ }
- return res;
+ return -1;
}
#endif /* defined(HAVE_PRI_PROG_W_CAUSE) */
#endif /* defined(HAVE_PRI) */