summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2015-05-13 12:24:32 -0500
committerGerrit Code Review <gerrit2@gerrit.digium.api>2015-05-13 12:24:32 -0500
commit6a12b0634bd58bc4c8de37d191d3aa1d3e4e545b (patch)
tree7eb773c02317a37ad72bb5c2de6fd40f39f3a315
parent16f602f5c2297f2d75360efe27893df00b34285a (diff)
parentc780b6e431438fb837832e311c585ba2cb573fec (diff)
Merge "chan_dahdi/sig_pri: Fix crash on ISDN call hangup collision." into 13
-rw-r--r--channels/sig_pri.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/channels/sig_pri.c b/channels/sig_pri.c
index a66d16b53..2815dac13 100644
--- a/channels/sig_pri.c
+++ b/channels/sig_pri.c
@@ -7102,10 +7102,11 @@ static void *pri_dchannel(void *vpri)
break;
}
if (pri->pvts[chanpos]->owner) {
- int do_hangup = 0;
-
snprintf(cause_str, sizeof(cause_str), "PRI PRI_EVENT_HANGUP (%d)", e->hangup.cause);
pri_queue_pvt_cause_data(pri, chanpos, cause_str, e->hangup.cause);
+ }
+ if (pri->pvts[chanpos]->owner) {
+ int do_hangup = 0;
/* Queue a BUSY instead of a hangup if our cause is appropriate */
ast_channel_hangupcause_set(pri->pvts[chanpos]->owner, e->hangup.cause);
@@ -7246,10 +7247,11 @@ static void *pri_dchannel(void *vpri)
break;
}
if (pri->pvts[chanpos]->owner) {
- int do_hangup = 0;
-
snprintf(cause_str, sizeof(cause_str), "PRI PRI_EVENT_HANGUP_REQ (%d)", e->hangup.cause);
pri_queue_pvt_cause_data(pri, chanpos, cause_str, e->hangup.cause);
+ }
+ if (pri->pvts[chanpos]->owner) {
+ int do_hangup = 0;
ast_channel_hangupcause_set(pri->pvts[chanpos]->owner, e->hangup.cause);
switch (ast_channel_state(pri->pvts[chanpos]->owner)) {