[svn-commits] rmudgett: branch rmudgett/cid r264382 - in /team/rmudgett/cid: addons/ apps/ ...
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Wed May 19 15:26:55 CDT 2010
Author: rmudgett
Date: Wed May 19 15:26:49 2010
New Revision: 264382
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=264382
Log:
* Eliminated uses of the following old ast_party_id members:
number, name, number_type, and number_presentation.
* Made ast_party_id, ast_party_name, ast_party_number, ast_party_called,
ast_party_redirecting, and ast_party_dialed helper functions public.
* Created ast_channel_set_caller() and ast_channel_set_caller_event() to
use in place of ast_set_callerid().
Modified:
team/rmudgett/cid/addons/chan_ooh323.c
team/rmudgett/cid/apps/app_amd.c
team/rmudgett/cid/apps/app_dial.c
team/rmudgett/cid/apps/app_dumpchan.c
team/rmudgett/cid/apps/app_queue.c
team/rmudgett/cid/channels/chan_dahdi.c
team/rmudgett/cid/channels/chan_h323.c
team/rmudgett/cid/channels/chan_iax2.c
team/rmudgett/cid/channels/chan_mgcp.c
team/rmudgett/cid/channels/chan_misdn.c
team/rmudgett/cid/channels/chan_oss.c
team/rmudgett/cid/channels/chan_phone.c
team/rmudgett/cid/channels/chan_sip.c
team/rmudgett/cid/channels/chan_skinny.c
team/rmudgett/cid/channels/chan_unistim.c
team/rmudgett/cid/channels/sig_analog.c
team/rmudgett/cid/channels/sig_pri.c
team/rmudgett/cid/funcs/func_callerid.c
team/rmudgett/cid/funcs/func_connectedline.c
team/rmudgett/cid/funcs/func_redirecting.c
team/rmudgett/cid/include/asterisk/channel.h
team/rmudgett/cid/main/cel.c
team/rmudgett/cid/main/channel.c
team/rmudgett/cid/res/res_agi.c
team/rmudgett/cid/res/snmp/agent.c
Modified: team/rmudgett/cid/addons/chan_ooh323.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/addons/chan_ooh323.c?view=diff&rev=264382&r1=264381&r2=264382
==============================================================================
--- team/rmudgett/cid/addons/chan_ooh323.c (original)
+++ team/rmudgett/cid/addons/chan_ooh323.c Wed May 19 15:26:49 2010
@@ -919,24 +919,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.XXX_number.valid && ast->connected.id.XXX_number.str) {
+ free(p->callerid_num);
+ p->callerid_num = strdup(ast->connected.id.XXX_number.str);
+ }
+
+ if (ast->connected.id.XXX_name.valid && ast->connected.id.XXX_name.str) {
+ free(p->callerid_name);
+ p->callerid_name = strdup(ast->connected.id.XXX_name.str);
+ } else if (ast->connected.id.XXX_number.valid && ast->connected.id.XXX_number.str) {
+ free(p->callerid_name);
+ p->callerid_name = strdup(ast->connected.id.XXX_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.XXX_name.valid = 1;
+ free(ast->connected.id.XXX_name.str);
+ ast->connected.id.XXX_name.str = strdup(gCallerID);
+ free(p->callerid_name);
+ p->callerid_name = strdup(ast->connected.id.XXX_name.str);
}
/* Retrieve vars */
@@ -1239,10 +1238,13 @@
ast_rtp_instance_change_source(p->rtp);
break;
case AST_CONTROL_CONNECTED_LINE:
+ if (!ast->connected.id.XXX_name.valid || !ast->connected.id.XXX_name.str) {
+ break;
+ }
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);
+ callToken, ast->connected.id.XXX_name.str);
+ ooSetANI(callToken, ast->connected.id.XXX_name.str);
break;
case AST_CONTROL_T38_PARAMETERS:
@@ -1535,7 +1537,8 @@
if (call->remoteDisplayName) {
struct ast_party_connected_line connected;
ast_party_connected_line_init(&connected);
- connected.id.name = (char *) call->remoteDisplayName;
+ connected.id.XXX_name.valid = 1;
+ connected.id.XXX_name.str = (char *) call->remoteDisplayName;
connected.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
ast_channel_queue_connected_line_update(c, &connected);
}
@@ -1586,7 +1589,8 @@
if (call->remoteDisplayName) {
struct ast_party_connected_line connected;
ast_party_connected_line_init(&connected);
- connected.id.name = (char *) call->remoteDisplayName;
+ connected.id.XXX_name.valid = 1;
+ connected.id.XXX_name.str = (char *) call->remoteDisplayName;
connected.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
ast_channel_queue_connected_line_update(c, &connected);
}
@@ -1979,7 +1983,8 @@
if (call->remoteDisplayName) {
struct ast_party_connected_line connected;
ast_party_connected_line_init(&connected);
- connected.id.name = (char *) call->remoteDisplayName;
+ connected.id.XXX_name.valid = 1;
+ connected.id.XXX_name.str = (char *) call->remoteDisplayName;
connected.source = AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER;
ast_channel_queue_connected_line_update(c, &connected);
}
Modified: team/rmudgett/cid/apps/app_amd.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/apps/app_amd.c?view=diff&rev=264382&r1=264381&r2=264382
==============================================================================
--- team/rmudgett/cid/apps/app_amd.c (original)
+++ team/rmudgett/cid/apps/app_amd.c Wed May 19 15:26:49 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_OR(chan->caller.ani, "(N/A)"),
+ S_COR(chan->redirecting.from.XXX_number.valid, chan->redirecting.from.XXX_number.str, "(N/A)"),
+ ast_getformatname(chan->readformat));
/* Lets parse the arguments. */
if (!ast_strlen_zero(parse)) {
Modified: team/rmudgett/cid/apps/app_dial.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/apps/app_dial.c?view=diff&rev=264382&r1=264381&r2=264382
==============================================================================
--- team/rmudgett/cid/apps/app_dial.c (original)
+++ team/rmudgett/cid/apps/app_dial.c Wed May 19 15:26:49 2010
@@ -717,13 +717,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' };
@@ -859,20 +852,26 @@
while (ast_channel_trylock(in)) {
CHANNEL_DEADLOCK_AVOIDANCE(c);
}
- if (ast_strlen_zero(c->redirecting.from.number)) {
+ if (!c->redirecting.from.XXX_number.valid
+ || ast_strlen_zero(c->redirecting.from.XXX_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)));
+ ast_party_number_free(&c->redirecting.from.XXX_number);
+ ast_party_number_init(&c->redirecting.from.XXX_number);
+ c->redirecting.from.XXX_number.valid = 1;
+ c->redirecting.from.XXX_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.XXX_number.valid = 1;
+ c->caller.id.XXX_number.str = ast_strdup(S_OR(in->macroexten, in->exten));
ast_string_field_set(c, accountcode, c->accountcode);
} else {
ast_party_caller_copy(&c->caller, &in->caller);
@@ -1920,12 +1919,10 @@
datastore = ast_channel_datastore_find(chan, &dialed_interface_info, NULL);
/* If the incoming channel has previously had connected line information
* set on it (perhaps through the CONNECTED_LINE dialplan function) then
- * seed the calllist's connected line information with this previously
+ * seed the chanlist's connected line information with this previously
* acquired info
*/
- if (chan->connected.id.number) {
- ast_party_connected_line_copy(&tmp->connected, &chan->connected);
- }
+ ast_party_connected_line_copy(&tmp->connected, &chan->connected);
ast_channel_unlock(chan);
if (datastore)
@@ -2026,9 +2023,14 @@
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);
+ if (!tc->caller.id.XXX_number.valid) {
+ if (chan->connected.id.XXX_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);
} else if (chan->dialed.number.valid
&& !ast_strlen_zero(chan->dialed.number.str)) {
ast_set_callerid(tc, chan->dialed.number.str, NULL, NULL);
@@ -2043,17 +2045,25 @@
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;
- }
+ pres = AST_PRES_ALLOWED_USER_NUMBER_PASSED_SCREEN;
+ }
+ if (cid_num) {
+ connected.id.XXX_number.valid = 1;
+ connected.id.XXX_number.str = cid_num;
+ connected.id.XXX_number.presentation = pres;
+ }
+ if (cid_name) {
+ connected.id.XXX_name.valid = 1;
+ connected.id.XXX_name.str = cid_name;
+ connected.id.XXX_name.presentation = pres;
+ }
+ connected.id.tag = cid_tag;
ast_channel_set_connected_line(tmp->chan, &connected);
} else {
ast_connected_line_copy_from_caller(&tc->connected, &chan->caller);
Modified: team/rmudgett/cid/apps/app_dumpchan.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/apps/app_dumpchan.c?view=diff&rev=264382&r1=264381&r2=264382
==============================================================================
--- team/rmudgett/cid/apps/app_dumpchan.c (original)
+++ team/rmudgett/cid/apps/app_dumpchan.c Wed May 19 15:26:49 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_COR(c->caller.id.XXX_number.valid, c->caller.id.XXX_number.str, "(N/A)"),
+ S_COR(c->caller.id.XXX_name.valid, c->caller.id.XXX_name.str, "(N/A)"),
S_COR(c->dialed.number.valid, c->dialed.number.str, "(N/A)"),
- S_OR(c->redirecting.from.number, "(N/A)"),
+ S_COR(c->redirecting.from.XXX_number.valid, c->redirecting.from.XXX_number.str, "(N/A)"),
c->parkinglot,
c->language,
ast_state2str(c->_state),
Modified: team/rmudgett/cid/apps/app_queue.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/apps/app_queue.c?view=diff&rev=264382&r1=264381&r2=264382
==============================================================================
--- team/rmudgett/cid/apps/app_queue.c (original)
+++ team/rmudgett/cid/apps/app_queue.c Wed May 19 15:26:49 2010
@@ -2861,10 +2861,14 @@
memset(&tmp->chan->whentohangup, 0, sizeof(tmp->chan->whentohangup));
/* If the new channel has no callerid, try to guess what it should be */
- if (ast_strlen_zero(tmp->chan->cid.cid_num)) {
- if (!ast_strlen_zero(qe->chan->connected.id.number)) {
- ast_set_callerid(tmp->chan, qe->chan->connected.id.number, qe->chan->connected.id.name, qe->chan->connected.ani);
- tmp->chan->cid.cid_pres = qe->chan->connected.id.number_presentation;
+ if (!tmp->chan->caller.id.XXX_number.valid) {
+ if (qe->chan->connected.id.XXX_number.valid) {
+ struct ast_party_caller caller;
+
+ ast_party_caller_set_init(&caller, &tmp->chan->caller);
+ caller.id = qe->chan->connected.id;
+ caller.ani = qe->chan->connected.ani;
+ ast_channel_set_caller_event(tmp->chan, &caller);
} else if (qe->chan->dialed.number.valid
&& !ast_strlen_zero(qe->chan->dialed.number.str)) {
ast_set_callerid(tmp->chan, qe->chan->dialed.number.str, NULL, NULL);
@@ -3360,13 +3364,16 @@
ast_string_field_set(o->chan, accountcode, in->accountcode);
ast_channel_set_redirecting(o->chan, &original->redirecting);
- if (ast_strlen_zero(o->chan->redirecting.from.number)) {
+ if (!o->chan->redirecting.from.XXX_number.valid
+ || ast_strlen_zero(o->chan->redirecting.from.XXX_number.str)) {
/*
* The call was not previously redirected so it is
* now redirected from this number.
*/
- ast_free(o->chan->redirecting.from.number);
- o->chan->redirecting.from.number =
+ ast_party_number_free(&o->chan->redirecting.from.XXX_number);
+ ast_party_number_init(&o->chan->redirecting.from.XXX_number);
+ o->chan->redirecting.from.XXX_number.valid = 1;
+ o->chan->redirecting.from.XXX_number.str =
ast_strdup(S_OR(in->macroexten, in->exten));
}
@@ -4239,9 +4246,7 @@
* to seed the connected line information. It may, of course, be updated
* during the call
*/
- if (qe->chan->connected.id.number) {
- ast_party_connected_line_copy(&tmp->connected, &qe->chan->connected);
- }
+ ast_party_connected_line_copy(&tmp->connected, &qe->chan->connected);
ast_channel_unlock(qe->chan);
if (di) {
Modified: team/rmudgett/cid/channels/chan_dahdi.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/channels/chan_dahdi.c?view=diff&rev=264382&r1=264381&r2=264382
==============================================================================
--- team/rmudgett/cid/channels/chan_dahdi.c (original)
+++ team/rmudgett/cid/channels/chan_dahdi.c Wed May 19 15:26:49 2010
@@ -2801,16 +2801,20 @@
{
struct dahdi_pvt *p = pvt;
- ast_copy_string(p->cid_num, S_OR(caller->id.number, ""), sizeof(p->cid_num));
- ast_copy_string(p->cid_name, S_OR(caller->id.name, ""), sizeof(p->cid_name));
+ ast_copy_string(p->cid_num,
+ S_COR(caller->id.XXX_number.valid, caller->id.XXX_number.str, ""),
+ sizeof(p->cid_num));
+ ast_copy_string(p->cid_name,
+ S_COR(caller->id.XXX_name.valid, caller->id.XXX_name.str, ""),
+ sizeof(p->cid_name));
if (caller->id.subaddress.valid) {
ast_copy_string(p->cid_subaddr, S_OR(caller->id.subaddress.str, ""),
sizeof(p->cid_subaddr));
} else {
p->cid_subaddr[0] = '\0';
}
- p->cid_ton = caller->id.number_type;
- p->callingpres = caller->id.number_presentation;
+ p->cid_ton = caller->id.XXX_number.plan;
+ p->callingpres = ast_party_id_presentation(&caller->id);
ast_copy_string(p->cid_ani, S_OR(caller->ani, ""), sizeof(p->cid_ani));
p->cid_ani2 = caller->ani2;
}
@@ -4926,7 +4930,7 @@
}
if (!p->hidecallerid) {
- l = ast->connected.id.number;
+ l = ast->connected.id.XXX_number.valid ? ast->connected.id.XXX_number.str : NULL;
} else {
l = NULL;
}
@@ -4975,8 +4979,8 @@
}
}
isup_set_calling(p->ss7call, l ? (l + calling_nai_strip) : NULL, ss7_calling_nai,
- p->use_callingpres ? cid_pres2ss7pres(ast->connected.id.number_presentation) : (l ? SS7_PRESENTATION_ALLOWED : SS7_PRESENTATION_RESTRICTED),
- p->use_callingpres ? cid_pres2ss7screen(ast->connected.id.number_presentation) : SS7_SCREENING_USER_PROVIDED );
+ p->use_callingpres ? cid_pres2ss7pres(ast->connected.id.XXX_number.presentation) : (l ? SS7_PRESENTATION_ALLOWED : SS7_PRESENTATION_RESTRICTED),
+ p->use_callingpres ? cid_pres2ss7screen(ast->connected.id.XXX_number.presentation) : SS7_SCREENING_USER_PROVIDED );
isup_set_oli(p->ss7call, ast->connected.ani2);
isup_init_call(p->ss7->ss7, p->ss7call, p->cic, p->dpc);
@@ -9018,8 +9022,10 @@
tmp->adsicpe = AST_ADSI_UNAVAILABLE;
if (!ast_strlen_zero(i->exten))
ast_copy_string(tmp->exten, i->exten, sizeof(tmp->exten));
- if (!ast_strlen_zero(i->rdnis))
- tmp->redirecting.from.number = ast_strdup(i->rdnis);
+ if (!ast_strlen_zero(i->rdnis)) {
+ tmp->redirecting.from.XXX_number.valid = 1;
+ tmp->redirecting.from.XXX_number.str = ast_strdup(i->rdnis);
+ }
if (!ast_strlen_zero(i->dnid)) {
tmp->dialed.number.valid = 1;
tmp->dialed.number.str = ast_strdup(i->dnid);
@@ -9029,16 +9035,17 @@
* generate a needless NewCallerID event */
#ifdef PRI_ANI
if (!ast_strlen_zero(i->cid_ani))
- tmp->cid.cid_ani = ast_strdup(i->cid_ani);
+ tmp->caller.ani = ast_strdup(i->cid_ani);
else
- tmp->cid.cid_ani = ast_strdup(i->cid_num);
+ tmp->caller.ani = ast_strdup(i->cid_num);
#else
- tmp->cid.cid_ani = ast_strdup(i->cid_num);
+ tmp->caller.ani = ast_strdup(i->cid_num);
#endif
- tmp->cid.cid_pres = i->callingpres;
- tmp->cid.cid_ton = i->cid_ton;
- tmp->cid.cid_ani2 = i->cid_ani2;
- tmp->cid.cid_tag = ast_strdup(i->cid_tag);
+ tmp->caller.id.XXX_name.presentation = i->callingpres;
+ tmp->caller.id.XXX_number.presentation = i->callingpres;
+ tmp->caller.id.XXX_number.plan = i->cid_ton;
+ tmp->caller.ani2 = i->cid_ani2;
+ tmp->caller.id.tag = ast_strdup(i->cid_tag);
#if defined(HAVE_SS7)
tmp->transfercapability = transfercapability;
pbx_builtin_setvar_helper(tmp, "TRANSFERCAPABILITY", ast_transfercapability2str(transfercapability));
Modified: team/rmudgett/cid/channels/chan_h323.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/channels/chan_h323.c?view=diff&rev=264382&r1=264381&r2=264382
==============================================================================
--- team/rmudgett/cid/channels/chan_h323.c (original)
+++ team/rmudgett/cid/channels/chan_h323.c Wed May 19 15:26:49 2010
@@ -609,18 +609,20 @@
/* make sure null terminated */
called_addr[sizeof(called_addr) - 1] = '\0';
- if (c->connected.id.number)
- ast_copy_string(pvt->options.cid_num, c->connected.id.number, sizeof(pvt->options.cid_num));
-
- if (c->connected.id.name)
- ast_copy_string(pvt->options.cid_name, c->connected.id.name, sizeof(pvt->options.cid_name));
-
- if (c->redirecting.from.number) {
- ast_copy_string(pvt->options.cid_rdnis, c->redirecting.from.number, sizeof(pvt->options.cid_rdnis));
- }
-
- pvt->options.presentation = c->connected.id.number_presentation;
- pvt->options.type_of_number = c->connected.id.number_type;
+ if (c->connected.id.XXX_number.valid && c->connected.id.XXX_number.str) {
+ ast_copy_string(pvt->options.cid_num, c->connected.id.XXX_number.str, sizeof(pvt->options.cid_num));
+ }
+
+ if (c->connected.id.XXX_name.valid && c->connected.id.XXX_name.str) {
+ ast_copy_string(pvt->options.cid_name, c->connected.id.XXX_name.str, sizeof(pvt->options.cid_name));
+ }
+
+ if (c->redirecting.from.XXX_number.valid && c->redirecting.from.XXX_number.str) {
+ ast_copy_string(pvt->options.cid_rdnis, c->redirecting.from.XXX_number.str, sizeof(pvt->options.cid_rdnis));
+ }
+
+ pvt->options.presentation = ast_party_id_presentation(c->connected.id);
+ pvt->options.type_of_number = c->connected.id.XXX_number.plan;
if ((addr = pbx_builtin_getvar_helper(c, "PRIREDIRECTREASON"))) {
if (!strcasecmp(addr, "UNKNOWN"))
@@ -1075,14 +1077,16 @@
/* Don't use ast_set_callerid() here because it will
* generate a needless NewCallerID event */
- ch->cid.cid_ani = ast_strdup(cid_num);
+ ch->caller.ani = ast_strdup(cid_num);
if (pvt->cd.redirect_reason >= 0) {
- ch->redirecting.from.number = ast_strdup(pvt->cd.redirect_number);
+ ch->redirecting.from.XXX_number.valid = 1;
+ ch->redirecting.from.XXX_number.str = ast_strdup(pvt->cd.redirect_number);
pbx_builtin_setvar_helper(ch, "PRIREDIRECTREASON", redirectingreason2str(pvt->cd.redirect_reason));
}
- ch->cid.cid_pres = pvt->cd.presentation;
- ch->cid.cid_ton = pvt->cd.type_of_number;
+ ch->caller.id.XXX_name.presentation = pvt->cd.presentation;
+ ch->caller.id.XXX_number.presentation = pvt->cd.presentation;
+ ch->caller.id.XXX_number.plan = pvt->cd.type_of_number;
if (!ast_strlen_zero(pvt->exten) && strcmp(pvt->exten, "s")) {
ch->dialed.number.valid = 1;
Modified: team/rmudgett/cid/channels/chan_iax2.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/channels/chan_iax2.c?view=diff&rev=264382&r1=264381&r2=264382
==============================================================================
--- team/rmudgett/cid/channels/chan_iax2.c (original)
+++ team/rmudgett/cid/channels/chan_iax2.c Wed May 19 15:26:49 2010
@@ -4913,8 +4913,8 @@
if (pds.port)
sin.sin_port = htons(atoi(pds.port));
- l = c->connected.id.number;
- n = c->connected.id.name;
+ l = c->connected.id.XXX_number.valid ? c->connected.id.XXX_number.str : NULL;
+ n = c->connected.id.XXX_name.valid ? c->connected.id.XXX_name.str : NULL;
/* Now build request */
memset(&ied, 0, sizeof(ied));
@@ -4932,15 +4932,16 @@
if (l) {
iax_ie_append_str(&ied, IAX_IE_CALLING_NUMBER, l);
- iax_ie_append_byte(&ied, IAX_IE_CALLINGPRES, c->connected.id.number_presentation);
+ iax_ie_append_byte(&ied, IAX_IE_CALLINGPRES,
+ ast_party_id_presentation(&c->connected.id));
+ } else if (n) {
+ iax_ie_append_byte(&ied, IAX_IE_CALLINGPRES,
+ ast_party_id_presentation(&c->connected.id));
} else {
- if (n)
- iax_ie_append_byte(&ied, IAX_IE_CALLINGPRES, c->connected.id.number_presentation);
- else
- iax_ie_append_byte(&ied, IAX_IE_CALLINGPRES, AST_PRES_NUMBER_NOT_AVAILABLE);
- }
-
- iax_ie_append_byte(&ied, IAX_IE_CALLINGTON, c->connected.id.number_type);
+ iax_ie_append_byte(&ied, IAX_IE_CALLINGPRES, AST_PRES_NUMBER_NOT_AVAILABLE);
+ }
+
+ iax_ie_append_byte(&ied, IAX_IE_CALLINGTON, c->connected.id.XXX_number.plan);
iax_ie_append_short(&ied, IAX_IE_CALLINGTNS, c->dialed.transit_network_select);
if (n)
@@ -4953,8 +4954,10 @@
if (c->dialed.number.valid && !ast_strlen_zero(c->dialed.number.str)) {
iax_ie_append_str(&ied, IAX_IE_DNID, c->dialed.number.str);
}
- if (!ast_strlen_zero(c->redirecting.from.number))
- iax_ie_append_str(&ied, IAX_IE_RDNIS, c->redirecting.from.number);
+ if (c->redirecting.from.XXX_number.valid
+ && !ast_strlen_zero(c->redirecting.from.XXX_number.str)) {
+ iax_ie_append_str(&ied, IAX_IE_RDNIS, c->redirecting.from.XXX_number.str);
+ }
if (pds.context)
iax_ie_append_str(&ied, IAX_IE_CALLED_CONTEXT, pds.context);
@@ -5551,7 +5554,8 @@
tmp->cid.cid_ani = ast_strdup(i->cid_num);
tmp->dialed.number.valid = 1;
tmp->dialed.number.str = ast_strdup(i->dnid);
- tmp->redirecting.from.number = ast_strdup(i->rdnis);
+ tmp->redirecting.from.XXX_number.valid = 1;
+ tmp->redirecting.from.XXX_number.str = ast_strdup(i->rdnis);
tmp->cid.cid_pres = i->calling_pres;
tmp->cid.cid_ton = i->calling_ton;
tmp->dialed.transit_network_select = i->calling_tns;
@@ -11263,16 +11267,21 @@
/* Initialize defaults */
ast_party_connected_line_init(&connected);
- connected.id.number_presentation = iaxs[fr->callno]->calling_pres;
+ connected.id.XXX_number.presentation = iaxs[fr->callno]->calling_pres;
+ connected.id.XXX_name.presentation = iaxs[fr->callno]->calling_pres;
if (!ast_connected_line_parse_data(f.data.ptr, f.datalen, &connected)) {
- ast_string_field_set(iaxs[fr->callno], cid_num, connected.id.number);
- ast_string_field_set(iaxs[fr->callno], cid_name, connected.id.name);
- iaxs[fr->callno]->calling_pres = connected.id.number_presentation;
+ ast_string_field_set(iaxs[fr->callno], cid_num, connected.id.XXX_number.str);
+ ast_string_field_set(iaxs[fr->callno], cid_name, connected.id.XXX_name.str);
+ iaxs[fr->callno]->calling_pres = ast_party_id_presentation(&connected.id);
if (iaxs[fr->callno]->owner) {
- ast_set_callerid(iaxs[fr->callno]->owner, S_OR(connected.id.number, ""), S_OR(connected.id.name, ""), NULL);
- iaxs[fr->callno]->owner->cid.cid_pres = connected.id.number_presentation;
+ ast_set_callerid(iaxs[fr->callno]->owner,
+ S_COR(connected.id.XXX_number.valid, connected.id.XXX_number.str, ""),
+ S_COR(connected.id.XXX_name.valid, connected.id.XXX_name.str, ""),
+ NULL);
+ iaxs[fr->callno]->owner->caller.id.XXX_number.presentation = connected.id.XXX_number.presentation;
+ iaxs[fr->callno]->owner->caller.id.XXX_name.presentation = connected.id.XXX_name.presentation;
}
}
ast_party_connected_line_free(&connected);
Modified: team/rmudgett/cid/channels/chan_mgcp.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/channels/chan_mgcp.c?view=diff&rev=264382&r1=264381&r2=264382
==============================================================================
--- team/rmudgett/cid/channels/chan_mgcp.c (original)
+++ team/rmudgett/cid/channels/chan_mgcp.c Wed May 19 15:26:49 2010
@@ -898,7 +898,9 @@
transmit_modify_request(sub->next);
}
- transmit_notify_request_with_callerid(sub, tone, ast->connected.id.number, ast->connected.id.name);
+ transmit_notify_request_with_callerid(sub, tone,
+ S_COR(ast->connected.id.XXX_number.valid, ast->connected.id.XXX_number.str, ""),
+ S_COR(ast->connected.id.XXX_name.valid, ast->connected.id.XXX_name.str, ""));
ast_setstate(ast, AST_STATE_RINGING);
if (sub->next->owner && !ast_strlen_zero(sub->next->cxident) && !ast_strlen_zero(sub->next->callid)) {
@@ -918,6 +920,7 @@
{
struct mgcp_subchannel *sub = ast->tech_pvt;
struct mgcp_endpoint *p = sub->parent;
+ struct ast_channel *bridged;
ast_debug(1, "mgcp_hangup(%s)\n", ast->name);
if (!ast->tech_pvt) {
@@ -967,7 +970,10 @@
if (p->hookstate == MGCP_OFFHOOK) {
if (sub->next->owner && ast_bridged_channel(sub->next->owner)) {
/* ncs fix! */
- transmit_notify_request_with_callerid(p->sub, (p->ncs ? "L/wt1" : "L/wt"), ast_bridged_channel(sub->next->owner)->cid.cid_num, ast_bridged_channel(sub->next->owner)->cid.cid_name);
+ bridged = ast_bridged_channel(sub->next->owner);
+ transmit_notify_request_with_callerid(p->sub, (p->ncs ? "L/wt1" : "L/wt"),
+ S_COR(bridged->caller.id.XXX_number.valid, bridged->caller.id.XXX_number.str, ""),
+ S_COR(bridged->caller.id.XXX_name.valid, bridged->caller.id.XXX_name.str, ""));
}
} else {
/* set our other connection as the primary and swith over to it */
@@ -975,7 +981,10 @@
p->sub->cxmode = MGCP_CX_RECVONLY;
transmit_modify_request(p->sub);
if (sub->next->owner && ast_bridged_channel(sub->next->owner)) {
- transmit_notify_request_with_callerid(p->sub, "L/rg", ast_bridged_channel(sub->next->owner)->cid.cid_num, ast_bridged_channel(sub->next->owner)->cid.cid_name);
+ bridged = ast_bridged_channel(sub->next->owner);
+ transmit_notify_request_with_callerid(p->sub, "L/rg",
+ S_COR(bridged->caller.id.XXX_number.valid, bridged->caller.id.XXX_number.str, ""),
+ S_COR(bridged->caller.id.XXX_name.valid, bridged->caller.id.XXX_name.str, ""));
}
}
Modified: team/rmudgett/cid/channels/chan_misdn.c
URL: http://svnview.digium.com/svn/asterisk/team/rmudgett/cid/channels/chan_misdn.c?view=diff&rev=264382&r1=264381&r2=264382
==============================================================================
--- team/rmudgett/cid/channels/chan_misdn.c (original)
+++ team/rmudgett/cid/channels/chan_misdn.c Wed May 19 15:26:49 2010
@@ -5706,12 +5706,12 @@
chan_misdn_log(2, port, " --> pres: %d screen: %d\n", pres, screen);
if (pres < 0 || screen < 0) {
- chan_misdn_log(2, port, " --> pres: %x\n", ast->connected.id.number_presentation);
-
- bc->caller.presentation = ast_to_misdn_pres(ast->connected.id.number_presentation);
+ chan_misdn_log(2, port, " --> pres: %x\n", ast->connected.id.XXX_number.presentation);
+
+ bc->caller.presentation = ast_to_misdn_pres(ast->connected.id.XXX_number.presentation);
chan_misdn_log(2, port, " --> PRES: %s(%d)\n", misdn_to_str_pres(bc->caller.presentation), bc->caller.presentation);
- bc->caller.screening = ast_to_misdn_screen(ast->connected.id.number_presentation);
+ bc->caller.screening = ast_to_misdn_screen(ast->connected.id.XXX_number.presentation);
chan_misdn_log(2, port, " --> SCREEN: %s(%d)\n", misdn_to_str_screen(bc->caller.screening), bc->caller.screening);
} else {
bc->caller.screening = screen;
@@ -6016,10 +6016,11 @@
struct ast_party_connected_line connected;
ast_party_connected_line_init(&connected);
- connected.id.number = (char *) id->number;
- connected.id.number_type = misdn_to_ast_ton(id->number_type)
+ connected.id.XXX_number.valid = 1;
+ connected.id.XXX_number.str = (char *) id->number;
+ connected.id.XXX_number.plan = misdn_to_ast_ton(id->number_type)
| misdn_to_ast_plan(id->number_plan);
- connected.id.number_presentation = misdn_to_ast_pres(id->presentation)
+ connected.id.XXX_number.presentation = misdn_to_ast_pres(id->presentation)
| misdn_to_ast_screen(id->screening);
connected.id.tag = cid_tag;
connected.source = source;
@@ -6043,16 +6044,26 @@
if (originator == ORG_MISDN) {
/* ORIGINATOR MISDN (incoming call) */
- ast_copy_string(bc->connected.name, S_OR(ast->connected.id.name, ""), sizeof(bc->connected.name));
- ast_copy_string(bc->connected.number, S_OR(ast->connected.id.number, ""), sizeof(bc->connected.number));
- bc->connected.presentation = ast_to_misdn_pres(ast->connected.id.number_presentation);
- bc->connected.screening = ast_to_misdn_screen(ast->connected.id.number_presentation);
+ ast_copy_string(bc->connected.name,
+ S_COR(ast->connected.id.XXX_name.valid, ast->connected.id.XXX_name.str, ""),
+ sizeof(bc->connected.name));
+ if (ast->connected.id.XXX_number.valid) {
+ ast_copy_string(bc->connected.number, S_OR(ast->connected.id.XXX_number.str, ""),
+ sizeof(bc->connected.number));
+ bc->connected.presentation = ast_to_misdn_pres(ast->connected.id.XXX_number.presentation);
+ bc->connected.screening = ast_to_misdn_screen(ast->connected.id.XXX_number.presentation);
+ bc->connected.number_type = ast_to_misdn_ton(ast->connected.id.XXX_number.plan);
+ bc->connected.number_plan = ast_to_misdn_plan(ast->connected.id.XXX_number.plan);
+ } else {
+ bc->connected.number[0] = '\0';
+ bc->connected.presentation = 0;/* Allowed */
+ bc->connected.screening = 0;/* Unscreened */
+ bc->connected.number_type = NUMTYPE_UNKNOWN;
+ bc->connected.number_plan = NUMPLAN_UNKNOWN;
+ }
misdn_cfg_get(bc->port, MISDN_CFG_CPNDIALPLAN, &number_type, sizeof(number_type));
- if (number_type < 0) {
- bc->connected.number_type = ast_to_misdn_ton(ast->connected.id.number_type);
- bc->connected.number_plan = ast_to_misdn_plan(ast->connected.id.number_type);
- } else {
+ if (0 <= number_type) {
/* Force us to send in CONNECT message */
bc->connected.number_type = number_type;
bc->connected.number_plan = NUMPLAN_ISDN;
@@ -6061,16 +6072,26 @@
} else {
/* ORIGINATOR Asterisk (outgoing call) */
- ast_copy_string(bc->caller.name, S_OR(ast->connected.id.name, ""), sizeof(bc->caller.name));
- ast_copy_string(bc->caller.number, S_OR(ast->connected.id.number, ""), sizeof(bc->caller.number));
- bc->caller.presentation = ast_to_misdn_pres(ast->connected.id.number_presentation);
- bc->caller.screening = ast_to_misdn_screen(ast->connected.id.number_presentation);
+ ast_copy_string(bc->caller.name,
+ S_COR(ast->connected.id.XXX_name.valid, ast->connected.id.XXX_name.str, ""),
+ sizeof(bc->caller.name));
+ if (ast->connected.id.XXX_number.valid) {
+ ast_copy_string(bc->caller.number, S_OR(ast->connected.id.XXX_number.str, ""),
+ sizeof(bc->caller.number));
+ bc->caller.presentation = ast_to_misdn_pres(ast->connected.id.XXX_number.presentation);
+ bc->caller.screening = ast_to_misdn_screen(ast->connected.id.XXX_number.presentation);
+ bc->caller.number_type = ast_to_misdn_ton(ast->connected.id.XXX_number.plan);
+ bc->caller.number_plan = ast_to_misdn_plan(ast->connected.id.XXX_number.plan);
+ } else {
+ bc->caller.number[0] = '\0';
+ bc->caller.presentation = 0;/* Allowed */
+ bc->caller.screening = 0;/* Unscreened */
+ bc->caller.number_type = NUMTYPE_UNKNOWN;
+ bc->caller.number_plan = NUMPLAN_UNKNOWN;
+ }
misdn_cfg_get(bc->port, MISDN_CFG_LOCALDIALPLAN, &number_type, sizeof(number_type));
- if (number_type < 0) {
- bc->caller.number_type = ast_to_misdn_ton(ast->connected.id.number_type);
- bc->caller.number_plan = ast_to_misdn_plan(ast->connected.id.number_type);
- } else {
+ if (0 <= number_type) {
/* Force us to send in SETUP message */
bc->caller.number_type = number_type;
bc->caller.number_plan = NUMPLAN_ISDN;
@@ -6150,19 +6171,41 @@
*/
static void misdn_copy_redirecting_from_ast(struct misdn_bchannel *bc, struct ast_channel *ast)
{
- ast_copy_string(bc->redirecting.from.name, S_OR(ast->redirecting.from.name, ""), sizeof(bc->redirecting.from.name));
- ast_copy_string(bc->redirecting.from.number, S_OR(ast->redirecting.from.number, ""), sizeof(bc->redirecting.from.number));
- bc->redirecting.from.presentation = ast_to_misdn_pres(ast->redirecting.from.number_presentation);
- bc->redirecting.from.screening = ast_to_misdn_screen(ast->redirecting.from.number_presentation);
- bc->redirecting.from.number_type = ast_to_misdn_ton(ast->redirecting.from.number_type);
- bc->redirecting.from.number_plan = ast_to_misdn_plan(ast->redirecting.from.number_type);
-
- ast_copy_string(bc->redirecting.to.name, S_OR(ast->redirecting.to.name, ""), sizeof(bc->redirecting.to.name));
- ast_copy_string(bc->redirecting.to.number, S_OR(ast->redirecting.to.number, ""), sizeof(bc->redirecting.to.number));
- bc->redirecting.to.presentation = ast_to_misdn_pres(ast->redirecting.to.number_presentation);
- bc->redirecting.to.screening = ast_to_misdn_screen(ast->redirecting.to.number_presentation);
- bc->redirecting.to.number_type = ast_to_misdn_ton(ast->redirecting.to.number_type);
- bc->redirecting.to.number_plan = ast_to_misdn_plan(ast->redirecting.to.number_type);
+ ast_copy_string(bc->redirecting.from.name,
+ S_COR(ast->redirecting.from.XXX_name.valid, ast->redirecting.from.XXX_name.str, ""),
+ sizeof(bc->redirecting.from.name));
+ if (ast->redirecting.from.XXX_number.valid) {
+ ast_copy_string(bc->redirecting.from.number, S_OR(ast->redirecting.from.XXX_number.str, ""),
+ sizeof(bc->redirecting.from.number));
+ bc->redirecting.from.presentation = ast_to_misdn_pres(ast->redirecting.from.XXX_number.presentation);
+ bc->redirecting.from.screening = ast_to_misdn_screen(ast->redirecting.from.XXX_number.presentation);
+ bc->redirecting.from.number_type = ast_to_misdn_ton(ast->redirecting.from.XXX_number.plan);
+ bc->redirecting.from.number_plan = ast_to_misdn_plan(ast->redirecting.from.XXX_number.plan);
+ } else {
+ bc->redirecting.from.number[0] = '\0';
+ bc->redirecting.from.presentation = 0;/* Allowed */
+ bc->redirecting.from.screening = 0;/* Unscreened */
+ bc->redirecting.from.number_type = NUMTYPE_UNKNOWN;
+ bc->redirecting.from.number_plan = NUMPLAN_UNKNOWN;
+ }
+
+ ast_copy_string(bc->redirecting.to.name,
+ S_COR(ast->redirecting.to.XXX_name.valid, ast->redirecting.to.XXX_name.str, ""),
+ sizeof(bc->redirecting.to.name));
+ if (ast->redirecting.to.XXX_number.valid) {
+ ast_copy_string(bc->redirecting.to.number, S_OR(ast->redirecting.to.XXX_number.str, ""),
+ sizeof(bc->redirecting.to.number));
+ bc->redirecting.to.presentation = ast_to_misdn_pres(ast->redirecting.to.XXX_number.presentation);
+ bc->redirecting.to.screening = ast_to_misdn_screen(ast->redirecting.to.XXX_number.presentation);
+ bc->redirecting.to.number_type = ast_to_misdn_ton(ast->redirecting.to.XXX_number.plan);
+ bc->redirecting.to.number_plan = ast_to_misdn_plan(ast->redirecting.to.XXX_number.plan);
+ } else {
+ bc->redirecting.to.number[0] = '\0';
+ bc->redirecting.to.presentation = 0;/* Allowed */
+ bc->redirecting.to.screening = 0;/* Unscreened */
+ bc->redirecting.to.number_type = NUMTYPE_UNKNOWN;
+ bc->redirecting.to.number_plan = NUMPLAN_UNKNOWN;
+ }
bc->redirecting.reason = ast_to_misdn_reason(ast->redirecting.reason);
bc->redirecting.count = ast->redirecting.count;
@@ -6184,20 +6227,22 @@
ast_party_redirecting_set_init(&redirecting, &ast->redirecting);
- redirecting.from.number = (char *) redirect->from.number;
- redirecting.from.number_type =
+ redirecting.from.XXX_number.valid = 1;
+ redirecting.from.XXX_number.str = (char *) redirect->from.number;
+ redirecting.from.XXX_number.plan =
misdn_to_ast_ton(redirect->from.number_type)
| misdn_to_ast_plan(redirect->from.number_plan);
- redirecting.from.number_presentation =
+ redirecting.from.XXX_number.presentation =
misdn_to_ast_pres(redirect->from.presentation)
| misdn_to_ast_screen(redirect->from.screening);
redirecting.from.tag = tag;
- redirecting.to.number = (char *) redirect->to.number;
- redirecting.to.number_type =
+ redirecting.to.XXX_number.valid = 1;
+ redirecting.to.XXX_number.str = (char *) redirect->to.number;
+ redirecting.to.XXX_number.plan =
misdn_to_ast_ton(redirect->to.number_type)
| misdn_to_ast_plan(redirect->to.number_plan);
- redirecting.to.number_presentation =
+ redirecting.to.XXX_number.presentation =
misdn_to_ast_pres(redirect->to.presentation)
| misdn_to_ast_screen(redirect->to.screening);
redirecting.to.tag = tag;
@@ -6393,12 +6438,16 @@
ast_copy_string(ast->exten, args.ext, sizeof(ast->exten));
ast_copy_string(newbc->dialed.number, args.ext, sizeof(newbc->dialed.number));
- if (ast_strlen_zero(newbc->caller.name) && !ast_strlen_zero(ast->connected.id.name)) {
- ast_copy_string(newbc->caller.name, ast->connected.id.name, sizeof(newbc->caller.name));
+ if (ast_strlen_zero(newbc->caller.name)
+ && ast->connected.id.XXX_name.valid
+ && !ast_strlen_zero(ast->connected.id.XXX_name.str)) {
+ ast_copy_string(newbc->caller.name, ast->connected.id.XXX_name.str, sizeof(newbc->caller.name));
chan_misdn_log(3, port, " --> * set caller:\"%s\" <%s>\n", newbc->caller.name, newbc->caller.number);
}
- if (ast_strlen_zero(newbc->caller.number) && !ast_strlen_zero(ast->connected.id.number)) {
- ast_copy_string(newbc->caller.number, ast->connected.id.number, sizeof(newbc->caller.number));
+ if (ast_strlen_zero(newbc->caller.number)
+ && ast->connected.id.XXX_number.valid
+ && !ast_strlen_zero(ast->connected.id.XXX_number.str)) {
+ ast_copy_string(newbc->caller.number, ast->connected.id.XXX_number.str, sizeof(newbc->caller.number));
chan_misdn_log(3, port, " --> * set caller:\"%s\" <%s>\n", newbc->caller.name, newbc->caller.number);
}
@@ -6412,8 +6461,13 @@
misdn_cfg_get(port, MISDN_CFG_LOCALDIALPLAN, &number_type, sizeof(number_type));
if (number_type < 0) {
- newbc->caller.number_type = ast_to_misdn_ton(ast->connected.id.number_type);
- newbc->caller.number_plan = ast_to_misdn_plan(ast->connected.id.number_type);
+ if (ast->connected.id.XXX_number.valid) {
+ newbc->caller.number_type = ast_to_misdn_ton(ast->connected.id.XXX_number.plan);
+ newbc->caller.number_plan = ast_to_misdn_plan(ast->connected.id.XXX_number.plan);
+ } else {
+ newbc->caller.number_type = NUMTYPE_UNKNOWN;
+ newbc->caller.number_plan = NUMPLAN_ISDN;
+ }
} else {
/* Force us to send in SETUP message */
newbc->caller.number_type = number_type;
@@ -8932,7 +8986,7 @@
bc->div_leg_3_rx_wanted = 0;
if (ch && ch->ast) {
[... 3112 lines stripped ...]
More information about the svn-commits
mailing list