diff --git a/channels/sig_pri.c b/channels/sig_pri.c index c58a3f358292127627b47ee9834a7900907d432e..71e7e23deb5502d3c2199d71d8c4f73f7cef191a 100644 --- a/channels/sig_pri.c +++ b/channels/sig_pri.c @@ -7090,10 +7090,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); @@ -7234,10 +7235,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)) {