aboutsummaryrefslogtreecommitdiffstats
path: root/main/file.c
diff options
context:
space:
mode:
authormnicholson <mnicholson@f38db490-d61c-443f-a65b-d21fe96a405b>2008-11-24 21:27:26 +0000
committermnicholson <mnicholson@f38db490-d61c-443f-a65b-d21fe96a405b>2008-11-24 21:27:26 +0000
commit2c81341cfb92be4a3cc63699fd1f715aa20c9887 (patch)
treec1bb9aefecc096fa18c8596b3d4bdf215c64db56 /main/file.c
parent47da39a455232dca1de9d8485e5bcb0f5eb148f4 (diff)
Make ast_streamfile() check the result of ast_openstream() before doing
anything with it. (closes issue #13955) Reported by: chris-mac git-svn-id: http://svn.digium.com/svn/asterisk/trunk@158851 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/file.c')
-rw-r--r--main/file.c36
1 files changed, 18 insertions, 18 deletions
diff --git a/main/file.c b/main/file.c
index 488500e1d..79c5c1bf2 100644
--- a/main/file.c
+++ b/main/file.c
@@ -900,6 +900,10 @@ int ast_streamfile(struct ast_channel *chan, const char *filename, const char *p
int seekattempt;
fs = ast_openstream(chan, filename, preflang);
+ if (!fs) {
+ ast_log(LOG_WARNING, "Unable to open %s (format %s): %s\n", filename, ast_getformatname_multiple(fmt, sizeof(fmt), chan->nativeformats), strerror(errno));
+ return -1;
+ }
/* check to see if there is any data present (not a zero length file),
* done this way because there is no where for ast_openstream_full to
@@ -910,28 +914,24 @@ int ast_streamfile(struct ast_channel *chan, const char *filename, const char *p
else
return 0;
- if (fs)
- vfs = ast_openvstream(chan, filename, preflang);
+ vfs = ast_openvstream(chan, filename, preflang);
if (vfs) {
ast_debug(1, "Ooh, found a video stream, too, format %s\n", ast_getformatname(vfs->fmt->format));
}
- if (fs){
- int res;
- if (ast_test_flag(chan, AST_FLAG_MASQ_NOSTREAM))
- fs->orig_chan_name = ast_strdup(chan->name);
- if (ast_applystream(chan, fs))
- return -1;
- if (vfs && ast_applystream(chan, vfs))
- return -1;
- res = ast_playstream(fs);
- if (!res && vfs)
- res = ast_playstream(vfs);
- ast_verb(3, "<%s> Playing '%s.%s' (language '%s')\n", chan->name, filename, ast_getformatname(chan->writeformat), preflang ? preflang : "default");
- return res;
- }
- ast_log(LOG_WARNING, "Unable to open %s (format %s): %s\n", filename, ast_getformatname_multiple(fmt, sizeof(fmt), chan->nativeformats), strerror(errno));
- return -1;
+ int res;
+ if (ast_test_flag(chan, AST_FLAG_MASQ_NOSTREAM))
+ fs->orig_chan_name = ast_strdup(chan->name);
+ if (ast_applystream(chan, fs))
+ return -1;
+ if (vfs && ast_applystream(chan, vfs))
+ return -1;
+ res = ast_playstream(fs);
+ if (!res && vfs)
+ res = ast_playstream(vfs);
+ ast_verb(3, "<%s> Playing '%s.%s' (language '%s')\n", chan->name, filename, ast_getformatname(chan->writeformat), preflang ? preflang : "default");
+
+ return res;
}
struct ast_filestream *ast_readfile(const char *filename, const char *type, const char *comment, int flags, int check, mode_t mode)