summaryrefslogtreecommitdiff
path: root/channels/sig_pri.c
diff options
context:
space:
mode:
Diffstat (limited to 'channels/sig_pri.c')
-rw-r--r--channels/sig_pri.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/channels/sig_pri.c b/channels/sig_pri.c
index c75badd66..251e6a04a 100644
--- a/channels/sig_pri.c
+++ b/channels/sig_pri.c
@@ -5225,6 +5225,14 @@ static void *pri_dchannel(void *vpri)
do_hangup = 1;
break;
default:
+ if (!pri->pvts[chanpos]->outgoing) {
+ /*
+ * The incoming call leg hung up before getting
+ * connected so just hangup the call.
+ */
+ do_hangup = 1;
+ break;
+ }
switch (e->hangup.cause) {
case PRI_CAUSE_USER_BUSY:
pri_queue_control(pri, chanpos, AST_CONTROL_BUSY);
@@ -5358,6 +5366,14 @@ static void *pri_dchannel(void *vpri)
do_hangup = 1;
break;
default:
+ if (!pri->pvts[chanpos]->outgoing) {
+ /*
+ * The incoming call leg hung up before getting
+ * connected so just hangup the call.
+ */
+ do_hangup = 1;
+ break;
+ }
switch (e->hangup.cause) {
case PRI_CAUSE_USER_BUSY:
pri_queue_control(pri, chanpos, AST_CONTROL_BUSY);