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


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@363734 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Richard Mudgett
2012-04-25 20:48:22 +00:00
parent 796f4dc4e0
commit f381fecc87
2 changed files with 12 additions and 5 deletions
+11 -4
View File
@@ -5977,7 +5977,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);
@@ -6024,10 +6024,17 @@ static int dahdi_send_callrerouting_facility_exec(struct ast_channel *chan, cons
args.reason = NULL;
}
pri_send_callrerouting_facility_exec(pvt->sig_pvt, chan->_state, args.destination,
args.original, args.reason);
res = pri_send_callrerouting_facility_exec(pvt->sig_pvt, chan->_state,
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) */
+1 -1
View File
@@ -9020,7 +9020,7 @@ int pri_send_keypad_facility_exec(struct sig_pri_chan *p, const char *digits)
int pri_send_callrerouting_facility_exec(struct sig_pri_chan *p, enum ast_channel_state chanstate, const char *destination, const char *original, const char *reason)
{
int res = -1;
int res;
sig_pri_lock_private(p);