[asterisk-commits] mmichelson: branch mmichelson/acl-v6 r276432 - in /team/mmichelson/acl-v6: ./...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Jul 14 13:01:19 CDT 2010
Author: mmichelson
Date: Wed Jul 14 13:01:05 2010
New Revision: 276432
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=276432
Log:
merged in missed changes.
Added:
team/mmichelson/acl-v6/contrib/realtime/
- copied from r276393, trunk/contrib/realtime/
team/mmichelson/acl-v6/contrib/realtime/mysql/
- copied from r276393, trunk/contrib/realtime/mysql/
team/mmichelson/acl-v6/contrib/realtime/mysql/iaxfriends.sql
- copied unchanged from r276393, trunk/contrib/realtime/mysql/iaxfriends.sql
team/mmichelson/acl-v6/contrib/realtime/mysql/meetme.sql
- copied unchanged from r276393, trunk/contrib/realtime/mysql/meetme.sql
team/mmichelson/acl-v6/contrib/realtime/mysql/sipfriends.sql
- copied unchanged from r276393, trunk/contrib/realtime/mysql/sipfriends.sql
team/mmichelson/acl-v6/contrib/realtime/mysql/voicemail.sql
- copied unchanged from r276393, trunk/contrib/realtime/mysql/voicemail.sql
team/mmichelson/acl-v6/contrib/realtime/oracle/
- copied from r276393, trunk/contrib/realtime/oracle/
team/mmichelson/acl-v6/contrib/realtime/postgresql/
- copied from r276393, trunk/contrib/realtime/postgresql/
team/mmichelson/acl-v6/contrib/realtime/postgresql/realtime.sql
- copied unchanged from r276393, trunk/contrib/realtime/postgresql/realtime.sql
team/mmichelson/acl-v6/contrib/realtime/sqlserver/
- copied from r276393, trunk/contrib/realtime/sqlserver/
team/mmichelson/acl-v6/tests/test_func_file.c
- copied unchanged from r276393, trunk/tests/test_func_file.c
Removed:
team/mmichelson/acl-v6/contrib/scripts/iax-friends.sql
team/mmichelson/acl-v6/contrib/scripts/meetme.sql
team/mmichelson/acl-v6/contrib/scripts/realtime_pgsql.sql
team/mmichelson/acl-v6/contrib/scripts/sip-friends.sql
team/mmichelson/acl-v6/contrib/scripts/vmdb.sql
team/mmichelson/acl-v6/funcs/func_connectedline.c
team/mmichelson/acl-v6/funcs/func_redirecting.c
Modified:
team/mmichelson/acl-v6/ (props changed)
team/mmichelson/acl-v6/CHANGES
team/mmichelson/acl-v6/UPGRADE.txt
team/mmichelson/acl-v6/addons/chan_ooh323.c
team/mmichelson/acl-v6/apps/app_alarmreceiver.c
team/mmichelson/acl-v6/apps/app_amd.c
team/mmichelson/acl-v6/apps/app_dial.c
team/mmichelson/acl-v6/apps/app_directed_pickup.c
team/mmichelson/acl-v6/apps/app_disa.c
team/mmichelson/acl-v6/apps/app_dumpchan.c
team/mmichelson/acl-v6/apps/app_fax.c
team/mmichelson/acl-v6/apps/app_followme.c
team/mmichelson/acl-v6/apps/app_macro.c
team/mmichelson/acl-v6/apps/app_meetme.c
team/mmichelson/acl-v6/apps/app_minivm.c
team/mmichelson/acl-v6/apps/app_osplookup.c
team/mmichelson/acl-v6/apps/app_parkandannounce.c
team/mmichelson/acl-v6/apps/app_privacy.c
team/mmichelson/acl-v6/apps/app_queue.c
team/mmichelson/acl-v6/apps/app_readexten.c
team/mmichelson/acl-v6/apps/app_rpt.c
team/mmichelson/acl-v6/apps/app_setcallerid.c
team/mmichelson/acl-v6/apps/app_sms.c
team/mmichelson/acl-v6/apps/app_stack.c
team/mmichelson/acl-v6/apps/app_talkdetect.c
team/mmichelson/acl-v6/apps/app_voicemail.c
team/mmichelson/acl-v6/apps/app_while.c
team/mmichelson/acl-v6/apps/app_zapateller.c
team/mmichelson/acl-v6/cel/cel_pgsql.c
team/mmichelson/acl-v6/channels/chan_agent.c
team/mmichelson/acl-v6/channels/chan_console.c
team/mmichelson/acl-v6/channels/chan_dahdi.c
team/mmichelson/acl-v6/channels/chan_gtalk.c
team/mmichelson/acl-v6/channels/chan_h323.c
team/mmichelson/acl-v6/channels/chan_iax2.c
team/mmichelson/acl-v6/channels/chan_jingle.c
team/mmichelson/acl-v6/channels/chan_local.c
team/mmichelson/acl-v6/channels/chan_mgcp.c
team/mmichelson/acl-v6/channels/chan_misdn.c
team/mmichelson/acl-v6/channels/chan_oss.c
team/mmichelson/acl-v6/channels/chan_phone.c
team/mmichelson/acl-v6/channels/chan_sip.c
team/mmichelson/acl-v6/channels/chan_skinny.c
team/mmichelson/acl-v6/channels/chan_unistim.c
team/mmichelson/acl-v6/channels/chan_usbradio.c
team/mmichelson/acl-v6/channels/chan_vpb.cc
team/mmichelson/acl-v6/channels/sig_analog.c
team/mmichelson/acl-v6/channels/sig_analog.h
team/mmichelson/acl-v6/channels/sig_pri.c
team/mmichelson/acl-v6/channels/sig_ss7.c
team/mmichelson/acl-v6/channels/sip/include/sip.h
team/mmichelson/acl-v6/configs/voicemail.conf.sample
team/mmichelson/acl-v6/doc/tex/cdrdriver.tex
team/mmichelson/acl-v6/doc/tex/celdriver.tex
team/mmichelson/acl-v6/funcs/func_blacklist.c
team/mmichelson/acl-v6/funcs/func_callerid.c
team/mmichelson/acl-v6/funcs/func_dialplan.c
team/mmichelson/acl-v6/funcs/func_env.c
team/mmichelson/acl-v6/include/asterisk/callerid.h
team/mmichelson/acl-v6/include/asterisk/channel.h
team/mmichelson/acl-v6/main/app.c
team/mmichelson/acl-v6/main/callerid.c
team/mmichelson/acl-v6/main/ccss.c
team/mmichelson/acl-v6/main/cdr.c
team/mmichelson/acl-v6/main/cel.c
team/mmichelson/acl-v6/main/channel.c
team/mmichelson/acl-v6/main/cli.c
team/mmichelson/acl-v6/main/dial.c
team/mmichelson/acl-v6/main/features.c
team/mmichelson/acl-v6/main/file.c
team/mmichelson/acl-v6/main/manager.c
team/mmichelson/acl-v6/main/pbx.c
team/mmichelson/acl-v6/res/res_agi.c
team/mmichelson/acl-v6/res/snmp/agent.c
team/mmichelson/acl-v6/tests/test_substitution.c
Propchange: team/mmichelson/acl-v6/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Propchange: team/mmichelson/acl-v6/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Jul 14 13:01:05 2010
@@ -1,1 +1,1 @@
-/trunk:1-275903
+/trunk:1-276431
Modified: team/mmichelson/acl-v6/CHANGES
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/acl-v6/CHANGES?view=diff&rev=276432&r1=276431&r2=276432
==============================================================================
--- team/mmichelson/acl-v6/CHANGES (original)
+++ team/mmichelson/acl-v6/CHANGES Wed Jul 14 13:01:05 2010
@@ -229,6 +229,7 @@
on hold or is a call waiting call.
* Added option to dialplan function CDR(), the 'f' option
allows for high resolution times for billsec and duration fields.
+ * FILE() now supports line-mode and writing.
Dialplan Variables
------------------
Modified: team/mmichelson/acl-v6/UPGRADE.txt
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/acl-v6/UPGRADE.txt?view=diff&rev=276432&r1=276431&r2=276432
==============================================================================
--- team/mmichelson/acl-v6/UPGRADE.txt (original)
+++ team/mmichelson/acl-v6/UPGRADE.txt Wed Jul 14 13:01:05 2010
@@ -81,6 +81,9 @@
* VoiceMailMain and VMAuthenticate, if a '*' is entered in the first position
of a Mailbox or Password, will, if it exists, jump to the 'a' extension in
the current dialplan context.
+
+* The CALLERPRES() dialplan function is deprecated in favor of
+ CALLERID(num-pres) and CALLERID(name-pres).
* Environment variables that start with "AST_" are reserved to the system and
may no longer be set from the dialplan.
Modified: team/mmichelson/acl-v6/addons/chan_ooh323.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/acl-v6/addons/chan_ooh323.c?view=diff&rev=276432&r1=276431&r2=276432
==============================================================================
--- team/mmichelson/acl-v6/addons/chan_ooh323.c (original)
+++ team/mmichelson/acl-v6/addons/chan_ooh323.c Wed Jul 14 13:01:05 2010
@@ -922,24 +922,23 @@
}
ast_mutex_lock(&p->lock);
ast_set_flag(p, H323_OUTGOING);
- if (ast->connected.id.number) {
- if(p->callerid_num) free(p->callerid_num);
- p->callerid_num = strdup(ast->connected.id.number);
- }
-
- if (ast->connected.id.name) {
- if(p->callerid_name)
- free(p->callerid_name);
- p->callerid_name = strdup(ast->connected.id.name);
- } else if (ast->connected.id.number) {
- if(p->callerid_name)
- free(p->callerid_name);
- p->callerid_name = strdup(ast->connected.id.number);
+ if (ast->connected.id.number.valid && ast->connected.id.number.str) {
+ free(p->callerid_num);
+ p->callerid_num = strdup(ast->connected.id.number.str);
+ }
+
+ if (ast->connected.id.name.valid && ast->connected.id.name.str) {
+ free(p->callerid_name);
+ p->callerid_name = strdup(ast->connected.id.name.str);
+ } else if (ast->connected.id.number.valid && ast->connected.id.number.str) {
+ free(p->callerid_name);
+ p->callerid_name = strdup(ast->connected.id.number.str);
} else {
- ast->connected.id.name = strdup(gCallerID);
- if(p->callerid_name)
- free(p->callerid_name);
- p->callerid_name = strdup(ast->connected.id.name);
+ ast->connected.id.name.valid = 1;
+ free(ast->connected.id.name.str);
+ ast->connected.id.name.str = strdup(gCallerID);
+ free(p->callerid_name);
+ p->callerid_name = strdup(ast->connected.id.name.str);
}
/* Retrieve vars */
@@ -1241,13 +1240,15 @@
case AST_CONTROL_SRCCHANGE:
ast_rtp_instance_change_source(p->rtp);
break;
- case AST_CONTROL_CONNECTED_LINE:
- if (!ast_strlen_zero(ast->connected.id.name)) {
- if (gH323Debug)
- ast_log(LOG_DEBUG, "Sending connected line info for %s (%s)\n",
- callToken, ast->connected.id.name);
- ooSetANI(callToken, ast->connected.id.name);
- }
+ case AST_CONTROL_CONNECTED_LINE:
+ if (!ast->connected.id.name.valid
+ || ast_strlen_zero(ast->connected.id.name.str)) {
+ break;
+ }
+ if (gH323Debug)
+ ast_log(LOG_DEBUG, "Sending connected line info for %s (%s)\n",
+ callToken, ast->connected.id.name.str);
+ ooSetANI(callToken, ast->connected.id.name.str);
break;
case AST_CONTROL_T38_PARAMETERS:
@@ -1539,10 +1540,15 @@
if (call->remoteDisplayName) {
struct ast_party_connected_line connected;
+ struct ast_set_party_connected_line update_connected;
+
+ memset(&update_connected, 0, sizeof(update_connected));
+ update_connected.id.name = 1;
ast_party_connected_line_init(&connected);
- connected.id.name = (char *) call->remoteDisplayName;
+ connected.id.name.valid = 1;
+ connected.id.name.str = (char *) call->remoteDisplayName;
connected.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
- ast_channel_queue_connected_line_update(c, &connected);
+ ast_channel_queue_connected_line_update(c, &connected, &update_connected);
}
if (c->_state != AST_STATE_UP)
ast_setstate(c, AST_STATE_RINGING);
@@ -1590,10 +1596,15 @@
if (call->remoteDisplayName) {
struct ast_party_connected_line connected;
+ struct ast_set_party_connected_line update_connected;
+
+ memset(&update_connected, 0, sizeof(update_connected));
+ update_connected.id.name = 1;
ast_party_connected_line_init(&connected);
- connected.id.name = (char *) call->remoteDisplayName;
+ connected.id.name.valid = 1;
+ connected.id.name.str = (char *) call->remoteDisplayName;
connected.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
- ast_channel_queue_connected_line_update(c, &connected);
+ ast_channel_queue_connected_line_update(c, &connected, &update_connected);
}
if (c->_state != AST_STATE_UP)
ast_setstate(c, AST_STATE_RINGING);
@@ -1983,10 +1994,15 @@
if (call->remoteDisplayName) {
struct ast_party_connected_line connected;
+ struct ast_set_party_connected_line update_connected;
+
+ memset(&update_connected, 0, sizeof(update_connected));
+ update_connected.id.name = 1;
ast_party_connected_line_init(&connected);
- connected.id.name = (char *) call->remoteDisplayName;
+ connected.id.name.valid = 1;
+ connected.id.name.str = (char *) call->remoteDisplayName;
connected.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
- ast_channel_queue_connected_line_update(c, &connected);
+ ast_channel_queue_connected_line_update(c, &connected, &update_connected);
}
ast_queue_control(c, AST_CONTROL_ANSWER);
Modified: team/mmichelson/acl-v6/apps/app_alarmreceiver.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/acl-v6/apps/app_alarmreceiver.c?view=diff&rev=276432&r1=276431&r2=276432
==============================================================================
--- team/mmichelson/acl-v6/apps/app_alarmreceiver.c (original)
+++ team/mmichelson/acl-v6/apps/app_alarmreceiver.c Wed Jul 14 13:01:05 2010
@@ -298,18 +298,22 @@
int res = 0;
struct timeval t;
struct ast_tm now;
- char *cl,*cn;
+ char *cl;
+ char *cn;
char workstring[80];
char timestamp[80];
/* Extract the caller ID location */
- if (chan->cid.cid_num)
- ast_copy_string(workstring, chan->cid.cid_num, sizeof(workstring));
- workstring[sizeof(workstring) - 1] = '\0';
-
- ast_callerid_parse(workstring, &cn, &cl);
- if (cl)
- ast_shrink_phone_number(cl);
+ ast_copy_string(workstring,
+ S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, ""),
+ sizeof(workstring));
+ ast_shrink_phone_number(workstring);
+ if (ast_strlen_zero(workstring)) {
+ cl = "<unknown>";
+ } else {
+ cl = workstring;
+ }
+ cn = S_COR(chan->caller.id.name.valid, chan->caller.id.name.str, "<unknown>");
/* Get the current time */
t = ast_tvnow();
@@ -319,27 +323,27 @@
ast_strftime(timestamp, sizeof(timestamp), time_stamp_format, &now);
res = fprintf(logfile, "\n\n[metadata]\n\n");
-
- if (res >= 0)
+ if (res >= 0) {
res = fprintf(logfile, "PROTOCOL=%s\n", signalling_type);
-
- if (res >= 0)
- res = fprintf(logfile, "CALLINGFROM=%s\n", (!cl) ? "<unknown>" : cl);
-
- if (res >- 0)
- res = fprintf(logfile, "CALLERNAME=%s\n", (!cn) ? "<unknown>" : cn);
-
- if (res >= 0)
+ }
+ if (res >= 0) {
+ res = fprintf(logfile, "CALLINGFROM=%s\n", cl);
+ }
+ if (res >= 0) {
+ res = fprintf(logfile, "CALLERNAME=%s\n", cn);
+ }
+ if (res >= 0) {
res = fprintf(logfile, "TIMESTAMP=%s\n\n", timestamp);
-
- if (res >= 0)
+ }
+ if (res >= 0) {
res = fprintf(logfile, "[events]\n\n");
-
+ }
if (res < 0) {
ast_verb(3, "AlarmReceiver: can't write metadata\n");
ast_debug(1,"AlarmReceiver: can't write metadata\n");
- } else
+ } else {
res = 0;
+ }
return res;
}
Modified: team/mmichelson/acl-v6/apps/app_amd.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/acl-v6/apps/app_amd.c?view=diff&rev=276432&r1=276431&r2=276432
==============================================================================
--- team/mmichelson/acl-v6/apps/app_amd.c (original)
+++ team/mmichelson/acl-v6/apps/app_amd.c Wed Jul 14 13:01:05 2010
@@ -188,8 +188,10 @@
AST_APP_ARG(argMaximumWordLength);
);
- ast_verb(3, "AMD: %s %s %s (Fmt: %s)\n", chan->name, chan->cid.cid_ani,
- chan->redirecting.from.number, ast_getformatname(chan->readformat));
+ ast_verb(3, "AMD: %s %s %s (Fmt: %s)\n", chan->name,
+ S_COR(chan->caller.ani.number.valid, chan->caller.ani.number.str, "(N/A)"),
+ S_COR(chan->redirecting.from.number.valid, chan->redirecting.from.number.str, "(N/A)"),
+ ast_getformatname(chan->readformat));
/* Lets parse the arguments. */
if (!ast_strlen_zero(parse)) {
Modified: team/mmichelson/acl-v6/apps/app_dial.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/acl-v6/apps/app_dial.c?view=diff&rev=276432&r1=276431&r2=276432
==============================================================================
--- team/mmichelson/acl-v6/apps/app_dial.c (original)
+++ team/mmichelson/acl-v6/apps/app_dial.c Wed Jul 14 13:01:05 2010
@@ -722,13 +722,6 @@
}
}
-/*! \brief free the buffer if allocated, and set the pointer to the second arg */
-#define S_REPLACE(s, new_val) \
- do { \
- ast_free(s); \
- s = (new_val); \
- } while (0)
-
static int onedigit_goto(struct ast_channel *chan, const char *context, char exten, int pri)
{
char rexten[2] = { exten, '\0' };
@@ -773,9 +766,11 @@
"UniqueID: %s\r\n"
"DestUniqueID: %s\r\n"
"Dialstring: %s\r\n",
- src->name, dst->name, S_OR(src->cid.cid_num, "<unknown>"),
- S_OR(src->cid.cid_name, "<unknown>"), src->uniqueid,
- dst->uniqueid, dialstring ? dialstring : "");
+ src->name, dst->name,
+ S_COR(src->caller.id.number.valid, src->caller.id.number.str, "<unknown>"),
+ S_COR(src->caller.id.name.valid, src->caller.id.name.str, "<unknown>"),
+ src->uniqueid, dst->uniqueid,
+ dialstring ? dialstring : "");
}
static void senddialendevent(struct ast_channel *src, const char *dialstatus)
@@ -859,28 +854,34 @@
ast_rtp_instance_early_bridge_make_compatible(c, in);
}
- ast_channel_set_redirecting(c, &original->redirecting);
+ ast_channel_set_redirecting(c, &original->redirecting, NULL);
ast_channel_lock(c);
while (ast_channel_trylock(in)) {
CHANNEL_DEADLOCK_AVOIDANCE(c);
}
- if (ast_strlen_zero(c->redirecting.from.number)) {
+ if (!c->redirecting.from.number.valid
+ || ast_strlen_zero(c->redirecting.from.number.str)) {
/*
* The call was not previously redirected so it is
* now redirected from this number.
*/
- S_REPLACE(c->redirecting.from.number,
- ast_strdup(S_OR(in->macroexten, in->exten)));
- }
-
- c->cid.cid_tns = in->cid.cid_tns;
+ ast_party_number_free(&c->redirecting.from.number);
+ ast_party_number_init(&c->redirecting.from.number);
+ c->redirecting.from.number.valid = 1;
+ c->redirecting.from.number.str =
+ ast_strdup(S_OR(in->macroexten, in->exten));
+ }
+
+ c->dialed.transit_network_select = in->dialed.transit_network_select;
if (ast_test_flag64(o, OPT_FORCECLID)) {
- S_REPLACE(c->cid.cid_num, ast_strdup(S_OR(in->macroexten, in->exten)));
- S_REPLACE(c->cid.cid_name, NULL);
+ ast_party_id_free(&c->caller.id);
+ ast_party_id_init(&c->caller.id);
+ c->caller.id.number.valid = 1;
+ c->caller.id.number.str = ast_strdup(S_OR(in->macroexten, in->exten));
ast_string_field_set(c, accountcode, c->accountcode);
} else {
- ast_party_caller_copy(&c->cid, &in->cid);
+ ast_party_caller_copy(&c->caller, &in->caller);
ast_string_field_set(c, accountcode, in->accountcode);
}
ast_party_connected_line_copy(&c->connected, &original->connected);
@@ -897,7 +898,7 @@
while (ast_channel_trylock(c)) {
CHANNEL_DEADLOCK_AVOIDANCE(in);
}
- ast_channel_update_redirecting(in, &c->redirecting);
+ ast_channel_update_redirecting(in, &c->redirecting, NULL);
ast_channel_unlock(c);
}
@@ -985,10 +986,10 @@
if (!ast_test_flag64(peerflags, OPT_IGNORE_CONNECTEDLINE) && !ast_test_flag64(outgoing, DIAL_CALLERID_ABSENT)) {
ast_channel_lock(outgoing->chan);
- ast_connected_line_copy_from_caller(&connected_caller, &outgoing->chan->cid);
+ ast_connected_line_copy_from_caller(&connected_caller, &outgoing->chan->caller);
ast_channel_unlock(outgoing->chan);
connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
- ast_channel_update_connected_line(in, &connected_caller);
+ ast_channel_update_connected_line(in, &connected_caller, NULL);
ast_party_connected_line_free(&connected_caller);
}
}
@@ -1045,14 +1046,14 @@
if (!single && !ast_test_flag64(peerflags, OPT_IGNORE_CONNECTEDLINE)) {
if (o->pending_connected_update) {
if (ast_channel_connected_line_macro(c, in, &o->connected, 1, 0)) {
- ast_channel_update_connected_line(in, &o->connected);
+ ast_channel_update_connected_line(in, &o->connected, NULL);
}
} else if (!ast_test_flag64(o, DIAL_CALLERID_ABSENT)) {
ast_channel_lock(c);
- ast_connected_line_copy_from_caller(&connected_caller, &c->cid);
+ ast_connected_line_copy_from_caller(&connected_caller, &c->caller);
ast_channel_unlock(c);
connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
- ast_channel_update_connected_line(in, &connected_caller);
+ ast_channel_update_connected_line(in, &connected_caller, NULL);
ast_party_connected_line_free(&connected_caller);
}
}
@@ -1115,14 +1116,14 @@
if (!single && !ast_test_flag64(peerflags, OPT_IGNORE_CONNECTEDLINE)) {
if (o->pending_connected_update) {
if (ast_channel_connected_line_macro(c, in, &o->connected, 1, 0)) {
- ast_channel_update_connected_line(in, &o->connected);
+ ast_channel_update_connected_line(in, &o->connected, NULL);
}
} else if (!ast_test_flag64(o, DIAL_CALLERID_ABSENT)) {
ast_channel_lock(c);
- ast_connected_line_copy_from_caller(&connected_caller, &c->cid);
+ ast_connected_line_copy_from_caller(&connected_caller, &c->caller);
ast_channel_unlock(c);
connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
- ast_channel_update_connected_line(in, &connected_caller);
+ ast_channel_update_connected_line(in, &connected_caller, NULL);
ast_party_connected_line_free(&connected_caller);
}
}
@@ -1240,7 +1241,7 @@
ast_verb(3, "%s connected line has changed. Saving it until answer for %s\n", c->name, in->name);
ast_party_connected_line_set_init(&connected, &o->connected);
ast_connected_line_parse_data(f->data.ptr, f->datalen, &connected);
- ast_party_connected_line_set(&o->connected, &connected);
+ ast_party_connected_line_set(&o->connected, &connected, NULL);
ast_party_connected_line_free(&connected);
o->pending_connected_update = 1;
} else {
@@ -1617,8 +1618,9 @@
char *l;
int silencethreshold;
- if (!ast_strlen_zero(chan->cid.cid_num)) {
- l = ast_strdupa(chan->cid.cid_num);
+ if (chan->caller.id.number.valid
+ && !ast_strlen_zero(chan->caller.id.number.str)) {
+ l = ast_strdupa(chan->caller.id.number.str);
ast_shrink_phone_number(l);
if (ast_test_flag64(opts, OPT_PRIVACY) ) {
ast_verb(3, "Privacy DB is '%s', clid is '%s'\n", opt_args[OPT_ARG_PRIVACY], l);
@@ -2060,11 +2062,16 @@
memset(&tc->whentohangup, 0, sizeof(tc->whentohangup));
/* If the new channel has no callerid, try to guess what it should be */
- if (ast_strlen_zero(tc->cid.cid_num)) {
- if (!ast_strlen_zero(chan->connected.id.number)) {
- ast_set_callerid(tc, chan->connected.id.number, chan->connected.id.name, chan->connected.ani);
- } else if (!ast_strlen_zero(chan->cid.cid_dnid)) {
- ast_set_callerid(tc, chan->cid.cid_dnid, NULL, NULL);
+ if (!tc->caller.id.number.valid) {
+ if (chan->connected.id.number.valid) {
+ struct ast_party_caller caller;
+
+ ast_party_caller_set_init(&caller, &tc->caller);
+ caller.id = chan->connected.id;
+ caller.ani = chan->connected.ani;
+ ast_channel_set_caller_event(tc, &caller, NULL);
+ } else if (!ast_strlen_zero(chan->dialed.number.str)) {
+ ast_set_callerid(tc, chan->dialed.number.str, NULL, NULL);
} else if (!ast_strlen_zero(S_OR(chan->macroexten, chan->exten))) {
ast_set_callerid(tc, S_OR(chan->macroexten, chan->exten), NULL, NULL);
}
@@ -2076,25 +2083,33 @@
int pres;
ast_party_connected_line_set_init(&connected, &tmp->chan->connected);
- connected.id.number = cid_num;
- connected.id.name = cid_name;
- connected.id.tag = cid_tag;
if (cid_pres) {
pres = ast_parse_caller_presentation(cid_pres);
- if (pres >= 0) {
- connected.id.number_presentation = pres;
+ if (pres < 0) {
+ pres = AST_PRES_ALLOWED_USER_NUMBER_PASSED_SCREEN;
}
} else {
- connected.id.number_presentation = AST_PRES_ALLOWED_USER_NUMBER_PASSED_SCREEN;
- }
- ast_channel_set_connected_line(tmp->chan, &connected);
+ pres = AST_PRES_ALLOWED_USER_NUMBER_PASSED_SCREEN;
+ }
+ if (cid_num) {
+ connected.id.number.valid = 1;
+ connected.id.number.str = cid_num;
+ connected.id.number.presentation = pres;
+ }
+ if (cid_name) {
+ connected.id.name.valid = 1;
+ connected.id.name.str = cid_name;
+ connected.id.name.presentation = pres;
+ }
+ connected.id.tag = cid_tag;
+ ast_channel_set_connected_line(tmp->chan, &connected, NULL);
} else {
- ast_connected_line_copy_from_caller(&tc->connected, &chan->cid);
+ ast_connected_line_copy_from_caller(&tc->connected, &chan->caller);
}
ast_party_redirecting_copy(&tc->redirecting, &chan->redirecting);
- tc->cid.cid_tns = chan->cid.cid_tns;
+ tc->dialed.transit_network_select = chan->dialed.transit_network_select;
if (!ast_strlen_zero(chan->accountcode)) {
ast_string_field_set(tc, peeraccount, chan->accountcode);
@@ -2616,7 +2631,9 @@
strcpy(peer->context, chan->context);
- if (ast_test_flag64(&opts, OPT_PEER_H) && ast_exists_extension(peer, peer->context, "h", 1, peer->cid.cid_num)) {
+ if (ast_test_flag64(&opts, OPT_PEER_H)
+ && ast_exists_extension(peer, peer->context, "h", 1,
+ S_COR(peer->caller.id.number.valid, peer->caller.id.number.str, NULL))) {
int autoloopflag;
int found;
int res9;
@@ -2626,8 +2643,12 @@
autoloopflag = ast_test_flag(peer, AST_FLAG_IN_AUTOLOOP); /* save value to restore at the end */
ast_set_flag(peer, AST_FLAG_IN_AUTOLOOP);
- while ((res9 = ast_spawn_extension(peer, peer->context, peer->exten, peer->priority, peer->cid.cid_num, &found, 1)) == 0)
+ while ((res9 = ast_spawn_extension(peer, peer->context, peer->exten,
+ peer->priority,
+ S_COR(peer->caller.id.number.valid, peer->caller.id.number.str, NULL),
+ &found, 1)) == 0) {
peer->priority++;
+ }
if (found && res9) {
/* Something bad happened, or a hangup has been requested. */
Modified: team/mmichelson/acl-v6/apps/app_directed_pickup.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/acl-v6/apps/app_directed_pickup.c?view=diff&rev=276432&r1=276431&r2=276432
==============================================================================
--- team/mmichelson/acl-v6/apps/app_directed_pickup.c (original)
+++ team/mmichelson/acl-v6/apps/app_directed_pickup.c Wed Jul 14 13:01:05 2010
@@ -111,15 +111,15 @@
ast_party_connected_line_copy(&connected_caller, &target->connected);
connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
if (ast_channel_connected_line_macro(NULL, chan, &connected_caller, 0, 0)) {
- ast_channel_update_connected_line(chan, &connected_caller);
+ ast_channel_update_connected_line(chan, &connected_caller, NULL);
}
ast_party_connected_line_free(&connected_caller);
ast_channel_lock(chan);
- ast_connected_line_copy_from_caller(&connected_caller, &chan->cid);
+ ast_connected_line_copy_from_caller(&connected_caller, &chan->caller);
ast_channel_unlock(chan);
connected_caller.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
- ast_channel_queue_connected_line_update(chan, &connected_caller);
+ ast_channel_queue_connected_line_update(chan, &connected_caller, NULL);
ast_party_connected_line_free(&connected_caller);
if ((res = ast_answer(chan))) {
Modified: team/mmichelson/acl-v6/apps/app_disa.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/acl-v6/apps/app_disa.c?view=diff&rev=276432&r1=276431&r2=276432
==============================================================================
--- team/mmichelson/acl-v6/apps/app_disa.c (original)
+++ team/mmichelson/acl-v6/apps/app_disa.c Wed Jul 14 13:01:05 2010
@@ -308,9 +308,11 @@
}
} else {
if (j == '#') { /* end of extension .. maybe */
- if (i == 0 &&
- (ast_matchmore_extension(chan, args.context, "#", 1, chan->cid.cid_num) ||
- ast_exists_extension(chan, args.context, "#", 1, chan->cid.cid_num)) ) {
+ if (i == 0
+ && (ast_matchmore_extension(chan, args.context, "#", 1,
+ S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))
+ || ast_exists_extension(chan, args.context, "#", 1,
+ S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))) ) {
/* Let the # be the part of, or the entire extension */
} else {
break;
@@ -340,7 +342,8 @@
}
/* if can do some more, do it */
- if (!ast_matchmore_extension(chan,args.context,exten,1, chan->cid.cid_num)) {
+ if (!ast_matchmore_extension(chan, args.context, exten, 1,
+ S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))) {
break;
}
}
@@ -352,13 +355,16 @@
int recheck = 0;
struct ast_flags cdr_flags = { AST_CDR_FLAG_POSTED };
- if (!ast_exists_extension(chan, args.context, exten, 1, chan->cid.cid_num)) {
+ if (!ast_exists_extension(chan, args.context, exten, 1,
+ S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))) {
pbx_builtin_setvar_helper(chan, "INVALID_EXTEN", exten);
exten[0] = 'i';
exten[1] = '\0';
recheck = 1;
}
- if (!recheck || ast_exists_extension(chan, args.context, exten, 1, chan->cid.cid_num)) {
+ if (!recheck
+ || ast_exists_extension(chan, args.context, exten, 1,
+ S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))) {
ast_playtones_stop(chan);
/* We're authenticated and have a target extension */
if (!ast_strlen_zero(args.cid)) {
Modified: team/mmichelson/acl-v6/apps/app_dumpchan.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/acl-v6/apps/app_dumpchan.c?view=diff&rev=276432&r1=276431&r2=276432
==============================================================================
--- team/mmichelson/acl-v6/apps/app_dumpchan.c (original)
+++ team/mmichelson/acl-v6/apps/app_dumpchan.c Wed Jul 14 13:01:05 2010
@@ -116,10 +116,10 @@
c->name,
c->tech->type,
c->uniqueid,
- S_OR(c->cid.cid_num, "(N/A)"),
- S_OR(c->cid.cid_name, "(N/A)"),
- S_OR(c->cid.cid_dnid, "(N/A)"),
- S_OR(c->redirecting.from.number, "(N/A)"),
+ S_COR(c->caller.id.number.valid, c->caller.id.number.str, "(N/A)"),
+ S_COR(c->caller.id.name.valid, c->caller.id.name.str, "(N/A)"),
+ S_OR(c->dialed.number.str, "(N/A)"),
+ S_COR(c->redirecting.from.number.valid, c->redirecting.from.number.str, "(N/A)"),
c->parkinglot,
c->language,
ast_state2str(c->_state),
Modified: team/mmichelson/acl-v6/apps/app_fax.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/acl-v6/apps/app_fax.c?view=diff&rev=276432&r1=276431&r2=276432
==============================================================================
--- team/mmichelson/acl-v6/apps/app_fax.c (original)
+++ team/mmichelson/acl-v6/apps/app_fax.c Wed Jul 14 13:01:05 2010
@@ -251,25 +251,25 @@
ast_debug(1, " Transfer Rate: %d\n", stat.bit_rate);
ast_manager_event(s->chan, EVENT_FLAG_CALL,
- s->direction ? "FaxSent" : "FaxReceived",
- "Channel: %s\r\n"
- "Exten: %s\r\n"
- "CallerID: %s\r\n"
- "RemoteStationID: %s\r\n"
- "LocalStationID: %s\r\n"
- "PagesTransferred: %d\r\n"
- "Resolution: %d\r\n"
- "TransferRate: %d\r\n"
- "FileName: %s\r\n",
- s->chan->name,
- s->chan->exten,
- S_OR(s->chan->cid.cid_num, ""),
- far_ident,
- local_ident,
- pages_transferred,
- stat.y_resolution,
- stat.bit_rate,
- s->file_name);
+ s->direction ? "FaxSent" : "FaxReceived",
+ "Channel: %s\r\n"
+ "Exten: %s\r\n"
+ "CallerID: %s\r\n"
+ "RemoteStationID: %s\r\n"
+ "LocalStationID: %s\r\n"
+ "PagesTransferred: %d\r\n"
+ "Resolution: %d\r\n"
+ "TransferRate: %d\r\n"
+ "FileName: %s\r\n",
+ s->chan->name,
+ s->chan->exten,
+ S_COR(s->chan->caller.id.number.valid, s->chan->caller.id.number.str, ""),
+ far_ident,
+ local_ident,
+ pages_transferred,
+ stat.y_resolution,
+ stat.bit_rate,
+ s->file_name);
}
/* === Helper functions to configure fax === */
Modified: team/mmichelson/acl-v6/apps/app_followme.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/acl-v6/apps/app_followme.c?view=diff&rev=276432&r1=276431&r2=276432
==============================================================================
--- team/mmichelson/acl-v6/apps/app_followme.c (original)
+++ team/mmichelson/acl-v6/apps/app_followme.c Wed Jul 14 13:01:05 2010
@@ -838,7 +838,10 @@
outbound = ast_request("Local", ast_best_codec(caller->nativeformats), caller, dialarg, &dg);
if (outbound) {
- ast_set_callerid(outbound, caller->cid.cid_num, caller->cid.cid_name, caller->cid.cid_num);
+ ast_set_callerid(outbound,
+ S_COR(caller->caller.id.number.valid, caller->caller.id.number.str, NULL),
+ S_COR(caller->caller.id.name.valid, caller->caller.id.name.str, NULL),
+ S_COR(caller->caller.id.number.valid, caller->caller.id.number.str, NULL));
ast_channel_inherit_variables(tpargs->chan, outbound);
ast_channel_datastore_inherit(tpargs->chan, outbound);
ast_string_field_set(outbound, language, tpargs->chan->language);
Modified: team/mmichelson/acl-v6/apps/app_macro.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/acl-v6/apps/app_macro.c?view=diff&rev=276432&r1=276431&r2=276432
==============================================================================
--- team/mmichelson/acl-v6/apps/app_macro.c (original)
+++ team/mmichelson/acl-v6/apps/app_macro.c Wed Jul 14 13:01:05 2010
@@ -298,7 +298,8 @@
}
snprintf(fullmacro, sizeof(fullmacro), "macro-%s", macro);
- if (!ast_exists_extension(chan, fullmacro, "s", 1, chan->cid.cid_num)) {
+ if (!ast_exists_extension(chan, fullmacro, "s", 1,
+ S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))) {
if (!ast_context_find(fullmacro))
ast_log(LOG_WARNING, "No such context '%s' for macro '%s'\n", fullmacro, macro);
else
@@ -370,7 +371,8 @@
ast_channel_unlock(chan);
autoloopflag = ast_test_flag(chan, AST_FLAG_IN_AUTOLOOP);
ast_set_flag(chan, AST_FLAG_IN_AUTOLOOP);
- while(ast_exists_extension(chan, chan->context, chan->exten, chan->priority, chan->cid.cid_num)) {
+ while (ast_exists_extension(chan, chan->context, chan->exten, chan->priority,
+ S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))) {
struct ast_context *c;
struct ast_exten *e;
int foundx;
@@ -386,7 +388,8 @@
if (ast_rdlock_context(c)) {
ast_log(LOG_WARNING, "Unable to lock context?\n");
} else {
- e = find_matching_priority(c, chan->exten, chan->priority, chan->cid.cid_num);
+ e = find_matching_priority(c, chan->exten, chan->priority,
+ S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL));
if (e) { /* This will only be undefined for pbx_realtime, which is majorly broken. */
ast_copy_string(runningapp, ast_get_extension_app(e), sizeof(runningapp));
ast_copy_string(runningdata, ast_get_extension_app_data(e), sizeof(runningdata));
@@ -402,7 +405,10 @@
/* Reset the macro depth, if it was changed in the last iteration */
pbx_builtin_setvar_helper(chan, "MACRO_DEPTH", depthc);
- if ((res = ast_spawn_extension(chan, chan->context, chan->exten, chan->priority, chan->cid.cid_num, &foundx,1))) {
+ res = ast_spawn_extension(chan, chan->context, chan->exten, chan->priority,
+ S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL),
+ &foundx, 1);
+ if (res) {
/* Something bad happened, or a hangup has been requested. */
if (((res >= '0') && (res <= '9')) || ((res >= 'A') && (res <= 'F')) ||
(res == '*') || (res == '#')) {
@@ -544,7 +550,9 @@
/* Handle macro offset if it's set by checking the availability of step n + offset + 1, otherwise continue
normally if there is any problem */
if (sscanf(offsets, "%30d", &offset) == 1) {
- if (ast_exists_extension(chan, chan->context, chan->exten, chan->priority + offset + 1, chan->cid.cid_num)) {
+ if (ast_exists_extension(chan, chan->context, chan->exten,
+ chan->priority + offset + 1,
+ S_COR(chan->caller.id.number.valid, chan->caller.id.number.str, NULL))) {
chan->priority += offset;
}
}
Modified: team/mmichelson/acl-v6/apps/app_meetme.c
URL: http://svnview.digium.com/svn/asterisk/team/mmichelson/acl-v6/apps/app_meetme.c?view=diff&rev=276432&r1=276431&r2=276432
==============================================================================
--- team/mmichelson/acl-v6/apps/app_meetme.c (original)
+++ team/mmichelson/acl-v6/apps/app_meetme.c Wed Jul 14 13:01:05 2010
@@ -724,7 +724,7 @@
struct ast_frame *transframe[32];
struct ast_frame *origframe;
struct ast_trans_pvt *transpath[32];
- AST_LIST_HEAD_NOLOCK(, ast_conf_user) userlist;
+ struct ao2_container *usercontainer;
AST_LIST_ENTRY(ast_conference) list;
/* announce_thread related data */
pthread_t announcethread;
@@ -1133,6 +1133,30 @@
ast_autoservice_stop(chan);
}
+static int user_no_cmp(void *obj, void *arg, int flags)
+{
+ struct ast_conf_user *user = obj;
+ int *user_no = arg;
+
+ if (user->user_no == *user_no) {
+ return (CMP_MATCH | CMP_STOP);
+ }
+
+ return 0;
+}
+
+static int user_max_cmp(void *obj, void *arg, int flags)
+{
+ struct ast_conf_user *user = obj;
+ int *max_no = arg;
+
+ if (user->user_no > *max_no) {
+ *max_no = user->user_no;
+ }
+
+ return 0;
+}
+
/*!
* \brief Find or create a conference
*
@@ -1166,8 +1190,10 @@
goto cnfout;
/* Make a new one */
- if (!(cnf = ast_calloc(1, sizeof(*cnf))))
+ if (!(cnf = ast_calloc(1, sizeof(*cnf))) ||
+ !(cnf->usercontainer = ao2_container_alloc(1, NULL, user_no_cmp))) {
goto cnfout;
+ }
ast_mutex_init(&cnf->playlock);
ast_mutex_init(&cnf->listenlock);
@@ -1292,15 +1318,21 @@
}
if (cnf) {
- /* Search for the user */
- AST_LIST_TRAVERSE(&cnf->userlist, usr, list) {
+ struct ao2_iterator user_iter;
+ user_iter = ao2_iterator_init(cnf->usercontainer, 0);
+
+ while((usr = ao2_iterator_next(&user_iter))) {
snprintf(usrno, sizeof(usrno), "%d", usr->user_no);
- if (!strncasecmp(word, usrno, len) && ++which > state)
+ if (!strncasecmp(word, usrno, len) && ++which > state) {
+ ao2_ref(usr, -1);
break;
+ }
+ ao2_ref(usr, -1);
}
- }
- AST_LIST_UNLOCK(&confs);
- return usr ? ast_strdup(usrno) : NULL;
+ ao2_iterator_destroy(&user_iter);
+ AST_LIST_UNLOCK(&confs);
+ return usr ? ast_strdup(usrno) : NULL;
+ }
}
}
@@ -1387,6 +1419,7 @@
ast_free(cmdline);
return CLI_SUCCESS;
} else if (strcmp(a->argv[1], "list") == 0) {
+ struct ao2_iterator user_iter;
int concise = (a->argc == 4 && (!strcasecmp(a->argv[3], "concise")));
/* List all the users in a conference */
if (AST_LIST_EMPTY(&confs)) {
@@ -1412,15 +1445,16 @@
}
/* Show all the users */
time(&now);
- AST_LIST_TRAVERSE(&cnf->userlist, user, list) {
+ user_iter = ao2_iterator_init(cnf->usercontainer, 0);
+ while((user = ao2_iterator_next(&user_iter))) {
hr = (now - user->jointime) / 3600;
min = ((now - user->jointime) % 3600) / 60;
sec = (now - user->jointime) % 60;
if (!concise) {
ast_cli(a->fd, "User #: %-2.2d %12.12s %-20.20s Channel: %s %s %s %s %s %s %02d:%02d:%02d\n",
user->user_no,
- S_OR(user->chan->cid.cid_num, "<unknown>"),
- S_OR(user->chan->cid.cid_name, "<no name>"),
+ S_COR(user->chan->caller.id.number.valid, user->chan->caller.id.number.str, "<unknown>"),
+ S_COR(user->chan->caller.id.name.valid, user->chan->caller.id.name.str, "<no name>"),
user->chan->name,
ast_test_flag64(&user->userflags, CONFFLAG_ADMIN) ? "(Admin)" : "",
ast_test_flag64(&user->userflags, CONFFLAG_MONITOR) ? "(Listen only)" : "",
@@ -1430,8 +1464,8 @@
} else {
ast_cli(a->fd, "%d!%s!%s!%s!%s!%s!%s!%s!%d!%02d:%02d:%02d\n",
user->user_no,
- S_OR(user->chan->cid.cid_num, ""),
- S_OR(user->chan->cid.cid_name, ""),
+ S_COR(user->chan->caller.id.number.valid, user->chan->caller.id.number.str, ""),
+ S_COR(user->chan->caller.id.name.valid, user->chan->caller.id.name.str, ""),
user->chan->name,
ast_test_flag64(&user->userflags, CONFFLAG_ADMIN) ? "1" : "",
ast_test_flag64(&user->userflags, CONFFLAG_MONITOR) ? "1" : "",
@@ -1439,7 +1473,9 @@
user->adminflags & ADMINFLAG_T_REQUEST ? "1" : "",
[... 13209 lines stripped ...]
More information about the asterisk-commits
mailing list