Index: channel.c =================================================================== RCS file: /usr/cvsroot/asterisk/channel.c,v retrieving revision 1.195 diff -u -r1.195 channel.c --- channel.c 15 May 2005 04:48:30 -0000 1.195 +++ channel.c 18 May 2005 21:03:22 -0000 @@ -1795,6 +1795,12 @@ else res = 0; break; + case AST_FRAME_CNG: + if (chan->tech->write) + res = chan->tech->write(chan, fr); + else + res = 0; + break; default: if (chan->tech->write) { if (chan->writetrans) { @@ -2900,6 +2906,7 @@ (f->frametype == AST_FRAME_VIDEO) || (f->frametype == AST_FRAME_IMAGE) || (f->frametype == AST_FRAME_HTML) || + (f->frametype == AST_FRAME_CNG) || (f->frametype == AST_FRAME_DTMF)) { if ((f->frametype == AST_FRAME_DTMF) && Index: channels/chan_zap.c =================================================================== RCS file: /usr/cvsroot/asterisk/channels/chan_zap.c,v retrieving revision 1.447 diff -u -r1.447 chan_zap.c --- channels/chan_zap.c 16 May 2005 19:15:56 -0000 1.447 +++ channels/chan_zap.c 18 May 2005 21:03:33 -0000 @@ -982,6 +982,14 @@ #else { #endif + +/* + queue a CNG frame since zaptel.c seems to block for 200ms on sending audio + and this royally screws up timestamps that chan_zap sends + */ + struct ast_frame f = { AST_FRAME_CNG }; + ast_queue_frame(ast, &f); + zo.op = ZT_DIAL_OP_APPEND; zo.dialstr[0] = 'T'; zo.dialstr[1] = digit;