add the ability to be able to echo DTMF_BEGIN/END, HTML, and IMAGE frames, too
authorRussell Bryant <russell@russellbryant.com>
Thu, 25 May 2006 19:21:09 +0000 (19:21 +0000)
committerRussell Bryant <russell@russellbryant.com>
Thu, 25 May 2006 19:21:09 +0000 (19:21 +0000)
(issue #7193, Mithraen, with some mods)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@30360 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_echo.c

index 183f843..eba15f8 100644 (file)
@@ -72,26 +72,30 @@ static int echo_exec(struct ast_channel *chan, void *data)
                        break;
                f->delivery.tv_sec = 0;
                f->delivery.tv_usec = 0;
-               if (f->frametype == AST_FRAME_VOICE) {
-                       if (ast_write(chan, f)) 
-                               break;
-               } else if (f->frametype == AST_FRAME_VIDEO) {
-                       if (ast_write(chan, f)) 
-                               break;
-               } else if (f->frametype == AST_FRAME_DTMF) {
+               switch (f->frametype) {
+               case AST_FRAME_DTMF:
+               case AST_FRAME_DTMF_END:
                        if (f->subclass == '#') {
                                res = 0;
-                               break;
-                       } else {
-                               if (ast_write(chan, f))
-                                       break;
+                               ast_frfree(f);
+                               goto end;
+                       }
+                       /* 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);
        }
-
+end:
        LOCAL_USER_REMOVE(u);
-
        return res;
 }