mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-30 10:33:13 +00:00
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
This commit is contained in:
@@ -5985,7 +5985,7 @@ static int dahdi_send_callrerouting_facility_exec(struct ast_channel *chan, cons
|
|||||||
/* Data will be our digit string */
|
/* Data will be our digit string */
|
||||||
struct dahdi_pvt *pvt;
|
struct dahdi_pvt *pvt;
|
||||||
char *parse;
|
char *parse;
|
||||||
int res = -1;
|
int res;
|
||||||
AST_DECLARE_APP_ARGS(args,
|
AST_DECLARE_APP_ARGS(args,
|
||||||
AST_APP_ARG(destination);
|
AST_APP_ARG(destination);
|
||||||
AST_APP_ARG(original);
|
AST_APP_ARG(original);
|
||||||
@@ -6032,10 +6032,17 @@ static int dahdi_send_callrerouting_facility_exec(struct ast_channel *chan, cons
|
|||||||
args.reason = NULL;
|
args.reason = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
pri_send_callrerouting_facility_exec(pvt->sig_pvt, ast_channel_state(chan), args.destination,
|
res = pri_send_callrerouting_facility_exec(pvt->sig_pvt, ast_channel_state(chan),
|
||||||
args.original, args.reason);
|
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_PROG_W_CAUSE) */
|
||||||
#endif /* defined(HAVE_PRI) */
|
#endif /* defined(HAVE_PRI) */
|
||||||
|
@@ -9048,7 +9048,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 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);
|
sig_pri_lock_private(p);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user