mirror of
https://github.com/asterisk/asterisk.git
synced 2026-06-09 03:45:27 +00:00
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: https://origsvn.digium.com/svn/asterisk/branches/1.4@182802 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user