diff options
Diffstat (limited to 'channels/chan_dahdi.c')
-rw-r--r-- | channels/chan_dahdi.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index 8026ca574..bad9e2c81 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -13402,6 +13402,14 @@ static void *pri_dchannel(void *vpri) pri->pvts[chanpos]->owner->_softhangup |= AST_SOFTHANGUP_DEV; break; default: + if (!pri->pvts[chanpos]->outgoing) { + /* + * The incoming call leg hung up before getting + * connected so just hangup the call. + */ + pri->pvts[chanpos]->owner->_softhangup |= AST_SOFTHANGUP_DEV; + break; + } switch (e->hangup.cause) { case PRI_CAUSE_USER_BUSY: pri->pvts[chanpos]->subs[SUB_REAL].needbusy =1; @@ -13474,6 +13482,14 @@ static void *pri_dchannel(void *vpri) pri->pvts[chanpos]->owner->_softhangup |= AST_SOFTHANGUP_DEV; break; default: + if (!pri->pvts[chanpos]->outgoing) { + /* + * The incoming call leg hung up before getting + * connected so just hangup the call. + */ + pri->pvts[chanpos]->owner->_softhangup |= AST_SOFTHANGUP_DEV; + break; + } switch (e->hangup.cause) { case PRI_CAUSE_USER_BUSY: pri->pvts[chanpos]->subs[SUB_REAL].needbusy =1; |