summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_dahdi.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index 218d55079..043f1a1c6 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -7824,6 +7824,17 @@ static int mwi_send_process_event(struct dahdi_pvt * pvt, int event)
}
}
break;
+ /* Going off hook, I need to punt this spill */
+ case DAHDI_EVENT_RINGOFFHOOK:
+ if (pvt->cidspill) {
+ ast_free(pvt->cidspill);
+ pvt->cidspill = NULL;
+ pvt->cidpos = 0;
+ pvt->cidlen = 0;
+ }
+ pvt->mwisend_data.mwisend_current = MWI_SEND_DONE;
+ pvt->mwisendactive = 0;
+ break;
case DAHDI_EVENT_RINGERON:
case DAHDI_EVENT_HOOKCOMPLETE:
break;
@@ -8271,7 +8282,7 @@ static void *do_monitor(void *data)
ast_debug(1, "Monitor doohicky got event %s on channel %d\n", event2str(res), i->channel);
/* Don't hold iflock while handling init events */
ast_mutex_unlock(&iflock);
- if (0 == i->mwisendactive || 0 != mwi_send_process_event(i, res)) {
+ if (0 == i->mwisendactive || 0 == mwi_send_process_event(i, res)) {
handle_init_event(i, res);
}
ast_mutex_lock(&iflock);