From df3d0188e4f4056d669615433e5b3cafc1c56d0f Mon Sep 17 00:00:00 2001 From: Matt Jordan Date: Sat, 3 Sep 2016 16:04:21 -0500 Subject: [PATCH] apps/app_dial: Fix crash on non-connect call paths for Privacy/Screening option In any scenario in which the callee is not connected to the caller, the current code in app_dial will crash due to raising a Dial End Stasis Message after the callee channel has been hung up. This patch corrects the error by simply moving the explicit hangup of the callee (peer) channel until after the dial end message. ASTERISK-25691 #close Change-Id: I816a414014424d0d8c80e2a3cbef13ef8c63798d --- apps/app_dial.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/app_dial.c b/apps/app_dial.c index de6fe1852d..7b7c70201b 100644 --- a/apps/app_dial.c +++ b/apps/app_dial.c @@ -1942,8 +1942,6 @@ static int do_privacy(struct ast_channel *chan, struct ast_channel *peer, } return 0; /* the good exit path */ } else { - /* hang up on the callee -- he didn't want to talk anyway! */ - ast_autoservice_chan_hangup_peer(chan, peer); return -1; } } @@ -2800,6 +2798,8 @@ static int dial_exec_full(struct ast_channel *chan, const char *data, struct ast if ( (ast_test_flag64(&opts, OPT_PRIVACY) || ast_test_flag64(&opts, OPT_SCREENING)) && pa.privdb_val == AST_PRIVACY_UNKNOWN) { if (do_privacy(chan, peer, &opts, opt_args, &pa)) { ast_channel_publish_dial(chan, peer, NULL, pa.status); + /* hang up on the callee -- he didn't want to talk anyway! */ + ast_autoservice_chan_hangup_peer(chan, peer); res = 0; goto out; } -- 2.47.2