aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2009-03-18 01:28:42 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2009-03-18 01:28:42 +0000
commit91282c22ff7b8facf84d267fda0555eb4a17261a (patch)
treeaeee88ffbd06e0bc9b16c4ed7a235e376aedaf13 /apps
parentf4a5d593628f3296611859f69ff24ee3d95535da (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.c18
-rw-r--r--apps/app_meetme.c16
-rw-r--r--apps/app_mixmonitor.c11
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);
}