diff options
-rw-r--r-- | channels/sig_pri.c | 16 |
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); |