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 /apps | |
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 'apps')
-rw-r--r-- | apps/app_chanspy.c | 18 | ||||
-rw-r--r-- | apps/app_meetme.c | 16 | ||||
-rw-r--r-- | apps/app_mixmonitor.c | 11 |
3 files changed, 31 insertions, 14 deletions
diff --git a/apps/app_chanspy.c b/apps/app_chanspy.c index 18e4972a5..3f19b04af 100644 --- a/apps/app_chanspy.c +++ b/apps/app_chanspy.c @@ -171,7 +171,7 @@ static void spy_release(struct ast_channel *chan, void *data) static int spy_generate(struct ast_channel *chan, void *data, int len, int samples) { struct chanspy_translation_helper *csth = data; - struct ast_frame *f; + struct ast_frame *f, *cur; ast_audiohook_lock(&csth->spy_audiohook); if (csth->spy_audiohook.status != AST_AUDIOHOOK_STATUS_RUNNING) { @@ -186,14 +186,16 @@ static int spy_generate(struct ast_channel *chan, void *data, int len, int sampl if (!f) return 0; - if (ast_write(chan, f)) { - ast_frfree(f); - return -1; - } + for (cur = f; cur; cur = AST_LIST_NEXT(cur, frame_list)) { + if (ast_write(chan, cur)) { + ast_frfree(f); + return -1; + } - if (csth->fd) { - if (write(csth->fd, f->data, f->datalen) < 0) { - ast_log(LOG_WARNING, "write() failed: %s\n", strerror(errno)); + if (csth->fd) { + if (write(csth->fd, cur->data, cur->datalen) < 0) { + ast_log(LOG_WARNING, "write() failed: %s\n", strerror(errno)); + } } } diff --git a/apps/app_meetme.c b/apps/app_meetme.c index 67c851a2c..a314a79f0 100644 --- a/apps/app_meetme.c +++ b/apps/app_meetme.c @@ -2338,9 +2338,19 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c } } if (conf->transframe[index]) { - if (conf->transframe[index]->frametype != AST_FRAME_NULL) { - if (can_write(chan, confflags) && ast_write(chan, conf->transframe[index])) - ast_log(LOG_WARNING, "Unable to write frame to channel %s\n", chan->name); + if ((conf->transframe[index]->frametype != AST_FRAME_NULL) && + can_write(chan, confflags)) { + struct ast_frame *cur; + + /* the translator may have returned a list of frames, so + write each one onto the channel + */ + for (cur = conf->transframe[index]; cur; cur = AST_LIST_NEXT(cur, frame_list)) { + if (ast_write(chan, cur)) { + ast_log(LOG_WARNING, "Unable to write frame to channel %s\n", chan->name); + break; + } + } } } else { ast_mutex_unlock(&conf->listenlock); diff --git a/apps/app_mixmonitor.c b/apps/app_mixmonitor.c index 4d5f5be26..f1a1624a8 100644 --- a/apps/app_mixmonitor.c +++ b/apps/app_mixmonitor.c @@ -229,9 +229,14 @@ static void *mixmonitor_thread(void *obj) } } - /* Write out the frame */ - if (fs) - ast_writestream(fs, fr); + /* Write out the frame(s) */ + if (fs) { + struct ast_frame *cur; + + for (cur = fr; cur; cur = AST_LIST_NEXT(cur, frame_list)) { + ast_writestream(fs, cur); + } + } } else { ast_mutex_unlock(&mixmonitor->mixmonitor_ds->lock); } |