aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xfile.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/file.c b/file.c
index be82f9152..f7e419d45 100755
--- a/file.c
+++ b/file.c
@@ -172,9 +172,14 @@ int ast_writestream(struct ast_filestream *fs, struct ast_frame *f)
ast_log(LOG_WARNING, "Tried to write non-voice frame\n");
return -1;
}
- if ((fs->fmt->format & f->subclass) == f->subclass)
- return fs->fmt->write(fs, f);
- else {
+ if ((fs->fmt->format & f->subclass) == f->subclass) {
+ res = fs->fmt->write(fs, f);
+ if (res < 0)
+ ast_log(LOG_WARNING, "Natural write failed\n");
+ if (res > 0)
+ ast_log(LOG_WARNING, "Huh??\n");
+ return res;
+ } else {
/* XXX If they try to send us a type of frame that isn't the normal frame, and isn't
the one we've setup a translator for, we do the "wrong thing" XXX */
if (!fs->trans)
@@ -182,13 +187,14 @@ int ast_writestream(struct ast_filestream *fs, struct ast_frame *f)
if (!fs->trans)
ast_log(LOG_WARNING, "Unable to translate to format %s, source format %d\n", fs->fmt->name, f->subclass);
else {
+ res = 0;
/* Build a chain of translated frames */
fc = ast_translate(fs->trans, f);
f2 = fc;
while(f2) {
res = fs->fmt->write(fs, f2->fr);
if (res) {
- ast_log(LOG_WARNING, "Frame write failed\n");
+ ast_log(LOG_WARNING, "Translated frame write failed\n");
break;
}
f2 = f2->next;
@@ -341,12 +347,11 @@ int ast_streamfile(struct ast_channel *chan, char *filename)
1) Find which file handlers produce our type of format.
2) Look for a filename which it can handle.
3) If we find one, then great.
- *4) If not, see what files are there
- *5) See what we can actually support
- *6) Choose the one with the least costly translator path and
+ 4) If not, see what files are there
+ 5) See what we can actually support
+ 6) Choose the one with the least costly translator path and
set it up.
- XXX * = unimplemented XXX
*/
int fd = -1;
struct ast_channel *trans;