Index: chan_dahdi.c =================================================================== --- chan_dahdi.c (revision 235418) +++ chan_dahdi.c (working copy) @@ -9407,6 +9407,7 @@ /* If set to use DTMF CID signalling, listen for DTMF */ if (p->cid_signalling == CID_SIG_DTMF) { int k = 0; + int gotcid = 0; cs = NULL; ast_debug(1, "Receiving DTMF cid on " "channel %s\n", chan->name); @@ -9415,7 +9416,7 @@ for (;;) { struct ast_frame *f; res = ast_waitfor(chan, res); - if (res <= 0) { + if (res <= 0 && gotcid != 1) { ast_log(LOG_WARNING, "DTMFCID timed out waiting for ring. " "Exiting simple switch\n"); ast_hangup(chan); @@ -9428,6 +9429,9 @@ dtmfbuf[k++] = f->subclass.integer; ast_debug(1, "CID got digit '%c'\n", f->subclass.integer); res = 2000; + /* If the CID is complete */ + if (f->subclass == 'C') + gotcid = 1; } ast_frfree(f); if (chan->_state == AST_STATE_RING ||