Merged revisions 89618 via svnmerge from
authorMark Michelson <mmichelson@digium.com>
Mon, 26 Nov 2007 23:11:29 +0000 (23:11 +0000)
committerMark Michelson <mmichelson@digium.com>
Mon, 26 Nov 2007 23:11:29 +0000 (23:11 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r89618 | mmichelson | 2007-11-26 17:10:49 -0600 (Mon, 26 Nov 2007) | 7 lines

After issuing a "say load new", if a caller hangs up during the middle of playback of a number,
app_playback will continue to try to play the remaining files. With this change, no more files will
be played back upon hangup.

(closes issue #11345, reported and patched by IgorG)

........

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

apps/app_playback.c

index b4286d3..21b3ab3 100644 (file)
@@ -185,7 +185,7 @@ static int do_say(say_args_t *a, const char *s, const char *options, int depth)
        AST_LIST_INSERT_HEAD(&head, n, entries);
 
        /* scan the body, one piece at a time */
        AST_LIST_INSERT_HEAD(&head, n, entries);
 
        /* scan the body, one piece at a time */
-       while ( ret <= 0 && (x = strsep(&rule, ",")) ) { /* exit on key */
+       while ( !ret && (x = strsep(&rule, ",")) ) { /* exit on key */
                char fn[128];
                const char *p, *fmt, *data; /* format and data pointers */
 
                char fn[128];
                const char *p, *fmt, *data; /* format and data pointers */
 
@@ -234,6 +234,10 @@ static int do_say(say_args_t *a, const char *s, const char *options, int depth)
                                strcpy(fn2 + l, data);
                                ret = do_say(a, fn2, options, depth);
                        }
                                strcpy(fn2 + l, data);
                                ret = do_say(a, fn2, options, depth);
                        }
+                       
+                       if (ret) {
+                               break;
+                       }
                }
        }
        ast_var_delete(n);
                }
        }
        ast_var_delete(n);