Fix compiler warnings on Fedora 26 / GCC 7.

GCC 7 has added capability to produce warnings, this fixes most of those
warnings.  The specific warnings are disabled in a few places:

* app_voicemail.c: truncation of paths more than 4096 chars in many places.
* chan_mgcp.c: callid truncated to 80 chars.
* cdr.c: two userfields are combined to cdr copy, fix would break ABI.
* tcptls.c: ignore use of deprecated method SSLv3_client_method().

ASTERISK-27156 #close

Change-Id: I65f280e7d3cfad279d16f41823a4d6fddcbc4c88
certified/13.18
Corey Farrell 8 years ago committed by George Joseph
parent 0d58fefa30
commit 0f49e6ee2e

@ -3181,7 +3181,7 @@ int reload_config(int reload)
static char *handle_cli_ooh323_show_peer(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
{
char ip_port[30];
char ip_port[64];
struct ooh323_peer *prev = NULL, *peer = NULL;
switch (cmd) {
@ -3212,7 +3212,7 @@ static char *handle_cli_ooh323_show_peer(struct ast_cli_entry *e, int cmd, struc
}
if (peer) {
sprintf(ip_port, "%s:%d", peer->ip, peer->port);
sprintf(ip_port, "%s:%hu", peer->ip, peer->port);
ast_cli(a->fd, "%-15.15s%s\n", "Name: ", peer->name);
ast_cli(a->fd, "%s:%s,%s\n", "FastStart/H.245 Tunneling", peer->faststart?"yes":"no",
peer->h245tunneling?"yes":"no");
@ -3280,7 +3280,7 @@ static char *handle_cli_ooh323_show_peers(struct ast_cli_entry *e, int cmd, stru
{
struct ooh323_peer *prev = NULL, *peer = NULL;
struct ast_str *codec_buf = ast_str_alloca(AST_FORMAT_CAP_NAMES_LEN);
char ip_port[30];
char ip_port[64];
#define FORMAT "%-15.15s %-15.15s %-23.23s %-s\n"
switch (cmd) {
@ -3303,7 +3303,7 @@ static char *handle_cli_ooh323_show_peers(struct ast_cli_entry *e, int cmd, stru
peer = peerl.peers;
while (peer) {
ast_mutex_lock(&peer->lock);
snprintf(ip_port, sizeof(ip_port), "%s:%d", peer->ip, peer->port);
snprintf(ip_port, sizeof(ip_port), "%s:%hu", peer->ip, peer->port);
ast_cli(a->fd, FORMAT, peer->name,
peer->accountcode,
ip_port,

@ -30,6 +30,8 @@ include $(ASTTOPDIR)/Makefile.moddir_rules
clean::
rm -f confbridge/*.o confbridge/*.i confbridge/*.gcda confbridge/*.gcno
app_voicemail.o: _ASTCFLAGS+=-Wno-format-truncation
app_confbridge.so: $(subst .c,.o,$(wildcard confbridge/*.c))
$(subst .c,.o,$(wildcard confbridge/*.c)): _ASTCFLAGS+=$(call MOD_ASTCFLAGS,app_confbridge)

@ -1425,7 +1425,7 @@ static int extenspy_exec(struct ast_channel *chan, const char *data)
static int dahdiscan_exec(struct ast_channel *chan, const char *data)
{
const char *spec = "DAHDI";
struct ast_flags flags;
struct ast_flags flags = {0};
struct spy_dtmf_options user_options = {
.cycle = '#',
.volume = '\0',

@ -1527,7 +1527,7 @@ outrun:
}
if (!ast_strlen_zero(targs->namerecloc)) {
int ret;
char fn[PATH_MAX];
char fn[PATH_MAX + sizeof(REC_FORMAT)];
snprintf(fn, sizeof(fn), "%s.%s", targs->namerecloc,
REC_FORMAT);

@ -2253,7 +2253,7 @@ static int minivm_greet_exec(struct ast_channel *chan, const char *data)
char ecodes[16] = "#";
char *tmpptr;
struct minivm_account *vmu;
char *username = argv[0];
char *username;
if (ast_strlen_zero(data)) {
ast_log(LOG_ERROR, "Minivm needs at least an account argument \n");

@ -6481,7 +6481,6 @@ static int try_calling(struct queue_ent *qe, struct ast_flags opts, char **opt_a
char oldexten[AST_MAX_EXTENSION]="";
char oldcontext[AST_MAX_CONTEXT]="";
char queuename[256]="";
char interfacevar[256]="";
struct ast_channel *peer;
struct ast_channel *which;
struct callattempt *lpeer;
@ -6682,6 +6681,7 @@ static int try_calling(struct queue_ent *qe, struct ast_flags opts, char **opt_a
}
} else { /* peer is valid */
RAII_VAR(struct ast_json *, blob, NULL, ast_json_unref);
RAII_VAR(struct ast_str *, interfacevar, ast_str_create(325), ast_free);
/* Ah ha! Someone answered within the desired timeframe. Of course after this
we will always return with -1 so that it is hung up properly after the
conversation. */
@ -6795,20 +6795,20 @@ static int try_calling(struct queue_ent *qe, struct ast_flags opts, char **opt_a
ao2_lock(qe->parent);
/* if setinterfacevar is defined, make member variables available to the channel */
/* use pbx_builtin_setvar to set a load of variables with one call */
if (qe->parent->setinterfacevar) {
snprintf(interfacevar, sizeof(interfacevar), "MEMBERINTERFACE=%s,MEMBERNAME=%s,MEMBERCALLS=%d,MEMBERLASTCALL=%ld,MEMBERPENALTY=%d,MEMBERDYNAMIC=%d,MEMBERREALTIME=%d",
if (qe->parent->setinterfacevar && interfacevar) {
ast_str_set(&interfacevar, 0, "MEMBERINTERFACE=%s,MEMBERNAME=%s,MEMBERCALLS=%d,MEMBERLASTCALL=%ld,MEMBERPENALTY=%d,MEMBERDYNAMIC=%d,MEMBERREALTIME=%d",
member->interface, member->membername, member->calls, (long)member->lastcall, member->penalty, member->dynamic, member->realtime);
pbx_builtin_setvar_multiple(qe->chan, interfacevar);
pbx_builtin_setvar_multiple(peer, interfacevar);
pbx_builtin_setvar_multiple(qe->chan, ast_str_buffer(interfacevar));
pbx_builtin_setvar_multiple(peer, ast_str_buffer(interfacevar));
}
/* if setqueueentryvar is defined, make queue entry (i.e. the caller) variables available to the channel */
/* use pbx_builtin_setvar to set a load of variables with one call */
if (qe->parent->setqueueentryvar) {
snprintf(interfacevar, sizeof(interfacevar), "QEHOLDTIME=%ld,QEORIGINALPOS=%d",
if (qe->parent->setqueueentryvar && interfacevar) {
ast_str_set(&interfacevar, 0, "QEHOLDTIME=%ld,QEORIGINALPOS=%d",
(long) (time(NULL) - qe->start), qe->opos);
pbx_builtin_setvar_multiple(qe->chan, interfacevar);
pbx_builtin_setvar_multiple(peer, interfacevar);
pbx_builtin_setvar_multiple(qe->chan, ast_str_buffer(interfacevar));
pbx_builtin_setvar_multiple(peer, ast_str_buffer(interfacevar));
}
ao2_unlock(qe->parent);

@ -7915,7 +7915,7 @@ static int vm_forwardoptions(struct ast_channel *chan, struct ast_vm_user *vmu,
*duration += prepend_duration;
msg_cat = ast_category_get(msg_cfg, "message", NULL);
snprintf(duration_buf, 11, "%ld", *duration);
snprintf(duration_buf, sizeof(duration_buf), "%ld", *duration);
if (!ast_variable_update(msg_cat, "duration", duration_buf, NULL, 0)) {
ast_config_text_file_save(textfile, msg_cfg, "app_voicemail");
}
@ -8685,7 +8685,7 @@ static int play_message_duration(struct ast_channel *chan, struct vm_state *vms,
static int play_message(struct ast_channel *chan, struct ast_vm_user *vmu, struct vm_state *vms)
{
int res = 0;
char filename[256], *cid;
char filename[PATH_MAX], *cid;
const char *origtime, *context, *category, *duration, *flag;
struct ast_config *msg_cfg;
struct ast_flags config_flags = { CONFIG_FLAG_NOCACHE };

@ -49,6 +49,8 @@ CHAN_DAHDI_OBJS= \
chan_dahdi.so: $(CHAN_DAHDI_OBJS)
$(CHAN_DAHDI_OBJS): _ASTCFLAGS+=$(call MOD_ASTCFLAGS,chan_dahdi)
chan_mgcp.o: _ASTCFLAGS+=-Wno-format-truncation
chan_misdn.o: _ASTCFLAGS+=-Imisdn
misdn_config.o: _ASTCFLAGS+=-Imisdn

@ -8571,7 +8571,7 @@ static int try_transfer(struct chan_iax2_pvt *pvt, struct iax_ies *ies)
{
int newcall = 0;
struct iax_ie_data ied;
struct ast_sockaddr new;
struct ast_sockaddr new = { {0,} };
memset(&ied, 0, sizeof(ied));
if (!ast_sockaddr_isnull(&ies->apparent_addr)) {

@ -1907,7 +1907,7 @@ static struct ast_channel *jingle_request(const char *type, struct ast_format_ca
{
RAII_VAR(struct jingle_config *, cfg, ao2_global_obj_ref(globals), ao2_cleanup);
RAII_VAR(struct jingle_endpoint *, endpoint, NULL, ao2_cleanup);
char *dialed, target[200] = "";
char *dialed, target[1024] = "";
struct ast_xmpp_buddy *buddy;
struct jingle_session *session;
struct ast_channel *chan;

@ -2080,7 +2080,7 @@ static int sip_cc_monitor_request_cc(struct ast_cc_monitor *monitor, int *availa
static int construct_pidf_body(enum sip_cc_publish_state state, char *pidf_body, size_t size, const char *presentity)
{
struct ast_str *body = ast_str_alloca(size);
char tuple_id[32];
char tuple_id[64];
generate_random_string(tuple_id, sizeof(tuple_id));
@ -15319,7 +15319,7 @@ static int transmit_cc_notify(struct ast_cc_agent *agent, struct sip_pvt *subscr
{
struct sip_request req;
struct sip_cc_agent_pvt *agent_pvt = agent->private_data;
char uri[SIPBUFSIZE];
char uri[SIPBUFSIZE + sizeof("cc-URI: \r\n") - 1];
char state_str[64];
char subscription_state_hdr[64];
@ -15336,7 +15336,7 @@ static int transmit_cc_notify(struct ast_cc_agent *agent, struct sip_pvt *subscr
add_header(&req, "Subscription-State", subscription_state_hdr);
if (state == CC_READY) {
generate_uri(subscription, agent_pvt->notify_uri, sizeof(agent_pvt->notify_uri));
snprintf(uri, sizeof(uri) - 1, "cc-URI: %s\r\n", agent_pvt->notify_uri);
snprintf(uri, sizeof(uri), "cc-URI: %s\r\n", agent_pvt->notify_uri);
}
add_content(&req, state_str);
if (state == CC_READY) {

@ -372,7 +372,7 @@ struct unistim_subchannel {
struct unistim_line {
ast_mutex_t lock;
char name[80]; /*! Like 200 */
char fullname[80]; /*! Like USTM/200\@black */
char fullname[101]; /*! Like USTM/200\@black */
char exten[AST_MAX_EXTENSION]; /*! Extension where to start */
char cid_num[AST_MAX_EXTENSION]; /*! CallerID Number */
char mailbox[AST_MAX_EXTENSION]; /*! Mailbox for MWI */
@ -3699,7 +3699,7 @@ static void key_select_option(struct unistimsession *pte, char keycode)
#define SELECTCODEC_MSG "Codec number : .."
static void handle_select_codec(struct unistimsession *pte)
{
char buf[30], buf2[5];
char buf[30], buf2[6];
pte->state = STATE_SELECTCODEC;
ast_copy_string(buf, ustmtext("Using codec", pte), sizeof(buf));

@ -46,6 +46,8 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "include/firmware.h"
#define IAX_FIRMWARE_SUBDIR "/firmware/iax"
struct iax_firmware {
AST_LIST_ENTRY(iax_firmware) list;
int fd;
@ -208,7 +210,7 @@ void iax_firmware_reload(void)
struct iax_firmware *cur = NULL;
DIR *fwd;
struct dirent *de;
char dir[256], fn[256];
char fn[PATH_MAX + sizeof(IAX_FIRMWARE_SUBDIR) + sizeof(de->d_name)];
AST_LIST_LOCK(&firmwares);
@ -218,12 +220,13 @@ void iax_firmware_reload(void)
}
/* Now that we have marked them dead... load new ones */
snprintf(dir, sizeof(dir), "%s/firmware/iax", ast_config_AST_DATA_DIR);
fwd = opendir(dir);
snprintf(fn, sizeof(fn), "%s%s", ast_config_AST_DATA_DIR, IAX_FIRMWARE_SUBDIR);
fwd = opendir(fn);
if (fwd) {
while((de = readdir(fwd))) {
if (de->d_name[0] != '.') {
snprintf(fn, sizeof(fn), "%s/%s", dir, de->d_name);
snprintf(fn, sizeof(fn), "%s%s/%s",
ast_config_AST_DATA_DIR, IAX_FIRMWARE_SUBDIR, de->d_name);
if (!try_firmware(fn)) {
ast_verb(2, "Loaded firmware '%s'\n", de->d_name);
}
@ -231,7 +234,7 @@ void iax_firmware_reload(void)
}
closedir(fwd);
} else {
ast_log(LOG_WARNING, "Error opening firmware directory '%s': %s\n", dir, strerror(errno));
ast_log(LOG_WARNING, "Error opening firmware directory '%s': %s\n", fn, strerror(errno));
}
/* Clean up leftovers */

@ -140,6 +140,7 @@ endif
$(CMD_PREFIX) rm $@.fix
ast_expr2f.o: _ASTCFLAGS+=-Wno-unused
cdr.o: _ASTCFLAGS+=-Wno-format-truncation
testexpr2: ast_expr2f.c ast_expr2.c ast_expr2.h
$(CC) -g -c -Iinclude -DSTANDALONE ast_expr2f.c
@ -314,7 +315,7 @@ endif
endif
tcptls.o: _ASTCFLAGS+=$(OPENSSL_INCLUDE)
tcptls.o: _ASTCFLAGS+=$(OPENSSL_INCLUDE) -Wno-deprecated-declarations
$(MAIN_TGT): $(OBJS) $(ASTSSL_LIB) $(ASTPJ_LIB) $(LIBEDIT_OBJ)
@$(CC) -c -o buildinfo.o $(_ASTCFLAGS) buildinfo.c $(ASTCFLAGS)

@ -2637,13 +2637,11 @@ to_string (struct val *vp)
if (vp->type == AST_EXPR_string || vp->type == AST_EXPR_numeric_string)
return;
tmp = malloc ((size_t)25);
if (tmp == NULL) {
ast_log(LOG_WARNING,"malloc() failed\n");
if (asprintf(&tmp, FP___PRINTF, vp->u.i) == -1) {
ast_log(LOG_WARNING, "asprintf() failed\n");
return;
}
sprintf(tmp, FP___PRINTF, vp->u.i);
vp->type = AST_EXPR_string;
vp->u.s = tmp;
}

@ -630,13 +630,11 @@ to_string (struct val *vp)
if (vp->type == AST_EXPR_string || vp->type == AST_EXPR_numeric_string)
return;
tmp = malloc ((size_t)25);
if (tmp == NULL) {
ast_log(LOG_WARNING,"malloc() failed\n");
if (asprintf(&tmp, FP___PRINTF, vp->u.i) == -1) {
ast_log(LOG_WARNING, "asprintf() failed\n");
return;
}
sprintf(tmp, FP___PRINTF, vp->u.i);
vp->type = AST_EXPR_string;
vp->u.s = tmp;
}

@ -386,6 +386,9 @@ static void ast_el_write_default_histfile(void);
static void asterisk_daemon(int isroot, const char *runuser, const char *rungroup);
#define DEFAULT_MONITOR_DIR DEFAULT_SPOOL_DIR "/monitor"
#define DEFAULT_RECORDING_DIR DEFAULT_SPOOL_DIR "/recording"
struct _cfg_paths {
char config_dir[PATH_MAX];
char module_dir[PATH_MAX];
@ -3654,8 +3657,8 @@ static void ast_readconfig(void)
ast_copy_string(cfg_paths.config_dir, DEFAULT_CONFIG_DIR, sizeof(cfg_paths.config_dir));
ast_copy_string(cfg_paths.spool_dir, DEFAULT_SPOOL_DIR, sizeof(cfg_paths.spool_dir));
ast_copy_string(cfg_paths.module_dir, DEFAULT_MODULE_DIR, sizeof(cfg_paths.module_dir));
snprintf(cfg_paths.monitor_dir, sizeof(cfg_paths.monitor_dir), "%s/monitor", cfg_paths.spool_dir);
snprintf(cfg_paths.recording_dir, sizeof(cfg_paths.recording_dir), "%s/recording", cfg_paths.spool_dir);
ast_copy_string(cfg_paths.monitor_dir, DEFAULT_MONITOR_DIR, sizeof(cfg_paths.monitor_dir));
ast_copy_string(cfg_paths.recording_dir, DEFAULT_RECORDING_DIR, sizeof(cfg_paths.recording_dir));
ast_copy_string(cfg_paths.var_dir, DEFAULT_VAR_DIR, sizeof(cfg_paths.var_dir));
ast_copy_string(cfg_paths.data_dir, DEFAULT_DATA_DIR, sizeof(cfg_paths.data_dir));
ast_copy_string(cfg_paths.log_dir, DEFAULT_LOG_DIR, sizeof(cfg_paths.log_dir));

@ -3552,7 +3552,7 @@ struct ast_cc_monitor *ast_cc_get_monitor_by_recall_core_id(const int core_id, c
*/
static void cc_unique_append(struct ast_str **str, const char *dialstring)
{
char dialstring_search[AST_CHANNEL_NAME];
char dialstring_search[AST_CHANNEL_NAME + 1];
if (ast_strlen_zero(dialstring)) {
/* No dialstring to append. */

@ -374,7 +374,7 @@ static char *complete_number(const char *partial, unsigned int min, unsigned int
int i, count = 0;
unsigned int prospective[2];
unsigned int part = strtoul(partial, NULL, 10);
char next[12];
char next[13];
if (part < min || part > max) {
return NULL;
@ -1031,7 +1031,7 @@ static char *handle_chanlist(struct ast_cli_entry *e, int cmd, struct ast_cli_ar
it_chans = ao2_iterator_init(channels, 0);
for (; (msg = ao2_iterator_next(&it_chans)); ao2_ref(msg, -1)) {
struct ast_channel_snapshot *cs = stasis_message_data(msg);
char durbuf[10] = "-";
char durbuf[16] = "-";
if (!count) {
if ((concise || verbose) && !ast_tvzero(cs->creationtime)) {

@ -31,20 +31,21 @@
ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/_private.h" /* ast_ssl_init() */
#ifdef HAVE_OPENSSL
#include <openssl/ssl.h>
#include <openssl/err.h>
#endif
#include <dlfcn.h>
#if defined(HAVE_OPENSSL) && \
!defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
#include "asterisk/_private.h" /* ast_ssl_init() */
#include <dlfcn.h>
#include "asterisk/utils.h"
#include "asterisk/lock.h"
#ifdef HAVE_OPENSSL
#define get_OpenSSL_function(func) do { real_##func = dlsym(RTLD_NEXT, __stringify(func)); } while(0)
static int startup_complete;
@ -74,7 +75,6 @@ static void ssl_lock(int mode, int n, const char *file, int line)
}
}
#if !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
int SSL_library_init(void)
{
#if defined(AST_DEVMODE)
@ -116,9 +116,6 @@ void ERR_free_strings(void)
{
/* we can't allow this to be called, ever */
}
#endif /* !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L */
#endif /* HAVE_OPENSSL */
/*!
* \internal
@ -128,8 +125,6 @@ void ERR_free_strings(void)
*/
int ast_ssl_init(void)
{
#if defined(HAVE_OPENSSL) && defined(OPENSSL_VERSION_NUMBER) && \
(OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER))
unsigned int i;
int (*real_SSL_library_init)(void);
void (*real_CRYPTO_set_id_callback)(unsigned long (*)(void));
@ -194,7 +189,14 @@ int ast_ssl_init(void)
startup_complete = 1;
#endif /* HAVE_OPENSSL and its version < 1.1 */
return 0;
}
#else
int ast_ssl_init(void)
{
return 0;
}
#endif

@ -6081,7 +6081,7 @@ static int action_coreshowchannels(struct mansession *s, const struct message *m
for (; (msg = ao2_iterator_next(&it_chans)); ao2_ref(msg, -1)) {
struct ast_channel_snapshot *cs = stasis_message_data(msg);
struct ast_str *built = ast_manager_build_channel_state_string_prefix(cs, "");
char durbuf[10] = "";
char durbuf[16] = "";
if (!built) {
continue;

@ -2436,7 +2436,7 @@ static const char *store_by_locale(locale_t prevlocale)
cur = NULL;
AST_LIST_LOCK(&localelist);
for (x = 0; x < 10000; x++) {
char name[5];
char name[6];
snprintf(name, sizeof(name), "%04d", x);
if (!find_by_name(name)) {
if ((cur = ast_calloc(1, sizeof(*cur) + strlen(name) + 1))) {

@ -1530,7 +1530,7 @@ char *ast_strsep(char **iss, const char sep, uint32_t flags)
int found = 0;
char stack[8];
if (iss == NULL || *iss == '\0') {
if (ast_strlen_zero(st)) {
return NULL;
}

@ -735,7 +735,7 @@ static void *do_notify(void *data)
struct ast_channel *chan = NULL;
struct ast_variable *itervar;
char *tech, *dest;
char buf[8];
char buf[33];
struct ast_format_cap *caps;
tech = ast_strdupa(event->owner->notify_channel);

@ -1329,7 +1329,7 @@ static int require_pgsql(const char *database, const char *tablename, va_list ap
/* Size is minimum length; make it at least 50% greater,
* just to be sure, because PostgreSQL doesn't support
* resizing columns. */
snprintf(fieldtype, sizeof(fieldtype), "CHAR(%d)",
snprintf(fieldtype, sizeof(fieldtype), "CHAR(%hhu)",
size < 15 ? size * 2 :
(size * 3 / 2 > 255) ? 255 : size * 3 / 2);
} else if (type == RQ_INTEGER1 || type == RQ_UINTEGER1 || type == RQ_INTEGER2) {

@ -460,7 +460,7 @@ int AST_OPTIONAL_API_NAME(ast_monitor_stop)(struct ast_channel *chan, int need_l
LOCK_IF_NEEDED(chan, need_lock);
if (ast_channel_monitor(chan)) {
char filename[ FILENAME_MAX ];
RAII_VAR(struct ast_str *, tmp, ast_str_create(1024), ast_free);
if (ast_channel_monitor(chan)->read_stream) {
ast_closestream(ast_channel_monitor(chan)->read_stream);
@ -469,31 +469,29 @@ int AST_OPTIONAL_API_NAME(ast_monitor_stop)(struct ast_channel *chan, int need_l
ast_closestream(ast_channel_monitor(chan)->write_stream);
}
if (ast_channel_monitor(chan)->filename_changed && !ast_strlen_zero(ast_channel_monitor(chan)->filename_base)) {
if (tmp && ast_channel_monitor(chan)->filename_changed && !ast_strlen_zero(ast_channel_monitor(chan)->filename_base)) {
if (ast_fileexists(ast_channel_monitor(chan)->read_filename,NULL,NULL) > 0) {
snprintf(filename, FILENAME_MAX, "%s-in", ast_channel_monitor(chan)->filename_base);
if (ast_fileexists(filename, NULL, NULL) > 0) {
ast_filedelete(filename, NULL);
ast_str_set(&tmp, 0, "%s-in", ast_channel_monitor(chan)->filename_base);
if (ast_fileexists(ast_str_buffer(tmp), NULL, NULL) > 0) {
ast_filedelete(ast_str_buffer(tmp), NULL);
}
ast_filerename(ast_channel_monitor(chan)->read_filename, filename, ast_channel_monitor(chan)->format);
ast_filerename(ast_channel_monitor(chan)->read_filename, ast_str_buffer(tmp), ast_channel_monitor(chan)->format);
} else {
ast_log(LOG_WARNING, "File %s not found\n", ast_channel_monitor(chan)->read_filename);
}
if (ast_fileexists(ast_channel_monitor(chan)->write_filename,NULL,NULL) > 0) {
snprintf(filename, FILENAME_MAX, "%s-out", ast_channel_monitor(chan)->filename_base);
if (ast_fileexists(filename, NULL, NULL) > 0) {
ast_filedelete(filename, NULL);
if (tmp && ast_fileexists(ast_channel_monitor(chan)->write_filename,NULL,NULL) > 0) {
ast_str_set(&tmp, 0, "%s-out", ast_channel_monitor(chan)->filename_base);
if (ast_fileexists(ast_str_buffer(tmp), NULL, NULL) > 0) {
ast_filedelete(ast_str_buffer(tmp), NULL);
}
ast_filerename(ast_channel_monitor(chan)->write_filename, filename, ast_channel_monitor(chan)->format);
ast_filerename(ast_channel_monitor(chan)->write_filename, ast_str_buffer(tmp), ast_channel_monitor(chan)->format);
} else {
ast_log(LOG_WARNING, "File %s not found\n", ast_channel_monitor(chan)->write_filename);
}
}
if (ast_channel_monitor(chan)->joinfiles && !ast_strlen_zero(ast_channel_monitor(chan)->filename_base)) {
char tmp[1024];
char tmp2[1024];
if (tmp && ast_channel_monitor(chan)->joinfiles && !ast_strlen_zero(ast_channel_monitor(chan)->filename_base)) {
const char *format = !strcasecmp(ast_channel_monitor(chan)->format,"wav49") ? "WAV" : ast_channel_monitor(chan)->format;
char *fname_base = ast_channel_monitor(chan)->filename_base;
const char *execute, *execute_args;
@ -514,16 +512,17 @@ int AST_OPTIONAL_API_NAME(ast_monitor_stop)(struct ast_channel *chan, int need_l
if (ast_strlen_zero(execute_args)) {
execute_args = "";
}
snprintf(tmp, sizeof(tmp), "%s \"%s-in.%s\" \"%s-out.%s\" \"%s.%s\" %s &",
ast_str_set(&tmp, 0, delfiles ? "( " : "");
ast_str_append(&tmp, 0, "%s \"%s-in.%s\" \"%s-out.%s\" \"%s.%s\" %s &",
execute, fname_base, format, fname_base, format, fname_base, format,execute_args);
if (delfiles) {
snprintf(tmp2,sizeof(tmp2), "( %s& rm -f \"%s-\"* ) &",tmp, fname_base); /* remove legs when done mixing */
ast_copy_string(tmp, tmp2, sizeof(tmp));
/* remove legs when done mixing */
ast_str_append(&tmp, 0, "& rm -f \"%s-\"* ) &", fname_base);
}
ast_debug(1,"monitor executing %s\n",tmp);
if (ast_safe_system(tmp) == -1)
ast_log(LOG_WARNING, "Execute of %s failed.\n",tmp);
ast_debug(1,"monitor executing %s\n", ast_str_buffer(tmp));
if (ast_safe_system(ast_str_buffer(tmp)) == -1)
ast_log(LOG_WARNING, "Execute of %s failed.\n", ast_str_buffer(tmp));
}
if (!ast_strlen_zero(ast_channel_monitor(chan)->beep_id)) {

@ -289,7 +289,7 @@ static void rebuild_channels(newtComponent c)
{
void *prev = NULL;
struct ast_chan *chan;
char tmpn[42];
char tmpn[sizeof(chan->name) + sizeof(chan->callerid) + 3 - 1];
char tmp[256];
int x=0;
prev = newtListboxGetCurrent(c);

@ -4590,6 +4590,10 @@ static struct ast_exten *pbx_find_extension(struct ast_channel *chan,
struct ast_exten *e, *eroot;
struct ast_include *i;
if (!context) {
return NULL;
}
/* Initialize status if appropriate */
if (q->stacklen == 0) {
q->status = STATUS_NO_CONTEXT;

Loading…
Cancel
Save