|
|
@ -72,26 +72,30 @@ static int echo_exec(struct ast_channel *chan, void *data)
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
f->delivery.tv_sec = 0;
|
|
|
|
f->delivery.tv_sec = 0;
|
|
|
|
f->delivery.tv_usec = 0;
|
|
|
|
f->delivery.tv_usec = 0;
|
|
|
|
if (f->frametype == AST_FRAME_VOICE) {
|
|
|
|
switch (f->frametype) {
|
|
|
|
if (ast_write(chan, f))
|
|
|
|
case AST_FRAME_DTMF:
|
|
|
|
break;
|
|
|
|
case AST_FRAME_DTMF_END:
|
|
|
|
} else if (f->frametype == AST_FRAME_VIDEO) {
|
|
|
|
|
|
|
|
if (ast_write(chan, f))
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
} else if (f->frametype == AST_FRAME_DTMF) {
|
|
|
|
|
|
|
|
if (f->subclass == '#') {
|
|
|
|
if (f->subclass == '#') {
|
|
|
|
res = 0;
|
|
|
|
res = 0;
|
|
|
|
break;
|
|
|
|
ast_frfree(f);
|
|
|
|
} else {
|
|
|
|
goto end;
|
|
|
|
if (ast_write(chan, f))
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
/* fall through */
|
|
|
|
|
|
|
|
case AST_FRAME_DTMF_BEGIN:
|
|
|
|
|
|
|
|
case AST_FRAME_VOICE:
|
|
|
|
|
|
|
|
case AST_FRAME_VIDEO:
|
|
|
|
|
|
|
|
case AST_FRAME_TEXT:
|
|
|
|
|
|
|
|
case AST_FRAME_HTML:
|
|
|
|
|
|
|
|
case AST_FRAME_IMAGE:
|
|
|
|
|
|
|
|
if (ast_write(chan, f)) {
|
|
|
|
|
|
|
|
ast_frfree(f);
|
|
|
|
|
|
|
|
goto end;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
ast_frfree(f);
|
|
|
|
ast_frfree(f);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
end:
|
|
|
|
LOCAL_USER_REMOVE(u);
|
|
|
|
LOCAL_USER_REMOVE(u);
|
|
|
|
|
|
|
|
|
|
|
|
return res;
|
|
|
|
return res;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|