]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
app_mp3: Throw warning on nonexistent stream
authorNaveen Albert <asterisk@phreaknet.org>
Mon, 3 Jan 2022 01:13:33 +0000 (01:13 +0000)
committerJoshua Colp <jcolp@sangoma.com>
Wed, 5 Jan 2022 16:55:42 +0000 (10:55 -0600)
Currently, the MP3Player application doesn't
emit a warning if attempting to play a stream
which no longer exists. This can be a common
scenario as many mp3 streams are valid at some
point but can disappear at any time.

Now a warning is thrown if attempting to play
a nonexistent MP3 stream, instead of silently
exiting.

ASTERISK-29829 #close

Change-Id: I53a0bf1ed1740166655eb66fe7675f6f808bf535

apps/app_mp3.c

index 888f21a82010eba97613073709387d956fbcea00..5d2fc88a3b090f796b8179e06cfb1b9b770baca2 100644 (file)
@@ -179,6 +179,7 @@ static int mp3_exec(struct ast_channel *chan, const char *data)
        int pid = -1;
        RAII_VAR(struct ast_format *, owriteformat, NULL, ao2_cleanup);
        int timeout = 2;
+       int startedmp3 = 0;
        struct timeval next;
        struct ast_frame *f;
        struct myframe {
@@ -242,12 +243,16 @@ static int mp3_exec(struct ast_channel *chan, const char *data)
                                if (res > 0) {
                                        myf.f.datalen = res;
                                        myf.f.samples = res / 2;
+                                       startedmp3 = 1;
                                        if (ast_write(chan, &myf.f) < 0) {
                                                res = -1;
                                                break;
                                        }
                                } else {
                                        ast_debug(1, "No more mp3\n");
+                                       if (!startedmp3) { /* we couldn't do anything, which means this stream doesn't work */
+                                               ast_log(LOG_WARNING, "MP3 stream '%s' is broken or nonexistent\n", data);
+                                       }
                                        res = 0;
                                        break;
                                }