mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 04:11:08 +00:00
All of the res/ stuff (other than res_jabber) from the RSW branch.
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@137028 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -571,7 +571,7 @@ void reset_argcount(yyscan_t yyscanner )
|
||||
/* used elsewhere, but some local vars */
|
||||
struct pval *ael2_parse(char *filename, int *errors)
|
||||
{
|
||||
struct pval *pval;
|
||||
struct pval *pvalue;
|
||||
struct parse_io *io;
|
||||
char *buffer;
|
||||
struct stat stats;
|
||||
@@ -610,14 +610,14 @@ struct pval *ael2_parse(char *filename, int *errors)
|
||||
ael_yyparse(io);
|
||||
|
||||
|
||||
pval = io->pval;
|
||||
pvalue = io->pval;
|
||||
*errors = io->syntax_error_count;
|
||||
|
||||
ael_yylex_destroy(io->scanner);
|
||||
free(buffer);
|
||||
free(io);
|
||||
|
||||
return pval;
|
||||
return pvalue;
|
||||
}
|
||||
|
||||
static void setup_filestack(char *fnamebuf2, int fnamebuf_siz, glob_t *globbuf, int globpos, yyscan_t yyscanner, int create)
|
||||
|
@@ -3003,7 +3003,7 @@ void reset_argcount(yyscan_t yyscanner )
|
||||
/* used elsewhere, but some local vars */
|
||||
struct pval *ael2_parse(char *filename, int *errors)
|
||||
{
|
||||
struct pval *pval;
|
||||
struct pval *pvalue;
|
||||
struct parse_io *io;
|
||||
char *buffer;
|
||||
struct stat stats;
|
||||
@@ -3042,14 +3042,14 @@ struct pval *ael2_parse(char *filename, int *errors)
|
||||
ael_yyparse(io);
|
||||
|
||||
|
||||
pval = io->pval;
|
||||
pvalue = io->pval;
|
||||
*errors = io->syntax_error_count;
|
||||
|
||||
ael_yylex_destroy(io->scanner);
|
||||
free(buffer);
|
||||
free(io);
|
||||
|
||||
return pval;
|
||||
return pvalue;
|
||||
}
|
||||
|
||||
static void setup_filestack(char *fnamebuf2, int fnamebuf_siz, glob_t *globbuf, int globpos, yyscan_t yyscanner, int create)
|
||||
|
@@ -114,7 +114,7 @@ static int adsi_generate(unsigned char *buf, int msgtype, unsigned char *msg, in
|
||||
|
||||
}
|
||||
|
||||
static int adsi_careful_send(struct ast_channel *chan, unsigned char *buf, int len, int *remainder)
|
||||
static int adsi_careful_send(struct ast_channel *chan, unsigned char *buf, int len, int *remain)
|
||||
{
|
||||
/* Sends carefully on a full duplex channel by using reading for
|
||||
timing */
|
||||
@@ -124,14 +124,14 @@ static int adsi_careful_send(struct ast_channel *chan, unsigned char *buf, int l
|
||||
/* Zero out our outgoing frame */
|
||||
memset(&outf, 0, sizeof(outf));
|
||||
|
||||
if (remainder && *remainder) {
|
||||
if (remain && *remain) {
|
||||
amt = len;
|
||||
|
||||
/* Send remainder if provided */
|
||||
if (amt > *remainder)
|
||||
amt = *remainder;
|
||||
if (amt > *remain)
|
||||
amt = *remain;
|
||||
else
|
||||
*remainder = *remainder - amt;
|
||||
*remain = *remain - amt;
|
||||
outf.frametype = AST_FRAME_VOICE;
|
||||
outf.subclass = AST_FORMAT_ULAW;
|
||||
outf.data.ptr = buf;
|
||||
@@ -170,8 +170,8 @@ static int adsi_careful_send(struct ast_channel *chan, unsigned char *buf, int l
|
||||
/* Send no more than they sent us */
|
||||
if (amt > inf->datalen)
|
||||
amt = inf->datalen;
|
||||
else if (remainder)
|
||||
*remainder = inf->datalen - amt;
|
||||
else if (remain)
|
||||
*remain = inf->datalen - amt;
|
||||
outf.frametype = AST_FRAME_VOICE;
|
||||
outf.subclass = AST_FORMAT_ULAW;
|
||||
outf.data.ptr = buf;
|
||||
@@ -914,13 +914,13 @@ static int _ast_adsi_channel_restore(struct ast_channel *chan)
|
||||
|
||||
}
|
||||
|
||||
static int _ast_adsi_print(struct ast_channel *chan, char **lines, int *aligns, int voice)
|
||||
static int _ast_adsi_print(struct ast_channel *chan, char **lines, int *alignments, int voice)
|
||||
{
|
||||
unsigned char buf[4096];
|
||||
int bytes = 0, res, x;
|
||||
|
||||
for(x = 0; lines[x]; x++)
|
||||
bytes += ast_adsi_display(buf + bytes, ADSI_INFO_PAGE, x+1, aligns[x], 0, lines[x], "");
|
||||
bytes += ast_adsi_display(buf + bytes, ADSI_INFO_PAGE, x+1, alignments[x], 0, lines[x], "");
|
||||
bytes += ast_adsi_set_line(buf + bytes, ADSI_INFO_PAGE, 1);
|
||||
if (voice)
|
||||
bytes += ast_adsi_voice_mode(buf + bytes, 0);
|
||||
|
@@ -518,7 +518,7 @@ static enum agi_result launch_netscript(char *agiurl, char *argv[], int *fds, in
|
||||
int s, flags, res, port = AGI_PORT;
|
||||
struct pollfd pfds[1];
|
||||
char *host, *c, *script = "";
|
||||
struct sockaddr_in sin;
|
||||
struct sockaddr_in addr_in;
|
||||
struct hostent *hp;
|
||||
struct ast_hostent ahp;
|
||||
|
||||
@@ -557,11 +557,11 @@ static enum agi_result launch_netscript(char *agiurl, char *argv[], int *fds, in
|
||||
close(s);
|
||||
return -1;
|
||||
}
|
||||
memset(&sin, 0, sizeof(sin));
|
||||
sin.sin_family = AF_INET;
|
||||
sin.sin_port = htons(port);
|
||||
memcpy(&sin.sin_addr, hp->h_addr, sizeof(sin.sin_addr));
|
||||
if (connect(s, (struct sockaddr *)&sin, sizeof(sin)) && (errno != EINPROGRESS)) {
|
||||
memset(&addr_in, 0, sizeof(addr_in));
|
||||
addr_in.sin_family = AF_INET;
|
||||
addr_in.sin_port = htons(port);
|
||||
memcpy(&addr_in.sin_addr, hp->h_addr, sizeof(addr_in.sin_addr));
|
||||
if (connect(s, (struct sockaddr *)&addr_in, sizeof(addr_in)) && (errno != EINPROGRESS)) {
|
||||
ast_log(LOG_WARNING, "Connect failed with unexpected error: %s\n", strerror(errno));
|
||||
close(s);
|
||||
return AGI_RESULT_FAILURE;
|
||||
@@ -884,7 +884,7 @@ static int handle_sendimage(struct ast_channel *chan, AGI *agi, int argc, char *
|
||||
static int handle_controlstreamfile(struct ast_channel *chan, AGI *agi, int argc, char *argv[])
|
||||
{
|
||||
int res = 0, skipms = 3000;
|
||||
char *fwd = "#", *rev = "*", *pause = NULL, *stop = NULL; /* Default values */
|
||||
char *fwd = "#", *rev = "*", *suspend = NULL, *stop = NULL; /* Default values */
|
||||
|
||||
if (argc < 5 || argc > 9) {
|
||||
return RESULT_SHOWUSAGE;
|
||||
@@ -907,10 +907,10 @@ static int handle_controlstreamfile(struct ast_channel *chan, AGI *agi, int argc
|
||||
}
|
||||
|
||||
if (argc > 8 && !ast_strlen_zero(argv[8])) {
|
||||
pause = argv[8];
|
||||
suspend = argv[8];
|
||||
}
|
||||
|
||||
res = ast_control_streamfile(chan, argv[3], fwd, rev, stop, pause, NULL, skipms, NULL);
|
||||
res = ast_control_streamfile(chan, argv[3], fwd, rev, stop, suspend, NULL, skipms, NULL);
|
||||
|
||||
ast_agi_fdprintf(chan, agi->fd, "200 result=%d\n", res);
|
||||
|
||||
@@ -1449,14 +1449,14 @@ static int handle_hangup(struct ast_channel *chan, AGI *agi, int argc, char **ar
|
||||
static int handle_exec(struct ast_channel *chan, AGI *agi, int argc, char **argv)
|
||||
{
|
||||
int res;
|
||||
struct ast_app *app;
|
||||
struct ast_app *app_to_exec;
|
||||
|
||||
if (argc < 2)
|
||||
return RESULT_SHOWUSAGE;
|
||||
|
||||
ast_verb(3, "AGI Script Executing Application: (%s) Options: (%s)\n", argv[1], argv[2]);
|
||||
|
||||
if ((app = pbx_findapp(argv[1]))) {
|
||||
if ((app_to_exec = pbx_findapp(argv[1]))) {
|
||||
if (ast_compat_res_agi && !ast_strlen_zero(argv[2])) {
|
||||
char *compat = alloca(strlen(argv[2]) * 2 + 1), *cptr, *vptr;
|
||||
for (cptr = compat, vptr = argv[2]; *vptr; vptr++) {
|
||||
@@ -1470,9 +1470,9 @@ static int handle_exec(struct ast_channel *chan, AGI *agi, int argc, char **argv
|
||||
}
|
||||
}
|
||||
*cptr = '\0';
|
||||
res = pbx_exec(chan, app, compat);
|
||||
res = pbx_exec(chan, app_to_exec, compat);
|
||||
} else {
|
||||
res = pbx_exec(chan, app, argv[2]);
|
||||
res = pbx_exec(chan, app_to_exec, argv[2]);
|
||||
}
|
||||
} else {
|
||||
ast_log(LOG_WARNING, "Could not find application (%s)\n", argv[1]);
|
||||
|
@@ -66,7 +66,7 @@ static LDAP *ldapConn;
|
||||
static char url[512];
|
||||
static char user[512];
|
||||
static char pass[50];
|
||||
static char basedn[512];
|
||||
static char base_distinguished_name[512];
|
||||
static int version = 3;
|
||||
static time_t connect_time;
|
||||
|
||||
@@ -345,7 +345,7 @@ static struct ast_variable *realtime_ldap_entry_to_var(struct ldap_table_config
|
||||
* \return \a vars - an array of ast_variable variables terminated with a null.
|
||||
**/
|
||||
static struct ast_variable **realtime_ldap_result_to_vars(struct ldap_table_config *table_config,
|
||||
LDAPMessage *ldap_result, unsigned int *entries_count_ptr)
|
||||
LDAPMessage *ldap_result_msg, unsigned int *entries_count_ptr)
|
||||
{
|
||||
struct ast_variable **vars;
|
||||
int i = 0;
|
||||
@@ -361,7 +361,7 @@ static struct ast_variable **realtime_ldap_result_to_vars(struct ldap_table_conf
|
||||
int delim_count = 0;
|
||||
|
||||
/* First find the total count */
|
||||
ldap_entry = ldap_first_entry(ldapConn, ldap_result);
|
||||
ldap_entry = ldap_first_entry(ldapConn, ldap_result_msg);
|
||||
|
||||
for (tot_count = 0; ldap_entry; tot_count++){
|
||||
tot_count += semicolon_count_var(realtime_ldap_entry_to_var(table_config, ldap_entry));
|
||||
@@ -377,7 +377,7 @@ static struct ast_variable **realtime_ldap_result_to_vars(struct ldap_table_conf
|
||||
* This memory must be freed outside of this function. */
|
||||
vars = ast_calloc(sizeof(struct ast_variable *), tot_count + 1);
|
||||
|
||||
ldap_entry = ldap_first_entry(ldapConn, ldap_result);
|
||||
ldap_entry = ldap_first_entry(ldapConn, ldap_result_msg);
|
||||
|
||||
i = 0;
|
||||
|
||||
@@ -547,14 +547,14 @@ static struct ast_variable *ldap_loadentry(struct ldap_table_config *table_confi
|
||||
struct ast_variable **vars = NULL;
|
||||
struct ast_variable *var = NULL;
|
||||
int result = -1;
|
||||
LDAPMessage *ldap_result = NULL;
|
||||
LDAPMessage *ldap_result_msg = NULL;
|
||||
int tries = 0;
|
||||
|
||||
ast_debug(2, "ldap_loadentry dn=%s\n", dn);
|
||||
|
||||
do {
|
||||
result = ldap_search_ext_s(ldapConn, dn, LDAP_SCOPE_BASE,
|
||||
"(objectclass=*)", NULL, 0, NULL, NULL, NULL, LDAP_NO_LIMIT, &ldap_result);
|
||||
"(objectclass=*)", NULL, 0, NULL, NULL, NULL, LDAP_NO_LIMIT, &ldap_result_msg);
|
||||
if (result != LDAP_SUCCESS && is_ldap_connect_error(result)) {
|
||||
ast_log(LOG_WARNING,
|
||||
"Failed to query database. Try %d/3\n",
|
||||
@@ -583,17 +583,17 @@ static struct ast_variable *ldap_loadentry(struct ldap_table_config *table_confi
|
||||
} else {
|
||||
int num_entry = 0;
|
||||
unsigned int *entries_count_ptr = NULL; /*!< not using this */
|
||||
if ((num_entry = ldap_count_entries(ldapConn, ldap_result)) > 0) {
|
||||
if ((num_entry = ldap_count_entries(ldapConn, ldap_result_msg)) > 0) {
|
||||
ast_debug(3, "num_entry: %d\n", num_entry);
|
||||
|
||||
vars = realtime_ldap_result_to_vars(table_config, ldap_result, entries_count_ptr);
|
||||
vars = realtime_ldap_result_to_vars(table_config, ldap_result_msg, entries_count_ptr);
|
||||
if (num_entry > 1)
|
||||
ast_log(LOG_NOTICE, "More than one entry for dn=%s. Take only 1st one\n", dn);
|
||||
} else {
|
||||
ast_debug(2, "Could not find any entry dn=%s.\n", dn);
|
||||
}
|
||||
}
|
||||
ldap_msgfree(ldap_result);
|
||||
ldap_msgfree(ldap_result_msg);
|
||||
|
||||
/* Chopping \a vars down to one variable */
|
||||
if (vars != NULL) {
|
||||
@@ -722,7 +722,7 @@ static struct ast_variable **realtime_ldap_base_ap(unsigned int *entries_count_p
|
||||
struct ast_str *filter = NULL;
|
||||
int tries = 0;
|
||||
int result = 0;
|
||||
LDAPMessage *ldap_result = NULL;
|
||||
LDAPMessage *ldap_result_msg = NULL;
|
||||
|
||||
if (!table_name) {
|
||||
ast_log(LOG_WARNING, "No table_name specified.\n");
|
||||
@@ -789,7 +789,7 @@ static struct ast_variable **realtime_ldap_base_ap(unsigned int *entries_count_p
|
||||
/* freeing ldap_result further down */
|
||||
result = ldap_search_ext_s(ldapConn, clean_basedn,
|
||||
LDAP_SCOPE_SUBTREE, filter->str, NULL, 0, NULL, NULL, NULL, LDAP_NO_LIMIT,
|
||||
&ldap_result);
|
||||
&ldap_result_msg);
|
||||
if (result != LDAP_SUCCESS && is_ldap_connect_error(result)) {
|
||||
ast_log(LOG_DEBUG, "Failed to query database. Try %d/10\n",
|
||||
tries + 1);
|
||||
@@ -812,15 +812,15 @@ static struct ast_variable **realtime_ldap_base_ap(unsigned int *entries_count_p
|
||||
} else {
|
||||
/* this is where we create the variables from the search result
|
||||
* freeing this \a vars outside this function */
|
||||
if (ldap_count_entries(ldapConn, ldap_result) > 0) {
|
||||
if (ldap_count_entries(ldapConn, ldap_result_msg) > 0) {
|
||||
/* is this a static var or some other? they are handled different for delimited values */
|
||||
vars = realtime_ldap_result_to_vars(table_config, ldap_result, entries_count_ptr);
|
||||
vars = realtime_ldap_result_to_vars(table_config, ldap_result_msg, entries_count_ptr);
|
||||
} else {
|
||||
ast_debug(1, "Could not find any entry matching %s in base dn %s.\n",
|
||||
filter->str, clean_basedn);
|
||||
}
|
||||
|
||||
ldap_msgfree(ldap_result);
|
||||
ldap_msgfree(ldap_result_msg);
|
||||
|
||||
/* TODO: get the default variables from the accountBaseDN, not implemented with delimited values */
|
||||
if (vars) {
|
||||
@@ -1090,8 +1090,8 @@ static struct ast_config *config_ldap(const char *basedn, const char *table_name
|
||||
|
||||
for (i = 0; i < vars_count; i++) {
|
||||
if (!strcmp(categories[i].variable_name, "#include")) {
|
||||
struct ast_flags config_flags = { 0 };
|
||||
if (!ast_config_internal_load(categories[i].variable_value, cfg, config_flags, "", who_asked))
|
||||
struct ast_flags flags = { 0 };
|
||||
if (!ast_config_internal_load(categories[i].variable_value, cfg, flags, "", who_asked))
|
||||
break;
|
||||
continue;
|
||||
}
|
||||
@@ -1139,7 +1139,7 @@ static int update_ldap(const char *basedn, const char *table_name, const char *a
|
||||
struct ast_str *filter = NULL;
|
||||
int tries = 0;
|
||||
int result = 0;
|
||||
LDAPMessage *ldap_result = NULL;
|
||||
LDAPMessage *ldap_result_msg = NULL;
|
||||
|
||||
if (!table_name) {
|
||||
ast_log(LOG_WARNING, "No table_name specified.\n");
|
||||
@@ -1246,7 +1246,7 @@ static int update_ldap(const char *basedn, const char *table_name, const char *a
|
||||
/* freeing ldap_result further down */
|
||||
result = ldap_search_ext_s(ldapConn, clean_basedn,
|
||||
LDAP_SCOPE_SUBTREE, filter->str, NULL, 0, NULL, NULL, NULL, LDAP_NO_LIMIT,
|
||||
&ldap_result);
|
||||
&ldap_result_msg);
|
||||
if (result != LDAP_SUCCESS && is_ldap_connect_error(result)) {
|
||||
ast_log(LOG_WARNING, "Failed to query database. Try %d/3\n",
|
||||
tries + 1);
|
||||
@@ -1274,17 +1274,17 @@ static int update_ldap(const char *basedn, const char *table_name, const char *a
|
||||
free(filter);
|
||||
if (clean_basedn)
|
||||
free(clean_basedn);
|
||||
ldap_msgfree(ldap_result);
|
||||
ldap_msgfree(ldap_result_msg);
|
||||
ldap_mods_free(ldap_mods, 0);
|
||||
return -1;
|
||||
}
|
||||
/* Ready to update */
|
||||
if ((num_entries = ldap_count_entries(ldapConn, ldap_result)) > 0) {
|
||||
if ((num_entries = ldap_count_entries(ldapConn, ldap_result_msg)) > 0) {
|
||||
ast_debug(3, "LINE(%d) Modifying %s=%s hits: %d\n", __LINE__, attribute, lookup, num_entries);
|
||||
for (i = 0; option_debug > 2 && i < mods_size - 1; i++)
|
||||
ast_debug(3, "LINE(%d) %s=%s \n", __LINE__, ldap_mods[i]->mod_type, ldap_mods[i]->mod_values[0]);
|
||||
|
||||
ldap_entry = ldap_first_entry(ldapConn, ldap_result);
|
||||
ldap_entry = ldap_first_entry(ldapConn, ldap_result_msg);
|
||||
|
||||
for (i = 0; ldap_entry; i++) {
|
||||
dn = ldap_get_dn(ldapConn, ldap_entry);
|
||||
@@ -1300,7 +1300,7 @@ static int update_ldap(const char *basedn, const char *table_name, const char *a
|
||||
free(filter);
|
||||
if (clean_basedn)
|
||||
free(clean_basedn);
|
||||
ldap_msgfree(ldap_result);
|
||||
ldap_msgfree(ldap_result_msg);
|
||||
ldap_mods_free(ldap_mods, 0);
|
||||
return num_entries;
|
||||
}
|
||||
@@ -1430,9 +1430,9 @@ int parse_config(void)
|
||||
|
||||
if (!(s = ast_variable_retrieve(config, "_general", "basedn"))) {
|
||||
ast_log(LOG_ERROR, "No LDAP base dn found, using '%s' as default.\n", RES_CONFIG_LDAP_DEFAULT_BASEDN);
|
||||
ast_copy_string(basedn, RES_CONFIG_LDAP_DEFAULT_BASEDN, sizeof(basedn));
|
||||
ast_copy_string(base_distinguished_name, RES_CONFIG_LDAP_DEFAULT_BASEDN, sizeof(base_distinguished_name));
|
||||
} else
|
||||
ast_copy_string(basedn, s, sizeof(basedn));
|
||||
ast_copy_string(base_distinguished_name, s, sizeof(base_distinguished_name));
|
||||
|
||||
if (!(s = ast_variable_retrieve(config, "_general", "version")) && !(s = ast_variable_retrieve(config, "_general", "protocol"))) {
|
||||
ast_log(LOG_NOTICE, "No explicit LDAP version found, using 3 as default.\n");
|
||||
@@ -1526,7 +1526,7 @@ static int ldap_reconnect(void)
|
||||
static char *realtime_ldap_status(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
|
||||
{
|
||||
char status[256], credentials[100] = "";
|
||||
int ctime = time(NULL) - connect_time;
|
||||
int ctimesec = time(NULL) - connect_time;
|
||||
|
||||
switch (cmd) {
|
||||
case CLI_INIT:
|
||||
@@ -1543,29 +1543,29 @@ static char *realtime_ldap_status(struct ast_cli_entry *e, int cmd, struct ast_c
|
||||
return CLI_FAILURE;
|
||||
|
||||
if (!ast_strlen_zero(url))
|
||||
snprintf(status, sizeof(status), "Connected to '%s', baseDN %s", url, basedn);
|
||||
snprintf(status, sizeof(status), "Connected to '%s', baseDN %s", url, base_distinguished_name);
|
||||
|
||||
if (!ast_strlen_zero(user))
|
||||
snprintf(credentials, sizeof(credentials), " with username %s", user);
|
||||
|
||||
if (ctime > 31536000) {
|
||||
if (ctimesec > 31536000) {
|
||||
ast_cli(a->fd, "%s%s for %d years, %d days, %d hours, %d minutes, %d seconds.\n",
|
||||
status, credentials, ctime / 31536000,
|
||||
(ctime % 31536000) / 86400, (ctime % 86400) / 3600,
|
||||
(ctime % 3600) / 60, ctime % 60);
|
||||
} else if (ctime > 86400) {
|
||||
status, credentials, ctimesec / 31536000,
|
||||
(ctimesec % 31536000) / 86400, (ctimesec % 86400) / 3600,
|
||||
(ctimesec % 3600) / 60, ctimesec % 60);
|
||||
} else if (ctimesec > 86400) {
|
||||
ast_cli(a->fd, "%s%s for %d days, %d hours, %d minutes, %d seconds.\n",
|
||||
status, credentials, ctime / 86400, (ctime % 86400) / 3600,
|
||||
(ctime % 3600) / 60, ctime % 60);
|
||||
} else if (ctime > 3600) {
|
||||
status, credentials, ctimesec / 86400, (ctimesec % 86400) / 3600,
|
||||
(ctimesec % 3600) / 60, ctimesec % 60);
|
||||
} else if (ctimesec > 3600) {
|
||||
ast_cli(a->fd, "%s%s for %d hours, %d minutes, %d seconds.\n",
|
||||
status, credentials, ctime / 3600, (ctime % 3600) / 60,
|
||||
ctime % 60);
|
||||
} else if (ctime > 60) {
|
||||
status, credentials, ctimesec / 3600, (ctimesec % 3600) / 60,
|
||||
ctimesec % 60);
|
||||
} else if (ctimesec > 60) {
|
||||
ast_cli(a->fd, "%s%s for %d minutes, %d seconds.\n", status, credentials,
|
||||
ctime / 60, ctime % 60);
|
||||
ctimesec / 60, ctimesec % 60);
|
||||
} else {
|
||||
ast_cli(a->fd, "%s%s for %d seconds.\n", status, credentials, ctime);
|
||||
ast_cli(a->fd, "%s%s for %d seconds.\n", status, credentials, ctimesec);
|
||||
}
|
||||
|
||||
return CLI_SUCCESS;
|
||||
|
@@ -988,7 +988,7 @@ static int require_pgsql(const char *database, const char *tablename, va_list ap
|
||||
} else {
|
||||
struct ast_str *sql = ast_str_create(100);
|
||||
char fieldtype[15];
|
||||
PGresult *res;
|
||||
PGresult *result;
|
||||
|
||||
if (requirements == RQ_CREATECHAR || type == RQ_CHAR) {
|
||||
/* Size is minimum length; make it at least 50% greater,
|
||||
@@ -1029,12 +1029,12 @@ static int require_pgsql(const char *database, const char *tablename, va_list ap
|
||||
}
|
||||
|
||||
ast_debug(1, "About to run ALTER query on table '%s' to add column '%s'\n", tablename, elm);
|
||||
res = PQexec(pgsqlConn, sql->str);
|
||||
result = PQexec(pgsqlConn, sql->str);
|
||||
ast_debug(1, "Finished running ALTER query on table '%s'\n", tablename);
|
||||
if (PQresultStatus(res) != PGRES_COMMAND_OK) {
|
||||
if (PQresultStatus(result) != PGRES_COMMAND_OK) {
|
||||
ast_log(LOG_ERROR, "Unable to add column: %s\n", sql->str);
|
||||
}
|
||||
PQclear(res);
|
||||
PQclear(result);
|
||||
ast_mutex_unlock(&pgsql_lock);
|
||||
|
||||
ast_free(sql);
|
||||
@@ -1125,11 +1125,11 @@ static int reload(void)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int parse_config(int reload)
|
||||
static int parse_config(int is_reload)
|
||||
{
|
||||
struct ast_config *config;
|
||||
const char *s;
|
||||
struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
|
||||
struct ast_flags config_flags = { is_reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
|
||||
|
||||
if ((config = ast_config_load(RES_CONFIG_PGSQL_CONF, config_flags)) == CONFIG_STATUS_FILEUNCHANGED)
|
||||
return 0;
|
||||
@@ -1336,7 +1336,7 @@ static char *handle_cli_realtime_pgsql_cache(struct ast_cli_entry *e, int cmd, s
|
||||
static char *handle_cli_realtime_pgsql_status(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a)
|
||||
{
|
||||
char status[256], credentials[100] = "";
|
||||
int ctime = time(NULL) - connect_time;
|
||||
int ctimesec = time(NULL) - connect_time;
|
||||
|
||||
switch (cmd) {
|
||||
case CLI_INIT:
|
||||
@@ -1363,22 +1363,22 @@ static char *handle_cli_realtime_pgsql_status(struct ast_cli_entry *e, int cmd,
|
||||
if (!ast_strlen_zero(dbuser))
|
||||
snprintf(credentials, sizeof(credentials), " with username %s", dbuser);
|
||||
|
||||
if (ctime > 31536000)
|
||||
if (ctimesec > 31536000)
|
||||
ast_cli(a->fd, "%s%s for %d years, %d days, %d hours, %d minutes, %d seconds.\n",
|
||||
status, credentials, ctime / 31536000, (ctime % 31536000) / 86400,
|
||||
(ctime % 86400) / 3600, (ctime % 3600) / 60, ctime % 60);
|
||||
else if (ctime > 86400)
|
||||
status, credentials, ctimesec / 31536000, (ctimesec % 31536000) / 86400,
|
||||
(ctimesec % 86400) / 3600, (ctimesec % 3600) / 60, ctimesec % 60);
|
||||
else if (ctimesec > 86400)
|
||||
ast_cli(a->fd, "%s%s for %d days, %d hours, %d minutes, %d seconds.\n", status,
|
||||
credentials, ctime / 86400, (ctime % 86400) / 3600, (ctime % 3600) / 60,
|
||||
ctime % 60);
|
||||
else if (ctime > 3600)
|
||||
credentials, ctimesec / 86400, (ctimesec % 86400) / 3600, (ctimesec % 3600) / 60,
|
||||
ctimesec % 60);
|
||||
else if (ctimesec > 3600)
|
||||
ast_cli(a->fd, "%s%s for %d hours, %d minutes, %d seconds.\n", status, credentials,
|
||||
ctime / 3600, (ctime % 3600) / 60, ctime % 60);
|
||||
else if (ctime > 60)
|
||||
ast_cli(a->fd, "%s%s for %d minutes, %d seconds.\n", status, credentials, ctime / 60,
|
||||
ctime % 60);
|
||||
ctimesec / 3600, (ctimesec % 3600) / 60, ctimesec % 60);
|
||||
else if (ctimesec > 60)
|
||||
ast_cli(a->fd, "%s%s for %d minutes, %d seconds.\n", status, credentials, ctimesec / 60,
|
||||
ctimesec % 60);
|
||||
else
|
||||
ast_cli(a->fd, "%s%s for %d seconds.\n", status, credentials, ctime);
|
||||
ast_cli(a->fd, "%s%s for %d seconds.\n", status, credentials, ctimesec);
|
||||
|
||||
return CLI_SUCCESS;
|
||||
} else {
|
||||
|
@@ -544,10 +544,10 @@ static void *monmp3thread(void *data)
|
||||
short sbuf[8192];
|
||||
int res, res2;
|
||||
int len;
|
||||
struct timeval tv, tv_tmp;
|
||||
struct timeval deadline, tv_tmp;
|
||||
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_usec = 0;
|
||||
deadline.tv_sec = 0;
|
||||
deadline.tv_usec = 0;
|
||||
for(;/* ever */;) {
|
||||
pthread_testcancel();
|
||||
/* Spawn mp3 player if it's not there */
|
||||
@@ -570,16 +570,16 @@ static void *monmp3thread(void *data)
|
||||
long delta;
|
||||
/* Reliable sleep */
|
||||
tv_tmp = ast_tvnow();
|
||||
if (ast_tvzero(tv))
|
||||
tv = tv_tmp;
|
||||
delta = ast_tvdiff_ms(tv_tmp, tv);
|
||||
if (ast_tvzero(deadline))
|
||||
deadline = tv_tmp;
|
||||
delta = ast_tvdiff_ms(tv_tmp, deadline);
|
||||
if (delta < MOH_MS_INTERVAL) { /* too early */
|
||||
tv = ast_tvadd(tv, ast_samp2tv(MOH_MS_INTERVAL, 1000)); /* next deadline */
|
||||
deadline = ast_tvadd(deadline, ast_samp2tv(MOH_MS_INTERVAL, 1000)); /* next deadline */
|
||||
usleep(1000 * (MOH_MS_INTERVAL - delta));
|
||||
pthread_testcancel();
|
||||
} else {
|
||||
ast_log(LOG_NOTICE, "Request to schedule in the past?!?!\n");
|
||||
tv = tv_tmp;
|
||||
deadline = tv_tmp;
|
||||
}
|
||||
res = 8 * MOH_MS_INTERVAL; /* 8 samples per millisecond */
|
||||
}
|
||||
@@ -985,7 +985,7 @@ static int moh_diff(struct mohclass *old, struct mohclass *new)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int moh_register(struct mohclass *moh, int reload)
|
||||
static int moh_register(struct mohclass *moh, int is_reload)
|
||||
{
|
||||
#ifdef HAVE_DAHDI
|
||||
int x;
|
||||
@@ -1326,21 +1326,21 @@ static void local_ast_moh_stop(struct ast_channel *chan)
|
||||
chan->name, chan->uniqueid);
|
||||
}
|
||||
|
||||
static int load_moh_classes(int reload)
|
||||
static int load_moh_classes(int is_reload)
|
||||
{
|
||||
struct ast_config *cfg;
|
||||
struct ast_variable *var;
|
||||
struct mohclass *class;
|
||||
char *cat;
|
||||
int numclasses = 0;
|
||||
struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
|
||||
struct ast_flags config_flags = { is_reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
|
||||
|
||||
cfg = ast_config_load("musiconhold.conf", config_flags);
|
||||
|
||||
if (cfg == NULL || cfg == CONFIG_STATUS_FILEUNCHANGED)
|
||||
return 0;
|
||||
|
||||
if (reload) {
|
||||
if (is_reload) {
|
||||
AST_RWLIST_WRLOCK(&mohclasses);
|
||||
AST_RWLIST_TRAVERSE(&mohclasses, class, list) {
|
||||
class->delete = 1;
|
||||
@@ -1417,7 +1417,7 @@ static int load_moh_classes(int reload)
|
||||
}
|
||||
|
||||
/* Don't leak a class when it's already registered */
|
||||
moh_register(class, reload);
|
||||
moh_register(class, is_reload);
|
||||
|
||||
numclasses++;
|
||||
}
|
||||
@@ -1431,12 +1431,12 @@ static int load_moh_classes(int reload)
|
||||
static int ast_moh_destroy_one(struct mohclass *moh)
|
||||
{
|
||||
char buff[8192];
|
||||
int bytes, tbytes = 0, stime = 0, pid = 0;
|
||||
int bytes, tbytes = 0, stop_time = 0, pid = 0;
|
||||
|
||||
if (moh) {
|
||||
if (moh->pid > 1) {
|
||||
ast_debug(1, "killing %d!\n", moh->pid);
|
||||
stime = time(NULL) + 2;
|
||||
stop_time = time(NULL) + 2;
|
||||
pid = moh->pid;
|
||||
moh->pid = 0;
|
||||
/* Back when this was just mpg123, SIGKILL was fine. Now we need
|
||||
@@ -1447,7 +1447,7 @@ static int ast_moh_destroy_one(struct mohclass *moh)
|
||||
kill(pid, SIGTERM);
|
||||
usleep(100000);
|
||||
kill(pid, SIGKILL);
|
||||
while ((ast_wait_for_input(moh->srcfd, 100) > 0) && (bytes = read(moh->srcfd, buff, 8192)) && time(NULL) < stime)
|
||||
while ((ast_wait_for_input(moh->srcfd, 100) > 0) && (bytes = read(moh->srcfd, buff, 8192)) && time(NULL) < stop_time)
|
||||
tbytes = tbytes + bytes;
|
||||
ast_debug(1, "mpg123 pid %d and child died after %d bytes read\n", pid, tbytes);
|
||||
close(moh->srcfd);
|
||||
@@ -1569,16 +1569,16 @@ static struct ast_cli_entry cli_moh[] = {
|
||||
AST_CLI_DEFINE(handle_cli_moh_show_files, "List MusicOnHold file-based classes")
|
||||
};
|
||||
|
||||
static int init_classes(int reload)
|
||||
static int init_classes(int is_reload)
|
||||
{
|
||||
struct mohclass *moh;
|
||||
|
||||
if (!load_moh_classes(reload)) /* Load classes from config */
|
||||
if (!load_moh_classes(is_reload)) /* Load classes from config */
|
||||
return 0; /* Return if nothing is found */
|
||||
|
||||
AST_RWLIST_WRLOCK(&mohclasses);
|
||||
AST_RWLIST_TRAVERSE_SAFE_BEGIN(&mohclasses, moh, list) {
|
||||
if (reload && moh->delete) {
|
||||
if (is_reload && moh->delete) {
|
||||
AST_RWLIST_REMOVE_CURRENT(list);
|
||||
if (!moh->inuse)
|
||||
ast_moh_destroy_one(moh);
|
||||
|
@@ -411,7 +411,7 @@ static int load_odbc_config(void)
|
||||
const char *dsn, *username, *password, *sanitysql;
|
||||
int enabled, pooling, limit, bse;
|
||||
unsigned int idlecheck;
|
||||
int connect = 0, res = 0;
|
||||
int preconnect = 0, res = 0;
|
||||
struct ast_flags config_flags = { 0 };
|
||||
|
||||
struct odbc_class *new;
|
||||
@@ -431,7 +431,7 @@ static int load_odbc_config(void)
|
||||
/* Reset all to defaults for each class of odbc connections */
|
||||
dsn = username = password = sanitysql = NULL;
|
||||
enabled = 1;
|
||||
connect = idlecheck = 0;
|
||||
preconnect = idlecheck = 0;
|
||||
pooling = 0;
|
||||
limit = 0;
|
||||
bse = 1;
|
||||
@@ -458,7 +458,7 @@ static int load_odbc_config(void)
|
||||
} else if (!strcasecmp(v->name, "enabled")) {
|
||||
enabled = ast_true(v->value);
|
||||
} else if (!strcasecmp(v->name, "pre-connect")) {
|
||||
connect = ast_true(v->value);
|
||||
preconnect = ast_true(v->value);
|
||||
} else if (!strcasecmp(v->name, "dsn")) {
|
||||
dsn = v->value;
|
||||
} else if (!strcasecmp(v->name, "username")) {
|
||||
@@ -521,7 +521,7 @@ static int load_odbc_config(void)
|
||||
break;
|
||||
}
|
||||
|
||||
odbc_register_class(new, connect);
|
||||
odbc_register_class(new, preconnect);
|
||||
ast_log(LOG_NOTICE, "Registered ODBC class '%s' dsn->[%s]\n", cat, dsn);
|
||||
ao2_ref(new, -1);
|
||||
new = NULL;
|
||||
@@ -615,14 +615,14 @@ static struct ast_cli_entry cli_odbc[] = {
|
||||
AST_CLI_DEFINE(handle_cli_odbc_show, "List ODBC DSN(s)")
|
||||
};
|
||||
|
||||
static int odbc_register_class(struct odbc_class *class, int connect)
|
||||
static int odbc_register_class(struct odbc_class *class, int preconnect)
|
||||
{
|
||||
struct odbc_obj *obj;
|
||||
if (class) {
|
||||
ao2_link(class_container, class);
|
||||
/* I still have a reference in the caller, so a deref is NOT missing here. */
|
||||
|
||||
if (connect) {
|
||||
if (preconnect) {
|
||||
/* Request and release builds a connection */
|
||||
obj = ast_odbc_request_obj(class->name, 0);
|
||||
if (obj)
|
||||
@@ -774,7 +774,7 @@ static odbc_status odbc_obj_connect(struct odbc_obj *obj)
|
||||
int res;
|
||||
SQLINTEGER err;
|
||||
short int mlen;
|
||||
unsigned char msg[200], stat[10];
|
||||
unsigned char msg[200], state[10];
|
||||
#ifdef NEEDTRACE
|
||||
SQLINTEGER enable = 1;
|
||||
char *tracefile = "/tmp/odbc.trace";
|
||||
@@ -808,7 +808,7 @@ static odbc_status odbc_obj_connect(struct odbc_obj *obj)
|
||||
(SQLCHAR *) obj->parent->password, SQL_NTS);
|
||||
|
||||
if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) {
|
||||
SQLGetDiagRec(SQL_HANDLE_DBC, obj->con, 1, stat, &err, msg, 100, &mlen);
|
||||
SQLGetDiagRec(SQL_HANDLE_DBC, obj->con, 1, state, &err, msg, 100, &mlen);
|
||||
ast_mutex_unlock(&obj->lock);
|
||||
ast_log(LOG_WARNING, "res_odbc: Error SQLConnect=%d errno=%d %s\n", res, (int)err, msg);
|
||||
return ODBC_FAIL;
|
||||
|
@@ -349,7 +349,7 @@ static void set_timezone_variables(struct varshead *headp, const char *zone)
|
||||
int tzoffset;
|
||||
char buffer[21];
|
||||
struct ast_var_t *var;
|
||||
struct timeval tv;
|
||||
struct timeval when;
|
||||
|
||||
time(&utc_time);
|
||||
ast_get_dst_info(&utc_time, &dstenable, &dststart, &dstend, &tzoffset, zone);
|
||||
@@ -364,8 +364,8 @@ static void set_timezone_variables(struct varshead *headp, const char *zone)
|
||||
if ((var = ast_var_assign("DST_ENABLE", "1")))
|
||||
AST_LIST_INSERT_TAIL(headp, var, entries);
|
||||
|
||||
tv.tv_sec = dststart;
|
||||
ast_localtime(&tv, &tm_info, zone);
|
||||
when.tv_sec = dststart;
|
||||
ast_localtime(&when, &tm_info, zone);
|
||||
|
||||
snprintf(buffer, sizeof(buffer), "%d", tm_info.tm_mon+1);
|
||||
if ((var = ast_var_assign("DST_START_MONTH", buffer)))
|
||||
@@ -379,8 +379,8 @@ static void set_timezone_variables(struct varshead *headp, const char *zone)
|
||||
if ((var = ast_var_assign("DST_START_HOUR", buffer)))
|
||||
AST_LIST_INSERT_TAIL(headp, var, entries);
|
||||
|
||||
tv.tv_sec = dstend;
|
||||
ast_localtime(&tv, &tm_info, zone);
|
||||
when.tv_sec = dstend;
|
||||
ast_localtime(&when, &tm_info, zone);
|
||||
|
||||
snprintf(buffer, sizeof(buffer), "%d", tm_info.tm_mon + 1);
|
||||
if ((var = ast_var_assign("DST_END_MONTH", buffer)))
|
||||
@@ -408,7 +408,7 @@ static struct ast_str *phoneprov_callback(struct ast_tcptls_session_instance *se
|
||||
int len;
|
||||
int fd;
|
||||
char buf[256];
|
||||
struct timeval tv = ast_tvnow();
|
||||
struct timeval now = ast_tvnow();
|
||||
struct ast_tm tm;
|
||||
|
||||
if (!(route = ao2_find(http_routes, &search_route, OBJ_POINTER))) {
|
||||
@@ -432,7 +432,7 @@ static struct ast_str *phoneprov_callback(struct ast_tcptls_session_instance *se
|
||||
goto out500;
|
||||
}
|
||||
|
||||
ast_strftime(buf, sizeof(buf), "%a, %d %b %Y %H:%M:%S %Z", ast_localtime(&tv, &tm, "GMT"));
|
||||
ast_strftime(buf, sizeof(buf), "%a, %d %b %Y %H:%M:%S %Z", ast_localtime(&now, &tm, "GMT"));
|
||||
fprintf(ser->f, "HTTP/1.1 200 OK\r\n"
|
||||
"Server: Asterisk/%s\r\n"
|
||||
"Date: %s\r\n"
|
||||
@@ -595,7 +595,7 @@ static void build_profile(const char *name, struct ast_variable *v)
|
||||
if (!strcasecmp(v->name, "mime_type")) {
|
||||
ast_string_field_set(profile, default_mime_type, v->value);
|
||||
} else if (!strcasecmp(v->name, "setvar")) {
|
||||
struct ast_var_t *var;
|
||||
struct ast_var_t *variable;
|
||||
char *value_copy = ast_strdupa(v->value);
|
||||
|
||||
AST_DECLARE_APP_ARGS(args,
|
||||
@@ -611,8 +611,8 @@ static void build_profile(const char *name, struct ast_variable *v)
|
||||
args.varval = ast_strip(args.varval);
|
||||
if (ast_strlen_zero(args.varname) || ast_strlen_zero(args.varval))
|
||||
break;
|
||||
if ((var = ast_var_assign(args.varname, args.varval)))
|
||||
AST_LIST_INSERT_TAIL(profile->headp, var, entries);
|
||||
if ((variable = ast_var_assign(args.varname, args.varval)))
|
||||
AST_LIST_INSERT_TAIL(profile->headp, variable, entries);
|
||||
} while (0);
|
||||
} else if (!strcasecmp(v->name, "staticdir")) {
|
||||
ast_string_field_set(profile, staticdir, v->value);
|
||||
|
@@ -437,7 +437,7 @@ static void *smdi_message_wait(struct ast_smdi_interface *iface, int timeout,
|
||||
|
||||
while (diff < timeout) {
|
||||
struct timespec ts = { 0, };
|
||||
struct timeval tv;
|
||||
struct timeval wait;
|
||||
|
||||
lock_msg_q(iface, type);
|
||||
|
||||
@@ -446,9 +446,9 @@ static void *smdi_message_wait(struct ast_smdi_interface *iface, int timeout,
|
||||
return msg;
|
||||
}
|
||||
|
||||
tv = ast_tvadd(start, ast_tv(0, timeout));
|
||||
ts.tv_sec = tv.tv_sec;
|
||||
ts.tv_nsec = tv.tv_usec * 1000;
|
||||
wait = ast_tvadd(start, ast_tv(0, timeout));
|
||||
ts.tv_sec = wait.tv_sec;
|
||||
ts.tv_nsec = wait.tv_usec * 1000;
|
||||
|
||||
/* If there were no messages in the queue, then go to sleep until one
|
||||
* arrives. */
|
||||
@@ -778,7 +778,7 @@ static void *mwi_monitor_handler(void *data)
|
||||
{
|
||||
while (!mwi_monitor.stop) {
|
||||
struct timespec ts = { 0, };
|
||||
struct timeval tv;
|
||||
struct timeval polltime;
|
||||
struct mailbox_mapping *mm;
|
||||
|
||||
ast_mutex_lock(&mwi_monitor.lock);
|
||||
@@ -790,9 +790,9 @@ static void *mwi_monitor_handler(void *data)
|
||||
|
||||
/* Sleep up to the configured polling interval. Allow unload_module()
|
||||
* to signal us to wake up and exit. */
|
||||
tv = ast_tvadd(mwi_monitor.last_poll, ast_tv(mwi_monitor.polling_interval, 0));
|
||||
ts.tv_sec = tv.tv_sec;
|
||||
ts.tv_nsec = tv.tv_usec * 1000;
|
||||
polltime = ast_tvadd(mwi_monitor.last_poll, ast_tv(mwi_monitor.polling_interval, 0));
|
||||
ts.tv_sec = polltime.tv_sec;
|
||||
ts.tv_nsec = polltime.tv_usec * 1000;
|
||||
ast_cond_timedwait(&mwi_monitor.cond, &mwi_monitor.lock, &ts);
|
||||
|
||||
ast_mutex_unlock(&mwi_monitor.lock);
|
||||
|
@@ -87,7 +87,7 @@ struct pthread_timer {
|
||||
};
|
||||
|
||||
static void pthread_timer_destructor(void *obj);
|
||||
static struct pthread_timer *find_timer(int handle, int unlink);
|
||||
static struct pthread_timer *find_timer(int handle, int unlinkobj);
|
||||
static void write_byte(int wr_fd);
|
||||
static void read_pipe(int rd_fd, unsigned int num, int clear);
|
||||
|
||||
@@ -256,7 +256,7 @@ static unsigned int pthread_timer_get_max_rate(int handle)
|
||||
return MAX_RATE;
|
||||
}
|
||||
|
||||
static struct pthread_timer *find_timer(int handle, int unlink)
|
||||
static struct pthread_timer *find_timer(int handle, int unlinkobj)
|
||||
{
|
||||
struct pthread_timer *timer;
|
||||
struct pthread_timer tmp_timer;
|
||||
@@ -264,7 +264,7 @@ static struct pthread_timer *find_timer(int handle, int unlink)
|
||||
|
||||
tmp_timer.pipe[PIPE_READ] = handle;
|
||||
|
||||
if (unlink) {
|
||||
if (unlinkobj) {
|
||||
flags |= OBJ_UNLINK;
|
||||
}
|
||||
|
||||
@@ -348,7 +348,7 @@ static void read_pipe(int rd_fd, unsigned int quantity, int clear)
|
||||
unsigned char buf[1024];
|
||||
ssize_t res;
|
||||
fd_set rfds;
|
||||
struct timeval tv = {
|
||||
struct timeval timeout = {
|
||||
.tv_sec = 0,
|
||||
};
|
||||
|
||||
@@ -356,7 +356,7 @@ static void read_pipe(int rd_fd, unsigned int quantity, int clear)
|
||||
FD_ZERO(&rfds);
|
||||
FD_SET(rd_fd, &rfds);
|
||||
|
||||
if (select(rd_fd + 1, &rfds, NULL, NULL, &tv) != 1) {
|
||||
if (select(rd_fd + 1, &rfds, NULL, NULL, &timeout) != 1) {
|
||||
break;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user