diff options
author | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-03-18 01:28:42 +0000 |
---|---|---|
committer | kpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b> | 2009-03-18 01:28:42 +0000 |
commit | 91282c22ff7b8facf84d267fda0555eb4a17261a (patch) | |
tree | aeee88ffbd06e0bc9b16c4ed7a235e376aedaf13 /main/file.c | |
parent | f4a5d593628f3296611859f69ff24ee3d95535da (diff) |
Improve the build system to *properly* remove unnecessary symbols from the runtime global namespace. Along the way, change the prefixes on some internal-only API calls to use a common prefix.
With these changes, for a module to export symbols into the global namespace, it must have *both* the AST_MODFLAG_GLOBAL_SYMBOLS flag and a linker script that allows the linker to leave the symbols exposed in the module's .so file (see res_odbc.exports for an example).
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@182802 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/file.c')
-rw-r--r-- | main/file.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/main/file.c b/main/file.c index faca5a9be..43a7030f7 100644 --- a/main/file.c +++ b/main/file.c @@ -203,14 +203,20 @@ int ast_writestream(struct ast_filestream *fs, struct ast_frame *f) struct ast_frame *trf; fs->lastwriteformat = f->subclass; /* Get the translated frame but don't consume the original in case they're using it on another stream */ - trf = ast_translate(fs->trans, f, 0); - if (trf) { - res = fs->fmt->write(fs, trf); + if ((trf = ast_translate(fs->trans, f, 0))) { + struct ast_frame *cur; + + /* the translator may have returned multiple frames, so process them */ + for (cur = trf; cur; cur = AST_LIST_NEXT(cur, frame_list)) { + if ((res = fs->fmt->write(fs, trf))) { + ast_log(LOG_WARNING, "Translated frame write failed\n"); + break; + } + } ast_frfree(trf); - if (res) - ast_log(LOG_WARNING, "Translated frame write failed\n"); - } else + } else { res = 0; + } } } return res; |