[asterisk-commits] russell: branch russell/events r81521 - in /team/russell/events: ./ apps/ cha...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Sep 5 10:04:47 CDT 2007
Author: russell
Date: Wed Sep 5 10:04:47 2007
New Revision: 81521
URL: http://svn.digium.com/view/asterisk?view=rev&rev=81521
Log:
resolve conflict, reset automerge
Added:
team/russell/events/apps/app_readexten.c
- copied unchanged from r81519, trunk/apps/app_readexten.c
Removed:
team/russell/events/configs/modem.conf.sample
Modified:
team/russell/events/ (props changed)
team/russell/events/CHANGES
team/russell/events/apps/app_dial.c
team/russell/events/apps/app_directory.c
team/russell/events/apps/app_followme.c
team/russell/events/apps/app_meetme.c
team/russell/events/apps/app_minivm.c
team/russell/events/apps/app_parkandannounce.c
team/russell/events/apps/app_queue.c
team/russell/events/apps/app_voicemail.c
team/russell/events/channels/chan_gtalk.c
team/russell/events/channels/chan_iax2.c
team/russell/events/channels/chan_misdn.c
team/russell/events/channels/chan_sip.c
team/russell/events/channels/chan_skinny.c
team/russell/events/channels/chan_zap.c
team/russell/events/channels/h323/ast_h323.cxx
team/russell/events/channels/iax2-parser.c
team/russell/events/channels/misdn/isdn_lib.c
team/russell/events/codecs/codec_zap.c
team/russell/events/configs/enum.conf.sample
team/russell/events/configs/extensions.ael.sample
team/russell/events/configs/followme.conf.sample
team/russell/events/configs/queues.conf.sample
team/russell/events/funcs/func_logic.c
team/russell/events/include/asterisk/astobj2.h
team/russell/events/include/asterisk/config.h
team/russell/events/include/asterisk/event.h
team/russell/events/include/asterisk/event_defs.h
team/russell/events/include/asterisk/logger.h
team/russell/events/include/asterisk/utils.h
team/russell/events/main/Makefile
team/russell/events/main/astobj2.c
team/russell/events/main/cdr.c
team/russell/events/main/channel.c
team/russell/events/main/config.c
team/russell/events/main/dns.c
team/russell/events/main/editline/configure
team/russell/events/main/editline/configure.in
team/russell/events/main/editline/sys.h
team/russell/events/main/event.c
team/russell/events/main/http.c
team/russell/events/main/logger.c
team/russell/events/main/manager.c
team/russell/events/main/pbx.c
team/russell/events/main/sched.c
team/russell/events/pbx/pbx_spool.c
team/russell/events/res/res_config_odbc.c
team/russell/events/res/res_config_pgsql.c
team/russell/events/res/res_config_sqlite.c
team/russell/events/res/res_features.c
team/russell/events/res/res_speech.c
team/russell/events/utils/extconf.c
Propchange: team/russell/events/
------------------------------------------------------------------------------
automerge = *
Propchange: team/russell/events/
------------------------------------------------------------------------------
Binary property 'branch-1.4-blocked' - no diff available.
Propchange: team/russell/events/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Propchange: team/russell/events/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Sep 5 10:04:47 2007
@@ -1,1 +1,1 @@
-/trunk:1-81316
+/trunk:1-81520
Modified: team/russell/events/CHANGES
URL: http://svn.digium.com/view/asterisk/team/russell/events/CHANGES?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/CHANGES (original)
+++ team/russell/events/CHANGES Wed Sep 5 10:04:47 2007
@@ -272,3 +272,5 @@
* The device state functionality in the Local channel driver has been updated
to indicate INUSE or NOT_INUSE when a Local channel is being used as opposed
to just UNKNOWN if the extension exists.
+ * When originating a call using AMI or pbx_spool that fails the reason for failure
+ will now be available in the failed extension using the REASON dialplan variable.
Modified: team/russell/events/apps/app_dial.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/apps/app_dial.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/apps/app_dial.c (original)
+++ team/russell/events/apps/app_dial.c Wed Sep 5 10:04:47 2007
@@ -293,13 +293,15 @@
AST_APP_OPTION('i', OPT_IGNORE_FORWARDING),
AST_APP_OPTION('k', OPT_CALLEE_PARK),
AST_APP_OPTION('K', OPT_CALLER_PARK),
+ AST_APP_OPTION('k', OPT_CALLEE_PARK),
+ AST_APP_OPTION('K', OPT_CALLER_PARK),
AST_APP_OPTION_ARG('L', OPT_DURATION_LIMIT, OPT_ARG_DURATION_LIMIT),
AST_APP_OPTION_ARG('m', OPT_MUSICBACK, OPT_ARG_MUSICBACK),
AST_APP_OPTION_ARG('M', OPT_CALLEE_MACRO, OPT_ARG_CALLEE_MACRO),
AST_APP_OPTION('n', OPT_SCREEN_NOINTRO),
AST_APP_OPTION('N', OPT_SCREEN_NOCLID),
+ AST_APP_OPTION('o', OPT_ORIGINAL_CLID),
AST_APP_OPTION_ARG('O', OPT_OPERMODE,OPT_ARG_OPERMODE),
- AST_APP_OPTION('o', OPT_ORIGINAL_CLID),
AST_APP_OPTION('p', OPT_SCREENING),
AST_APP_OPTION_ARG('P', OPT_PRIVACY, OPT_ARG_PRIVACY),
AST_APP_OPTION('r', OPT_RINGBACK),
Modified: team/russell/events/apps/app_directory.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/apps/app_directory.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/apps/app_directory.c (original)
+++ team/russell/events/apps/app_directory.c Wed Sep 5 10:04:47 2007
@@ -386,7 +386,7 @@
/* Does the context exist within the config file? If not, make one */
cat = ast_category_get(cfg, context);
if (!cat) {
- cat = ast_category_new(context);
+ cat = ast_category_new(context, "", 99999);
if (!cat) {
ast_log(LOG_WARNING, "Out of memory\n");
ast_config_destroy(cfg);
@@ -402,7 +402,7 @@
snprintf(tmp, sizeof(tmp), "no-password,%s,hidefromdir=%s",
fullname ? fullname : "",
hidefromdir ? hidefromdir : "no");
- var = ast_variable_new(mailbox, tmp);
+ var = ast_variable_new(mailbox, tmp, "");
if (var)
ast_variable_append(cat, var);
else
Modified: team/russell/events/apps/app_followme.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/apps/app_followme.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/apps/app_followme.c (original)
+++ team/russell/events/apps/app_followme.c Wed Sep 5 10:04:47 2007
@@ -963,12 +963,8 @@
if (ast_play_and_record(chan, "vm-rec-name", namerecloc, 5, "sln", &duration, 128, 0, NULL) < 0)
goto outrun;
- /* The following call looks like we're going to playback the file, but we're actually */
- /* just checking to see if we *can* play it. */
- if (ast_streamfile(chan, namerecloc, chan->language))
+ if (!ast_fileexists(namerecloc, NULL, chan->language))
ast_copy_string(namerecloc, "", sizeof(namerecloc));
- else
- ast_stopstream(chan);
if (ast_streamfile(chan, targs.plsholdprompt, chan->language))
goto outrun;
Modified: team/russell/events/apps/app_meetme.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/apps/app_meetme.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/apps/app_meetme.c (original)
+++ team/russell/events/apps/app_meetme.c Wed Sep 5 10:04:47 2007
@@ -2420,7 +2420,7 @@
ast_log(LOG_NOTICE,"The requested confno is '%s'?\n", confno);
AST_LIST_LOCK(&confs);
AST_LIST_TRAVERSE(&confs, cnf, list) {
- ast_log(LOG_NOTICE,"Does conf %s match %s?\n", confno, cnf->confno);
+ ast_debug(3,"Does conf %s match %s?\n", confno, cnf->confno);
if (!strcmp(confno, cnf->confno))
break;
}
@@ -2458,7 +2458,7 @@
return NULL;
AST_STANDARD_APP_ARGS(args, parse);
- ast_log(LOG_NOTICE,"Will conf %s match %s?\n", confno, args.confno);
+ ast_debug(3,"Will conf %s match %s?\n", confno, args.confno);
if (!strcasecmp(args.confno, confno)) {
/* Bingo it's a valid conference */
cnf = build_conf(args.confno,
Modified: team/russell/events/apps/app_minivm.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/apps/app_minivm.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/apps/app_minivm.c (original)
+++ team/russell/events/apps/app_minivm.c Wed Sep 5 10:04:47 2007
@@ -2141,7 +2141,7 @@
if (varname && (varval = strchr(varname, '='))) {
*varval = '\0';
varval++;
- if ((tmpvar = ast_variable_new(varname, varval))) {
+ if ((tmpvar = ast_variable_new(varname, varval, ""))) {
tmpvar->next = vmu->chanvars;
vmu->chanvars = tmpvar;
}
@@ -2659,9 +2659,9 @@
ast_cli(fd, "* Mini-Voicemail statistics\n");
ast_cli(fd, " -------------------------\n");
ast_cli(fd, "\n");
- ast_cli(fd, " Voicemail accounts: %-5.5d\n", global_stats.voicemailaccounts);
- ast_cli(fd, " Templates: %-5.5d\n", global_stats.templates);
- ast_cli(fd, " Timezones: %-5.5d\n", global_stats.timezones);
+ ast_cli(fd, " Voicemail accounts: %5d\n", global_stats.voicemailaccounts);
+ ast_cli(fd, " Templates: %5d\n", global_stats.templates);
+ ast_cli(fd, " Timezones: %5d\n", global_stats.timezones);
if (global_stats.receivedmessages == 0) {
ast_cli(fd, " Received messages since last reset: <none>\n");
} else {
Modified: team/russell/events/apps/app_parkandannounce.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/apps/app_parkandannounce.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/apps/app_parkandannounce.c (original)
+++ team/russell/events/apps/app_parkandannounce.c Wed Sep 5 10:04:47 2007
@@ -130,7 +130,7 @@
snprintf(buf, sizeof(buf), "%d", lot);
oh.parent_channel = chan;
- oh.vars = ast_variable_new("_PARKEDAT", buf);
+ oh.vars = ast_variable_new("_PARKEDAT", buf, "");
dchan = __ast_request_and_dial(dialtech, AST_FORMAT_SLINEAR, args.dial, 30000, &outstate, chan->cid.cid_num, chan->cid.cid_name, &oh);
if (dchan) {
Modified: team/russell/events/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/apps/app_queue.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/apps/app_queue.c (original)
+++ team/russell/events/apps/app_queue.c Wed Sep 5 10:04:47 2007
@@ -318,6 +318,7 @@
int penalty; /*!< Are we a last resort? */
int calls; /*!< Number of calls serviced by this member */
int dynamic; /*!< Are we dynamically added? */
+ int realtime; /*!< Is this member realtime? */
int status; /*!< Status of queue member */
int paused; /*!< Are we paused (not accepting calls)? */
time_t lastcall; /*!< When last successful call was hungup */
@@ -600,7 +601,7 @@
"LastCall: %d\r\n"
"Status: %d\r\n"
"Paused: %d\r\n",
- q->name, cur->interface, cur->membername, cur->dynamic ? "dynamic" : "static",
+ q->name, cur->interface, cur->membername, cur->dynamic ? "dynamic" : cur->realtime ? "realtime" : "static",
cur->penalty, cur->calls, (int)cur->lastcall, cur->status, cur->paused);
}
}
@@ -1049,6 +1050,7 @@
if (!m) {
if ((m = create_queue_member(interface, membername, penalty, paused))) {
m->dead = 0;
+ m->realtime = 1;
add_to_interfaces(interface);
if (prev_m) {
prev_m->next = m;
@@ -1173,10 +1175,10 @@
queue_set_param(q, tmp_name, v->value, -1, 0);
}
- /* Temporarily set non-dynamic members dead so we can detect deleted ones.
+ /* Temporarily set realtime members dead so we can detect deleted ones.
* Also set the membercount correctly for realtime*/
for (m = q->members; m; m = m->next, q->membercount++) {
- if (!m->dynamic)
+ if (m->realtime)
m->dead = 1;
}
@@ -1263,6 +1265,25 @@
return q;
}
+static int update_realtime_member_field(struct member *mem, const char *queue_name, const char *field, const char *value)
+{
+ struct ast_variable *var;
+ int ret = -1;
+
+ if(!(var = ast_load_realtime("queue_members", "interface", mem->interface, "queue_name", queue_name, NULL)))
+ return ret;
+ while (var) {
+ if(!strcmp(var->name, "uniqueid"))
+ break;
+ var = var->next;
+ }
+ if(var && !ast_strlen_zero(var->value)) {
+ if ((ast_update_realtime("queue_members", "uniqueid", var->value, field, value, NULL)) > -1)
+ ret = 0;
+ }
+ return ret;
+}
+
static void update_realtime_members(struct call_queue *q)
{
struct ast_config *member_config = NULL;
@@ -1278,9 +1299,9 @@
ast_mutex_lock(&q->lock);
- /* Temporarily set non-dynamic members dead so we can detect deleted ones.*/
+ /* Temporarily set realtime members dead so we can detect deleted ones.*/
for (m = q->members; m; m = m->next) {
- if (!m->dynamic)
+ if (m->realtime)
m->dead = 1;
}
@@ -1636,7 +1657,7 @@
"LastCall: %d\r\n"
"Status: %d\r\n"
"Paused: %d\r\n",
- q->name, cur->interface, cur->membername, cur->dynamic ? "dynamic" : "static",
+ q->name, cur->interface, cur->membername, cur->dynamic ? "dynamic" : cur->realtime ? "realtime": "static",
cur->penalty, cur->calls, (int)cur->lastcall, cur->status, cur->paused);
}
}
@@ -2637,8 +2658,7 @@
res2 |= ast_safe_sleep(peer, qe->parent->memberdelay * 1000);
}
if (!res2 && announce) {
- if (play_file(peer, announce))
- ast_log(LOG_WARNING, "Announcement file '%s' is unavailable, continuing anyway...\n", announce);
+ play_file(peer, announce);
}
if (!res2 && qe->parent->reportholdtime) {
if (!play_file(peer, qe->parent->sound_reporthold)) {
@@ -2804,8 +2824,8 @@
/* 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",
- member->interface, member->membername, member->calls, (long)member->lastcall, member->penalty, member->dynamic);
+ snprintf(interfacevar,sizeof(interfacevar), "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(qe->chan, interfacevar);
}
@@ -3171,6 +3191,9 @@
if (queue_persistent_members)
dump_queue_members(q);
+ if(mem->realtime)
+ update_realtime_member_field(mem, queuename, "paused", paused ? "1" : "0");
+
ast_queue_log(q->name, "NONE", mem->membername, (paused ? "PAUSE" : "UNPAUSE"), "%s", "");
manager_event(EVENT_FLAG_AGENT, "QueueMemberPaused",
@@ -3980,8 +4003,10 @@
AST_LIST_LOCK(&queues);
use_weight=0;
/* Mark all queues as dead for the moment */
- AST_LIST_TRAVERSE(&queues, q, list)
- q->dead = 1;
+ AST_LIST_TRAVERSE(&queues, q, list) {
+ if(!q->realtime)
+ q->dead = 1;
+ }
/* Chug through config file */
cat = NULL;
@@ -4188,8 +4213,9 @@
ast_str_set(&out, 0, " %s", mem->interface);
if (mem->penalty)
ast_str_append(&out, 0, " with penalty %d", mem->penalty);
- ast_str_append(&out, 0, "%s%s (%s)",
+ ast_str_append(&out, 0, "%s%s%s (%s)",
mem->dynamic ? " (dynamic)" : "",
+ mem->realtime ? " (realtime)" : "",
mem->paused ? " (paused)" : "",
devstate2str(mem->status));
if (mem->calls)
Modified: team/russell/events/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/apps/app_voicemail.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/apps/app_voicemail.c (original)
+++ team/russell/events/apps/app_voicemail.c Wed Sep 5 10:04:47 2007
@@ -960,7 +960,7 @@
if (!strcasecmp(category, vmu->mailbox)) {
if (!(tmp = ast_variable_retrieve(cfg, category, "vmsecret"))) {
ast_debug(3, "looks like we need to make vmsecret!\n");
- var = ast_variable_new("vmsecret", newpassword);
+ var = ast_variable_new("vmsecret", newpassword, "");
}
new = alloca(strlen(newpassword)+1);
sprintf(new, "%s", newpassword);
Modified: team/russell/events/channels/chan_gtalk.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/channels/chan_gtalk.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/channels/chan_gtalk.c (original)
+++ team/russell/events/channels/chan_gtalk.c Wed Sep 5 10:04:47 2007
@@ -1568,13 +1568,54 @@
/*! \brief CLI command "gtalk show channels" */
static int gtalk_show_channels(int fd, int argc, char **argv)
{
+#define FORMAT "%-30.30s %-30.30s %-15.15s %-5.5s %-5.5s \n"
+ struct gtalk_pvt *p;
+ struct ast_channel *chan;
+ int numchans = 0;
+ char them[100];
+ char *jid = NULL;
+ char *resource = NULL;
+
if (argc != 3)
return RESULT_SHOWUSAGE;
+
ast_mutex_lock(>alklock);
-// if (!gtalk_list->p)
- ast_cli(fd, "No gtalk channels in use\n");
+ ast_cli(fd, FORMAT, "Channel", "Jabber ID", "Resource", "Read", "Write");
+ ASTOBJ_CONTAINER_TRAVERSE(>alk_list, 1, {
+ ASTOBJ_WRLOCK(iterator);
+ p = iterator->p;
+ while(p) {
+ chan = p->owner;
+ ast_copy_string(them, p->them, sizeof(them));
+ jid = them;
+ resource = strchr(them, '/');
+ if (!resource)
+ resource = "None";
+ else {
+ *resource = '\0';
+ resource ++;
+ }
+ if (chan)
+ ast_cli(fd, FORMAT,
+ chan->name,
+ jid,
+ resource,
+ ast_getformatname(chan->readformat),
+ ast_getformatname(chan->writeformat)
+ );
+ else
+ ast_log(LOG_WARNING, "No available channel\n");
+ numchans ++;
+ p = p->next;
+ }
+ ASTOBJ_UNLOCK(iterator);
+ });
+
ast_mutex_unlock(>alklock);
+
+ ast_cli(fd, "%d active gtalk channel%s\n", numchans, (numchans != 1) ? "s" : "");
return RESULT_SUCCESS;
+#undef FORMAT
}
/*! \brief CLI command "gtalk show channels" */
Modified: team/russell/events/channels/chan_iax2.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/channels/chan_iax2.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/channels/chan_iax2.c (original)
+++ team/russell/events/channels/chan_iax2.c Wed Sep 5 10:04:47 2007
@@ -670,10 +670,10 @@
#else
#define MAX_PEER_BUCKETS 563
#endif
-static ao2_container *peers;
+static struct ao2_container *peers;
#define MAX_USER_BUCKETS MAX_PEER_BUCKETS
-static ao2_container *users;
+static struct ao2_container *users;
static AST_LIST_HEAD_STATIC(firmwares, iax_firmware);
@@ -1302,7 +1302,7 @@
{
struct iax2_peer *peer = NULL;
int res = 0;
- ao2_iterator i;
+ struct ao2_iterator i;
i = ao2_iterator_init(peers, 0);
while ((peer = ao2_iterator_next(&i))) {
@@ -1886,7 +1886,7 @@
}
-static void reload_firmware(void)
+static void reload_firmware(int unload)
{
struct iax_firmware *cur = NULL;
DIR *fwd;
@@ -1900,20 +1900,22 @@
cur->dead = 1;
/* Now that we have marked them dead... load new ones */
- snprintf(dir, sizeof(dir), "%s/firmware/iax", (char *)ast_config_AST_DATA_DIR);
- fwd = opendir(dir);
- if (fwd) {
- while((de = readdir(fwd))) {
- if (de->d_name[0] != '.') {
- snprintf(fn, sizeof(fn), "%s/%s", dir, de->d_name);
- if (!try_firmware(fn)) {
- ast_verb(2, "Loaded firmware '%s'\n", de->d_name);
+ if (!unload) {
+ snprintf(dir, sizeof(dir), "%s/firmware/iax", (char *)ast_config_AST_DATA_DIR);
+ fwd = opendir(dir);
+ if (fwd) {
+ while((de = readdir(fwd))) {
+ if (de->d_name[0] != '.') {
+ snprintf(fn, sizeof(fn), "%s/%s", dir, de->d_name);
+ if (!try_firmware(fn)) {
+ ast_verb(2, "Loaded firmware '%s'\n", de->d_name);
+ }
}
}
- }
- closedir(fwd);
- } else
- ast_log(LOG_WARNING, "Error opening firmware directory '%s': %s\n", dir, strerror(errno));
+ closedir(fwd);
+ } else
+ ast_log(LOG_WARNING, "Error opening firmware directory '%s': %s\n", dir, strerror(errno));
+ }
/* Clean up leftovers */
AST_LIST_TRAVERSE_SAFE_BEGIN(&firmwares, cur, list) {
@@ -2425,7 +2427,7 @@
struct iax2_peer *peer;
char *res = NULL;
int wordlen = strlen(word);
- ao2_iterator i;
+ struct ao2_iterator i;
/* 0 - iax2; 1 - show; 2 - peer; 3 - <peername> */
if (pos != 3)
@@ -3688,7 +3690,7 @@
{
struct iax2_peer *peer;
int res = 0;
- ao2_iterator i;
+ struct ao2_iterator i;
i = ao2_iterator_init(peers, 0);
while ((peer = ao2_iterator_next(&i))) {
@@ -3710,7 +3712,6 @@
struct ast_channel *tmp;
struct chan_iax2_pvt *i;
struct ast_variable *v = NULL;
- struct ast_datastore *variablestore = NULL;
if (!(i = iaxs[callno])) {
ast_log(LOG_WARNING, "No IAX2 pvt found for callno '%d' !\n", callno);
@@ -3759,29 +3760,8 @@
/* Set inherited variables */
if (i->vars) {
- AST_LIST_HEAD(, ast_var_t) *varlist;
- varlist = ast_calloc(1, sizeof(*varlist));
- variablestore = ast_channel_datastore_alloc(&iax2_variable_datastore_info, NULL);
- if (variablestore && varlist) {
- variablestore->data = varlist;
- variablestore->inheritance = DATASTORE_INHERIT_FOREVER;
- AST_LIST_HEAD_INIT(varlist);
- for (v = i->vars ; v ; v = v->next) {
- struct ast_var_t *newvar = ast_var_assign(v->name, v->value);
- if (!newvar) {
- ast_log(LOG_ERROR, "Out of memory\n");
- break;
- }
- AST_LIST_INSERT_TAIL(varlist, newvar, entries);
- }
- ast_channel_datastore_add(tmp, variablestore);
- } else {
- ast_log(LOG_ERROR, "Out of memory\n");
- if (variablestore)
- ast_channel_datastore_free(variablestore);
- if (varlist)
- ast_free(varlist);
- }
+ for (v = i->vars ; v ; v = v->next)
+ pbx_builtin_setvar_helper(tmp, v->name, v->value);
}
if (state != AST_STATE_DOWN) {
@@ -4458,7 +4438,7 @@
struct iax2_user *user = NULL;
char auth[90];
char *pstr = "";
- ao2_iterator i;
+ struct ao2_iterator i;
switch (argc) {
case 5:
@@ -4516,7 +4496,7 @@
int online_peers = 0;
int offline_peers = 0;
int unmonitored_peers = 0;
- ao2_iterator i;
+ struct ao2_iterator i;
#define FORMAT2 "%-15.15s %-15.15s %s %-15.15s %-8s %s %-10s%s"
#define FORMAT "%-15.15s %-15.15s %s %-15.15s %-5d%s %s %-10s%s"
@@ -4718,7 +4698,7 @@
/* 0 - iax2; 1 - unregister; 2 - <peername> */
if (pos == 2) {
- ao2_iterator i = ao2_iterator_init(peers, 0);
+ struct ao2_iterator i = ao2_iterator_init(peers, 0);
while ((p = ao2_iterator_next(&i))) {
if (!strncasecmp(p->name, word, wordlen) &&
++which > state && p->expire > 0) {
@@ -5122,7 +5102,7 @@
int bestscore = 0;
int gotcapability = 0;
struct ast_variable *v = NULL, *tmpvar = NULL;
- ao2_iterator i;
+ struct ao2_iterator i;
if (!iaxs[callno])
return res;
@@ -5247,7 +5227,7 @@
/* We found our match (use the first) */
/* copy vars */
for (v = user->vars ; v ; v = v->next) {
- if((tmpvar = ast_variable_new(v->name, v->value))) {
+ if((tmpvar = ast_variable_new(v->name, v->value, v->file))) {
tmpvar->next = iaxs[callno]->vars;
iaxs[callno]->vars = tmpvar;
}
@@ -5713,7 +5693,7 @@
/* Normal password authentication */
res = authenticate(p->challenge, override, okey, authmethods, &ied, sin, &p->ecx, &p->dcx);
} else {
- ao2_iterator i = ao2_iterator_init(peers, 0);
+ struct ao2_iterator i = ao2_iterator_init(peers, 0);
while ((peer = ao2_iterator_next(&i))) {
if ((ast_strlen_zero(p->peer) || !strcmp(p->peer, peer->name))
/* No peer specified at our end, or this is the peer */
@@ -9539,20 +9519,16 @@
ast_sched_del(sched, peer->expire);
peer->expire = -1;
ast_clear_flag(peer, IAX_DYNAMIC);
- if (ast_dnsmgr_lookup(v->value, &peer->addr.sin_addr, &peer->dnsmgr)) {
- ast_string_field_free_pools(peer);
+ if (ast_dnsmgr_lookup(v->value, &peer->addr.sin_addr, &peer->dnsmgr))
return peer_unref(peer);
- }
if (!peer->addr.sin_port)
peer->addr.sin_port = htons(IAX_DEFAULT_PORTNO);
}
if (!maskfound)
inet_aton("255.255.255.255", &peer->mask);
} else if (!strcasecmp(v->name, "defaultip")) {
- if (ast_get_ip(&peer->defaddr, v->value)) {
- ast_string_field_free_pools(peer);
+ if (ast_get_ip(&peer->defaddr, v->value))
return peer_unref(peer);
- }
} else if (!strcasecmp(v->name, "sourceaddress")) {
peer_set_srcaddr(peer, v->value);
} else if (!strcasecmp(v->name, "permit") ||
@@ -9763,7 +9739,7 @@
if (varname && (varval = strchr(varname,'='))) {
*varval = '\0';
varval++;
- if((tmpvar = ast_variable_new(varname, varval))) {
+ if((tmpvar = ast_variable_new(varname, varval, ""))) {
tmpvar->next = user->vars;
user->vars = tmpvar;
}
@@ -9942,7 +9918,7 @@
static void prune_users(void)
{
struct iax2_user *user;
- ao2_iterator i;
+ struct ao2_iterator i;
i = ao2_iterator_init(users, 0);
while ((user = ao2_iterator_next(&i))) {
@@ -9956,7 +9932,7 @@
static void prune_peers(void)
{
struct iax2_peer *peer;
- ao2_iterator i;
+ struct ao2_iterator i;
i = ao2_iterator_init(peers, 0);
while ((peer = ao2_iterator_next(&i))) {
@@ -10408,7 +10384,7 @@
ao2_callback(peers, 0, iax2_poke_peer_cb, NULL);
}
- reload_firmware();
+ reload_firmware(0);
iax_provision_reload(1);
return 0;
@@ -11213,6 +11189,7 @@
delete_users();
iax_provision_unload();
sched_context_destroy(sched);
+ reload_firmware(1);
for (x = 0; x < IAX_MAX_CALLS; x++)
ast_mutex_destroy(&iaxsl[x]);
@@ -11343,7 +11320,7 @@
ao2_callback(peers, 0, iax2_poke_peer_cb, NULL);
- reload_firmware();
+ reload_firmware(0);
iax_provision_reload(0);
return AST_MODULE_LOAD_SUCCESS;
Modified: team/russell/events/channels/chan_misdn.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/channels/chan_misdn.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/channels/chan_misdn.c (original)
+++ team/russell/events/channels/chan_misdn.c Wed Sep 5 10:04:47 2007
@@ -2546,8 +2546,10 @@
static struct ast_frame *misdn_read(struct ast_channel *ast)
{
struct chan_list *tmp;
- int len;
-
+ fd_set rrfs;
+ struct timeval tv;
+ int len, t;
+
if (!ast) {
chan_misdn_log(1, 0, "misdn_read called without ast\n");
return NULL;
@@ -2562,15 +2564,37 @@
return NULL;
}
- len = read(tmp->pipe[0], tmp->ast_rd_buf, sizeof(tmp->ast_rd_buf));
-
- if (len <= 0) {
- /* we hangup here, since our pipe is closed */
- chan_misdn_log(2, tmp->bc->port, "misdn_read: Pipe closed, hanging up\n");
+ tv.tv_sec=0;
+ tv.tv_usec=20000;
+
+ FD_ZERO(&rrfs);
+ FD_SET(tmp->pipe[0],&rrfs);
+
+ t=select(FD_SETSIZE,&rrfs,NULL, NULL,&tv);
+
+ if (!t) {
+ chan_misdn_log(3, tmp->bc->port, "read Select Timed out\n");
+ len=160;
+ }
+
+ if (t<0) {
+ chan_misdn_log(-1, tmp->bc->port, "Select Error (err=%s)\n",strerror(errno));
return NULL;
}
- tmp->frame.frametype = AST_FRAME_VOICE;
+ if (FD_ISSET(tmp->pipe[0],&rrfs)) {
+ len=read(tmp->pipe[0],tmp->ast_rd_buf,sizeof(tmp->ast_rd_buf));
+
+ if (len<=0) {
+ /* we hangup here, since our pipe is closed */
+ chan_misdn_log(2,tmp->bc->port,"misdn_read: Pipe closed, hanging up\n");
+ return NULL;
+ }
+
+ } else {
+ return NULL;
+ }
+
tmp->frame.subclass = AST_FORMAT_ALAW;
tmp->frame.datalen = len;
tmp->frame.samples = len;
@@ -4304,8 +4328,15 @@
}
}
}
-
- /* notice that we don't break here!*/
+ ch->l3id=bc->l3_id;
+ ch->addr=bc->addr;
+
+ start_bc_tones(ch);
+
+ ch->state = MISDN_CONNECTED;
+
+ ast_queue_control(ch->ast, AST_CONTROL_ANSWER);
+ break;
case EVENT_CONNECT_ACKNOWLEDGE:
{
ch->l3id = bc->l3_id;
@@ -4314,11 +4345,6 @@
start_bc_tones(ch);
ch->state = MISDN_CONNECTED;
-
- if (!ch->ast)
- break;
-
- ast_queue_control(ch->ast, AST_CONTROL_ANSWER);
}
break;
case EVENT_DISCONNECT:
@@ -4377,9 +4403,6 @@
hangup_chan(ch);
release_chan(bc);
-
- if (bc->need_release_complete)
- misdn_lib_send_event(bc, EVENT_RELEASE_COMPLETE);
}
break;
case EVENT_RELEASE_COMPLETE:
Modified: team/russell/events/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/channels/chan_sip.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/channels/chan_sip.c (original)
+++ team/russell/events/channels/chan_sip.c Wed Sep 5 10:04:47 2007
@@ -9108,11 +9108,11 @@
}
/* Ok, we have a bad username/secret pair */
- /* Challenge again, and again, and again */
- transmit_response_with_auth(p, response, req, p->randdata, reliable, respheader, 0);
- sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
-
- return AUTH_CHALLENGE_SENT;
+ /* Tell the UAS not to re-send this authentication data, because
+ it will continue to fail
+ */
+
+ return AUTH_SECRET_FAILED;
}
/*! \brief Change onhold state of a peer using a pvt structure */
@@ -9359,7 +9359,7 @@
transmit_fake_auth_response(p, &p->initreq, 1);
} else {
/* URI not found */
- if (res == AUTH_UNKNOWN_DOMAIN || res == AUTH_PEER_NOT_DYNAMIC)
+ if (res == AUTH_PEER_NOT_DYNAMIC)
transmit_response(p, "403 Forbidden", &p->initreq);
else
transmit_response(p, "404 Not found", &p->initreq);
@@ -10028,7 +10028,7 @@
struct ast_variable *res = NULL, *tmp, *v = NULL;
for (v = src ; v ; v = v->next) {
- if ((tmp = ast_variable_new(v->name, v->value))) {
+ if ((tmp = ast_variable_new(v->name, v->value, v->file))) {
tmp->next = res;
res = tmp;
}
@@ -16427,13 +16427,10 @@
usleep(1);
sip_pvt_lock(dialog);
}
- if (!(ast_rtp_get_bridged(dialog->rtp))) {
- ast_log(LOG_NOTICE, "Disconnecting call '%s' for lack of RTP activity in %ld seconds\n",
- dialog->owner->name, (long) (t - dialog->lastrtprx));
- /* Issue a softhangup */
- ast_softhangup_nolock(dialog->owner, AST_SOFTHANGUP_DEV);
- } else
- ast_log(LOG_NOTICE, "'%s' will not be disconnected in %ld seconds because it is directly bridged to another RTP stream\n", dialog->owner->name, (long) (t - dialog->lastrtprx));
+ ast_log(LOG_NOTICE, "Disconnecting call '%s' for lack of RTP activity in %ld seconds\n",
+ dialog->owner->name, (long) (t - dialog->lastrtprx));
+ /* Issue a softhangup */
+ ast_softhangup_nolock(dialog->owner, AST_SOFTHANGUP_DEV);
ast_channel_unlock(dialog->owner);
/* forget the timeouts for this call, since a hangup
has already been requested and we don't want to
@@ -17140,7 +17137,7 @@
if ((varval = strchr(varname,'='))) {
*varval++ = '\0';
- if ((tmpvar = ast_variable_new(varname, varval))) {
+ if ((tmpvar = ast_variable_new(varname, varval, ""))) {
tmpvar->next = list;
list = tmpvar;
}
@@ -17719,6 +17716,7 @@
global_outboundproxy.ip.sin_port = htons(STANDARD_SIP_PORT);
global_outboundproxy.ip.sin_family = AF_INET; /* Type of address: IPv4 */
bindaddr.sin_port = htons(STANDARD_SIP_PORT);
+ externip.sin_port = htons(STANDARD_SIP_PORT);
global_srvlookup = DEFAULT_SRVLOOKUP;
global_tos_sip = DEFAULT_TOS_SIP;
global_tos_audio = DEFAULT_TOS_AUDIO;
Modified: team/russell/events/channels/chan_skinny.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/channels/chan_skinny.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/channels/chan_skinny.c (original)
+++ team/russell/events/channels/chan_skinny.c Wed Sep 5 10:04:47 2007
@@ -1463,7 +1463,7 @@
if ((varval = strchr(varname,'='))) {
*varval++ = '\0';
- if ((tmpvar = ast_variable_new(varname, varval))) {
+ if ((tmpvar = ast_variable_new(varname, varval, ""))) {
tmpvar->next = list;
list = tmpvar;
}
Modified: team/russell/events/channels/chan_zap.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/channels/chan_zap.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/channels/chan_zap.c (original)
+++ team/russell/events/channels/chan_zap.c Wed Sep 5 10:04:47 2007
@@ -110,6 +110,19 @@
#include "asterisk/event.h"
#define SMDI_MD_WAIT_TIMEOUT 1500 /* 1.5 seconds */
+
+#ifdef ZT_SPANINFO_HAS_LINECONFIG
+static const char *lbostr[] = {
+"0 db (CSU)/0-133 feet (DSX-1)",
+"133-266 feet (DSX-1)",
+"266-399 feet (DSX-1)",
+"399-533 feet (DSX-1)",
+"533-655 feet (DSX-1)",
+"-7.5db (CSU)",
+"-15db (CSU)",
+"-22.5db (CSU)"
+};
+#endif
/*! Global jitterbuffer configuration - by default, jb is disabled */
static struct ast_jb_conf default_jbconf =
@@ -11026,8 +11039,13 @@
/* Based on irqmiss.c */
static int zap_show_status(int fd, int argc, char *argv[]) {
+#ifdef ZT_SPANINFO_HAS_LINECONFIG
+ #define FORMAT "%-40.40s %-7.7s %-6d %-6d %-6d %-3.3s %-4.4s %-8.8s %s\n"
+ #define FORMAT2 "%-40.40s %-7.7s %-6.6s %-6.6s %-6.6s %-3.3s %-4.4s %-8.8s %s\n"
+#else
#define FORMAT "%-40.40s %-10.10s %-10d %-10d %-10d\n"
#define FORMAT2 "%-40.40s %-10.10s %-10.10s %-10.10s %-10.10s\n"
+#endif
int span;
int res;
@@ -11042,7 +11060,11 @@
ast_cli(fd, "No Zaptel interface found.\n");
return RESULT_FAILURE;
}
- ast_cli(fd, FORMAT2, "Description", "Alarms", "IRQ", "bpviol", "CRC4");
+ ast_cli(fd, FORMAT2, "Description", "Alarms", "IRQ", "bpviol", "CRC4"
+#ifdef ZT_SPANINFO_HAS_LINECONFIG
+ , "Framing", "Coding", "Options", "LBO"
+#endif
+ );
for (span = 1; span < ZT_MAX_SPANS; ++span) {
s.spanno = span;
@@ -11077,7 +11099,21 @@
strcpy(alarms, "UNCONFIGURED");
}
- ast_cli(fd, FORMAT, s.desc, alarms, s.irqmisses, s.bpvcount, s.crc4count);
+ ast_cli(fd, FORMAT, s.desc, alarms, s.irqmisses, s.bpvcount, s.crc4count
+#ifdef ZT_SPANINFO_HAS_LINECONFIG
+ , s.lineconfig & ZT_CONFIG_D4 ? "D4" :
+ s.lineconfig & ZT_CONFIG_ESF ? "ESF" :
+ s.lineconfig & ZT_CONFIG_CCS ? "CCS" :
+ "CAS"
+ , s.lineconfig & ZT_CONFIG_B8ZS ? "B8ZS" :
+ s.lineconfig & ZT_CONFIG_HDB3 ? "HDB3" :
+ s.lineconfig & ZT_CONFIG_AMI ? "AMI" :
+ "Unk"
+ , s.lineconfig & ZT_CONFIG_CRC4 ?
+ s.lineconfig & ZT_CONFIG_NOTOPEN ? "CRC4/YEL" : "CRC4" : "YEL"
+ , lbostr[s.lbo]
+#endif
+ );
}
close(ctl);
Modified: team/russell/events/channels/h323/ast_h323.cxx
URL: http://svn.digium.com/view/asterisk/team/russell/events/channels/h323/ast_h323.cxx?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/channels/h323/ast_h323.cxx (original)
+++ team/russell/events/channels/h323/ast_h323.cxx Wed Sep 5 10:04:47 2007
@@ -287,7 +287,9 @@
cout << "\t-- " << GetLocalUserName() << " is calling host " << fullAddress << endl;
cout << "\t-- Call token is " << (const char *)token << endl;
cout << "\t-- Call reference is " << *callReference << endl;
+#ifdef PTRACING
cout << "\t-- DTMF Payload is " << connection->dtmfCodec << endl;
+#endif
}
connection->Unlock();
return 0;
@@ -1662,10 +1664,12 @@
H245_AudioTelephonyEventCapability & atec = cap;
atec.m_dynamicRTPPayloadType = dtmfCodec[0];
// on_set_rfc2833_payload(GetCallReference(), (const char *)GetCallToken(), (int)dtmfCodec[0]);
+#ifdef PTRACING
if (h323debug) {
cout << "\t-- Receiving RFC2833 on payload " <<
atec.m_dynamicRTPPayloadType << endl;
}
+#endif
}
}
}
@@ -1762,9 +1766,11 @@
// if (sendUserInputMode == SendUserInputAsTone)
// sendUserInputMode = SendUserInputAsInlineRFC2833;
}
+#ifdef PTRACING
if (h323debug) {
cout << "\t-- Outbound Cisco RTP DTMF on payload " << pt << endl;
}
+#endif
}
break;
case H323Capability::e_UserInput:
@@ -1775,9 +1781,11 @@
// if (sendUserInputMode == SendUserInputAsTone)
// sendUserInputMode = SendUserInputAsInlineRFC2833;
}
+#ifdef PTRACING
if (h323debug) {
cout << "\t-- Outbound RFC2833 on payload " << pt << endl;
}
+#endif
}
break;
#if 0
Modified: team/russell/events/channels/iax2-parser.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/channels/iax2-parser.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/channels/iax2-parser.c (original)
+++ team/russell/events/channels/iax2-parser.c Wed Sep 5 10:04:47 2007
@@ -917,7 +917,7 @@
int len = strlen(var2->value) + strlen(tmp2) + 1;
char *tmp3 = alloca(len);
snprintf(tmp3, len, "%s%s", var2->value, tmp2);
- var = ast_variable_new(tmp, tmp3);
+ var = ast_variable_new(tmp, tmp3, var2->file);
var->next = var2->next;
if (prev)
prev->next = var;
@@ -928,7 +928,7 @@
}
}
if (!var2) {
- var = ast_variable_new(tmp, tmp2);
+ var = ast_variable_new(tmp, tmp2, "");
var->next = ies->vars;
ies->vars = var;
}
Modified: team/russell/events/channels/misdn/isdn_lib.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/channels/misdn/isdn_lib.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/channels/misdn/isdn_lib.c (original)
+++ team/russell/events/channels/misdn/isdn_lib.c Wed Sep 5 10:04:47 2007
@@ -1557,9 +1557,6 @@
case EVENT_PROGRESS:
case EVENT_PROCEEDING:
case EVENT_SETUP_ACKNOWLEDGE:
-
- setup_bc(bc);
-
case EVENT_SETUP:
{
if (bc->channel == 0xff || bc->channel<=0)
@@ -1571,6 +1568,8 @@
return -1;
}
}
+
+ setup_bc(bc);
break;
case EVENT_RELEASE_COMPLETE:
Modified: team/russell/events/codecs/codec_zap.c
URL: http://svn.digium.com/view/asterisk/team/russell/events/codecs/codec_zap.c?view=diff&rev=81521&r1=81520&r2=81521
==============================================================================
--- team/russell/events/codecs/codec_zap.c (original)
+++ team/russell/events/codecs/codec_zap.c Wed Sep 5 10:04:47 2007
@@ -51,6 +51,7 @@
#include "asterisk/config.h"
#include "asterisk/options.h"
#include "asterisk/module.h"
+#include "asterisk/cli.h"
#include "asterisk/logger.h"
#include "asterisk/channel.h"
#include "asterisk/utils.h"
@@ -59,6 +60,37 @@
#define BUFFER_SAMPLES 8000
static unsigned int global_useplc = 0;
+
+static struct channel_usage {
+ int total;
+ int encoders;
+ int decoders;
+} channels;
+
+static char show_transcoder_usage[] =
+"Usage: show transcoder\n"
+" Displays channel utilization of Zaptel transcoder(s).\n";
+
+static char transcoder_show_usage[] =
+"Usage: transcoder show\n"
+" Displays channel utilization of Zaptel transcoder(s).\n";
+
+static int transcoder_show(int fd, int argc, char **argv);
+
+static struct ast_cli_entry cli_deprecated[] = {
+ { { "show", "transcoder", NULL },
+ transcoder_show,
+ "Display Zaptel transcoder utilization.",
+ show_transcoder_usage}
+};
+
+static struct ast_cli_entry cli[] = {
+ { { "transcoder", "show", NULL },
+ transcoder_show,
+ "Display Zaptel transcoder utilization.",
[... 3043 lines stripped ...]
More information about the asterisk-commits
mailing list