diff options
author | moy <moy@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-08-20 03:26:59 +0000 |
---|---|---|
committer | moy <moy@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-08-20 03:26:59 +0000 |
commit | 5ffb96a5560b109a6af97036ab23a56e6a45c430 (patch) | |
tree | a540eae95199614b0dfe558f7a6849562c5fc1f2 /channels/chan_dahdi.c | |
parent | 636faf006e7cb4d5dadca128e64e614f19b5b1ff (diff) |
fixed bug caused by calling ast_request without calling ast_call on an R2 channel, ie, CHANISAVAIL
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@213216 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_dahdi.c')
-rw-r--r-- | channels/chan_dahdi.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index 2fa7ccaec..74cf4f719 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -4619,6 +4619,7 @@ static int dahdi_call(struct ast_channel *ast, char *rdest, int timeout) if (p->mfcr2) { openr2_calling_party_category_t chancat; int callres = 0; + char *c, *l; c = strchr(dest, '/'); if (c) { @@ -5255,7 +5256,7 @@ static int dahdi_hangup(struct ast_channel *ast) } #endif #ifdef HAVE_OPENR2 - if (p->mfcr2) { + if (p->mfcr2 && p->mfcr2call && openr2_chan_get_direction(p->r2chan) != OR2_DIR_STOPPED) { ast_log(LOG_DEBUG, "disconnecting MFC/R2 call on chan %d\n", p->channel); /* If it's an incoming call, check the mfcr2_forced_release setting */ if (openr2_chan_get_direction(p->r2chan) == OR2_DIR_BACKWARD && p->mfcr2_forced_release) { @@ -5268,6 +5269,9 @@ static int dahdi_hangup(struct ast_channel *ast) openr2_chan_disconnect_call(p->r2chan, r2cause); } dahdi_r2_update_monitor_count(p->mfcr2, 1); + } else if (p->mfcr2call) { + ast_log(LOG_DEBUG, "Clearing call request on channel %d\n", p->channel); + p->mfcr2call = 0; } #endif switch (p->sig) { @@ -11510,6 +11514,9 @@ static struct ast_channel *dahdi_request(const char *type, int format, const str tmp->cdrflags |= AST_CDR_CALLWAIT; break; } +#ifdef HAVE_OPENR2 +next: +#endif if (backwards) { p = p->prev; if (!p) |