[asterisk-commits] juggie: branch juggie/NoLossCDR r79562 - in /team/juggie/NoLossCDR: ./ apps/ ...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Aug 15 10:25:53 CDT 2007
Author: juggie
Date: Wed Aug 15 10:25:51 2007
New Revision: 79562
URL: http://svn.digium.com/view/asterisk?view=rev&rev=79562
Log:
Merged revisions 79182,79215,79244,79283,79312,79341,79382,79396,79427,79448,79480,79510,79532 via svnmerge from
https://origsvn.digium.com/svn/asterisk/team/group/CDRfix5
........
r79182 | automerge | 2007-08-13 10:28:29 -0400 (Mon, 13 Aug 2007) | 1 line
automerge commit
........
r79215 | automerge | 2007-08-13 11:28:17 -0400 (Mon, 13 Aug 2007) | 1 line
automerge commit
........
r79244 | automerge | 2007-08-13 12:28:16 -0400 (Mon, 13 Aug 2007) | 1 line
automerge commit
........
r79283 | automerge | 2007-08-13 16:28:15 -0400 (Mon, 13 Aug 2007) | 1 line
automerge commit
........
r79312 | automerge | 2007-08-13 17:28:17 -0400 (Mon, 13 Aug 2007) | 1 line
automerge commit
........
r79341 | automerge | 2007-08-13 18:28:09 -0400 (Mon, 13 Aug 2007) | 1 line
automerge commit
........
r79382 | automerge | 2007-08-14 10:26:55 -0400 (Tue, 14 Aug 2007) | 1 line
automerge commit
........
r79396 | automerge | 2007-08-14 11:26:58 -0400 (Tue, 14 Aug 2007) | 1 line
automerge commit
........
r79427 | automerge | 2007-08-14 12:28:28 -0400 (Tue, 14 Aug 2007) | 1 line
automerge commit
........
r79448 | automerge | 2007-08-14 14:29:07 -0400 (Tue, 14 Aug 2007) | 1 line
automerge commit
........
r79480 | automerge | 2007-08-14 15:28:44 -0400 (Tue, 14 Aug 2007) | 1 line
automerge commit
........
r79510 | automerge | 2007-08-15 08:27:04 -0400 (Wed, 15 Aug 2007) | 1 line
automerge commit
........
r79532 | automerge | 2007-08-15 10:28:57 -0400 (Wed, 15 Aug 2007) | 1 line
automerge commit
........
Added:
team/juggie/NoLossCDR/pbx/ael/ael-test/ael-vtest21/
- copied from r79532, team/group/CDRfix5/pbx/ael/ael-test/ael-vtest21/
team/juggie/NoLossCDR/pbx/ael/ael-test/ael-vtest21/extensions.ael
- copied unchanged from r79532, team/group/CDRfix5/pbx/ael/ael-test/ael-vtest21/extensions.ael
team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-vtest21
- copied unchanged from r79532, team/group/CDRfix5/pbx/ael/ael-test/ref.ael-vtest21
Modified:
team/juggie/NoLossCDR/ (props changed)
team/juggie/NoLossCDR/CHANGES
team/juggie/NoLossCDR/apps/app_queue.c
team/juggie/NoLossCDR/apps/app_speech_utils.c
team/juggie/NoLossCDR/apps/app_voicemail.c
team/juggie/NoLossCDR/channels/chan_gtalk.c
team/juggie/NoLossCDR/channels/chan_h323.c
team/juggie/NoLossCDR/channels/chan_iax2.c
team/juggie/NoLossCDR/channels/chan_jingle.c
team/juggie/NoLossCDR/channels/chan_local.c
team/juggie/NoLossCDR/channels/chan_mgcp.c
team/juggie/NoLossCDR/channels/chan_misdn.c
team/juggie/NoLossCDR/channels/chan_oss.c
team/juggie/NoLossCDR/channels/chan_phone.c
team/juggie/NoLossCDR/channels/chan_sip.c
team/juggie/NoLossCDR/channels/chan_skinny.c
team/juggie/NoLossCDR/channels/chan_zap.c
team/juggie/NoLossCDR/channels/misdn/ie.c
team/juggie/NoLossCDR/channels/misdn/isdn_msg_parser.c
team/juggie/NoLossCDR/include/asterisk/channel.h
team/juggie/NoLossCDR/include/asterisk/speech.h
team/juggie/NoLossCDR/main/channel.c
team/juggie/NoLossCDR/pbx/ael/ael-test/ael-test5/extensions.ael
team/juggie/NoLossCDR/pbx/ael/ael-test/ael-test6/extensions.ael
team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-ntest10
team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-test1
team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-test11
team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-test14
team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-test19
team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-test2
team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-test3
team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-test4
team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-test6
team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-vtest13
team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-vtest17
team/juggie/NoLossCDR/pbx/pbx_ael.c
team/juggie/NoLossCDR/res/res_features.c
team/juggie/NoLossCDR/res/res_odbc.c
team/juggie/NoLossCDR/res/res_speech.c
team/juggie/NoLossCDR/utils/ael_main.c
Propchange: team/juggie/NoLossCDR/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Propchange: team/juggie/NoLossCDR/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Wed Aug 15 10:25:51 2007
@@ -1,1 +1,1 @@
-/team/group/CDRfix5:1-79171
+/team/group/CDRfix5:1-79560
Modified: team/juggie/NoLossCDR/CHANGES
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/CHANGES?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/CHANGES (original)
+++ team/juggie/NoLossCDR/CHANGES Wed Aug 15 10:25:51 2007
@@ -144,6 +144,7 @@
position changes frequently.
* Added additional information to EXITWITHTIMEOUT and EXITWITHKEY events in the
queue log.
+ * Added ability for non-realtime queues to have realtime members
MeetMe Changes
--------------
Modified: team/juggie/NoLossCDR/apps/app_queue.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/apps/app_queue.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/apps/app_queue.c (original)
+++ team/juggie/NoLossCDR/apps/app_queue.c Wed Aug 15 10:25:51 2007
@@ -410,6 +410,7 @@
static AST_LIST_HEAD_STATIC(queues, call_queue);
+static void update_realtime_members(struct call_queue *q);
static int set_member_paused(const char *queuename, const char *interface, int paused);
static void set_queue_result(struct ast_channel *chan, enum queue_result res)
@@ -1254,6 +1255,8 @@
ast_variables_destroy(queue_vars);
AST_LIST_UNLOCK(&queues);
+ } else {
+ update_realtime_members(q);
}
return q;
}
Modified: team/juggie/NoLossCDR/apps/app_speech_utils.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/apps/app_speech_utils.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/apps/app_speech_utils.c (original)
+++ team/juggie/NoLossCDR/apps/app_speech_utils.c Wed Aug 15 10:25:51 2007
@@ -701,6 +701,7 @@
/* We sort of make a results entry */
speech->results = ast_calloc(1, sizeof(*speech->results));
if (speech->results != NULL) {
+ ast_speech_dtmf(speech, dtmf);
speech->results->score = 1000;
speech->results->text = ast_strdup(dtmf);
speech->results->grammar = ast_strdup("dtmf");
Modified: team/juggie/NoLossCDR/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/apps/app_voicemail.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/apps/app_voicemail.c (original)
+++ team/juggie/NoLossCDR/apps/app_voicemail.c Wed Aug 15 10:25:51 2007
@@ -5961,7 +5961,7 @@
if (!res && vms->oldmessages) {
lastnum = get_lastdigits(vms->oldmessages);
- dcnum = vms->newmessages - lastnum;
+ dcnum = vms->oldmessages - lastnum;
if (dcnum)
res = say_and_wait(chan, dcnum, chan->language);
if (!res && lastnum) {
Modified: team/juggie/NoLossCDR/channels/chan_gtalk.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/channels/chan_gtalk.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/channels/chan_gtalk.c (original)
+++ team/juggie/NoLossCDR/channels/chan_gtalk.c Wed Aug 15 10:25:51 2007
@@ -979,9 +979,7 @@
cid = data;
}
cid = strsep(&cid, "@");
- tmp->cid.cid_num = ast_strdup(cid);
tmp->cid.cid_ani = ast_strdup(cid);
- tmp->cid.cid_name = ast_strdup(i->them);
if (!ast_strlen_zero(i->exten) && strcmp(i->exten, "s"))
tmp->cid.cid_dnid = ast_strdup(i->exten);
tmp->priority = 1;
Modified: team/juggie/NoLossCDR/channels/chan_h323.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/channels/chan_h323.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/channels/chan_h323.c (original)
+++ team/juggie/NoLossCDR/channels/chan_h323.c Wed Aug 15 10:25:51 2007
@@ -1079,9 +1079,7 @@
/* Don't use ast_set_callerid() here because it will
* generate a needless NewCallerID event */
- ch->cid.cid_num = ast_strdup(cid_num);
ch->cid.cid_ani = ast_strdup(cid_num);
- ch->cid.cid_name = ast_strdup(cid_name);
if (pvt->cd.redirect_reason >= 0) {
ch->cid.cid_rdnis = ast_strdup(pvt->cd.redirect_number);
Modified: team/juggie/NoLossCDR/channels/chan_iax2.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/channels/chan_iax2.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/channels/chan_iax2.c (original)
+++ team/juggie/NoLossCDR/channels/chan_iax2.c Wed Aug 15 10:25:51 2007
@@ -1184,6 +1184,10 @@
return csub;
}
+/*!
+ * \note This funtion calls realtime_peer -> reg_source_db -> iax2_poke_peer -> find_callno,
+ * so do not call it with a pvt lock held.
+ */
static struct iax2_peer *find_peer(const char *name, int realtime)
{
struct iax2_peer *peer = NULL;
@@ -1397,6 +1401,8 @@
* However, it's too late to change that now. Instead, we need to come up with
* a better way of indexing active calls so that these frequent lookups are not
* so expensive.
+ *
+ * \note Calling this function while holding another pvt lock can cause a deadlock.
*/
static int find_callno(unsigned short callno, unsigned short dcallno, struct sockaddr_in *sin, int new, int lockpeer, int sockfd)
{
@@ -2674,6 +2680,10 @@
return 0;
}
+/*!
+ * \note This function calls reg_source_db -> iax2_poke_peer -> find_callno,
+ * so do not call this with a pvt lock held.
+ */
static struct iax2_peer *realtime_peer(const char *peername, struct sockaddr_in *sin)
{
struct ast_variable *var;
@@ -3569,8 +3579,6 @@
/* Don't use ast_set_callerid() here because it will
* generate a NewCallerID event before the NewChannel event */
- tmp->cid.cid_num = ast_strdup(i->cid_num);
- tmp->cid.cid_name = ast_strdup(i->cid_name);
if (!ast_strlen_zero(i->ani))
tmp->cid.cid_ani = ast_strdup(i->ani);
else
@@ -5331,10 +5339,11 @@
}
/* SLD: first call to lookup peer during registration */
+ ast_mutex_unlock(&iaxsl[callno]);
p = find_peer(peer, 1);
-
- if (!p) {
- if (authdebug)
+ ast_mutex_lock(&iaxsl[callno]);
+ if (!p || !iaxs[callno]) {
+ if (authdebug && !p)
ast_log(LOG_NOTICE, "No registration for peer '%s' (from %s)\n", peer, ast_inet_ntoa(sin->sin_addr));
return -1;
}
@@ -5441,8 +5450,8 @@
if (ast_test_flag(p, IAX_TEMPONLY))
destroy_peer(p);
+
return 0;
-
}
static int authenticate(const char *challenge, const char *secret, const char *keyn, int authmethods, struct iax_ie_data *ied, struct sockaddr_in *sin, ast_aes_encrypt_key *ecx, ast_aes_decrypt_key *dcx)
@@ -5498,6 +5507,10 @@
return res;
}
+/*!
+ * \note This function calls realtime_peer -> reg_source_db -> iax2_poke_peer -> find_callno,
+ * so do not call this function with a pvt lock held.
+ */
static int authenticate_reply(struct chan_iax2_pvt *p, struct sockaddr_in *sin, struct iax_ies *ies, const char *override, const char *okey)
{
struct iax2_peer *peer = NULL;
@@ -5505,7 +5518,8 @@
int res = -1;
int authmethods = 0;
struct iax_ie_data ied;
-
+ uint16_t callno = p->callno;
+
memset(&ied, 0, sizeof(ied));
if (ies->username)
@@ -5542,10 +5556,23 @@
if (!peer) {
/* We checked our list and didn't find one. It's unlikely, but possible,
that we're trying to authenticate *to* a realtime peer */
- if ((peer = realtime_peer(p->peer, NULL))) {
+ const char *peer_name = ast_strdupa(p->peer);
+ ast_mutex_unlock(&iaxsl[callno]);
+ if ((peer = realtime_peer(peer_name, NULL))) {
+ ast_mutex_lock(&iaxsl[callno]);
+ if (!(p = iaxs[callno])) {
+ if (ast_test_flag(peer, IAX_TEMPONLY))
+ destroy_peer(peer);
+ return -1;
+ }
res = authenticate(p->challenge, peer->secret,peer->outkey, authmethods, &ied, sin, &p->ecx, &p->dcx);
if (ast_test_flag(peer, IAX_TEMPONLY))
destroy_peer(peer);
+ }
+ if (!peer) {
+ ast_mutex_lock(&iaxsl[callno]);
+ if (!(p = iaxs[callno]))
+ return -1;
}
}
}
@@ -5969,7 +5996,7 @@
}
}
-static int update_registry(const char *name, struct sockaddr_in *sin, int callno, char *devtype, int fd, unsigned short refresh)
+static int update_registry(struct sockaddr_in *sin, int callno, char *devtype, int fd, unsigned short refresh)
{
/* Called from IAX thread only, with proper iaxsl lock */
struct iax_ie_data ied;
@@ -5977,12 +6004,23 @@
int msgcount;
char data[80];
int version;
+ const char *peer_name;
memset(&ied, 0, sizeof(ied));
+ peer_name = ast_strdupa(iaxs[callno]->peer);
+
/* SLD: Another find_peer call during registration - this time when we are really updating our registration */
- if (!(p = find_peer(name, 1))) {
- ast_log(LOG_WARNING, "No such peer '%s'\n", name);
+ ast_mutex_unlock(&iaxsl[callno]);
+ if (!(p = find_peer(peer_name, 1))) {
+ ast_mutex_lock(&iaxsl[callno]);
+ ast_log(LOG_WARNING, "No such peer '%s'\n", peer_name);
+ return -1;
+ }
+ ast_mutex_lock(&iaxsl[callno]);
+ if (!iaxs[callno]) {
+ if (ast_test_flag(p, IAX_TEMPONLY))
+ destroy_peer(p);
return -1;
}
@@ -5990,9 +6028,9 @@
if (sin->sin_addr.s_addr) {
time_t nowtime;
time(&nowtime);
- realtime_update_peer(name, sin, nowtime);
+ realtime_update_peer(peer_name, sin, nowtime);
} else {
- realtime_update_peer(name, sin, 0);
+ realtime_update_peer(peer_name, sin, 0);
}
}
if (inaddrcmp(&p->addr, sin)) {
@@ -6022,8 +6060,11 @@
}
/* Make sure our call still exists, an INVAL at the right point may make it go away */
- if (!iaxs[callno])
+ if (!iaxs[callno]) {
+ if (ast_test_flag(p, IAX_TEMPONLY))
+ destroy_peer(p);
return 0;
+ }
/* Store socket fd */
p->sockfd = fd;
@@ -6095,13 +6136,24 @@
return send_command_final(iaxs[callno], AST_FRAME_IAX, IAX_COMMAND_REGACK, 0, ied.buf, ied.pos, -1);
}
-static int registry_authrequest(const char *name, int callno)
+static int registry_authrequest(int callno)
{
struct iax_ie_data ied;
struct iax2_peer *p;
char challenge[10];
+ const char *peer_name;
+
+ peer_name = ast_strdupa(iaxs[callno]->peer);
+
/* SLD: third call to find_peer in registration */
- p = find_peer(name, 1);
+ ast_mutex_unlock(&iaxsl[callno]);
+ p = find_peer(peer_name, 1);
+ ast_mutex_lock(&iaxsl[callno]);
+ if (!iaxs[callno]) {
+ if (p && ast_test_flag(p, IAX_TEMPONLY))
+ destroy_peer(p);
+ return -1;
+ }
if (p) {
memset(&ied, 0, sizeof(ied));
iax_ie_append_short(&ied, IAX_IE_AUTHMETHODS, p->authmethods);
@@ -6112,12 +6164,12 @@
/* snprintf(iaxs[callno]->challenge, sizeof(iaxs[callno]->challenge), "%d", (int)ast_random()); */
iax_ie_append_str(&ied, IAX_IE_CHALLENGE, iaxs[callno]->challenge);
}
- iax_ie_append_str(&ied, IAX_IE_USERNAME, name);
+ iax_ie_append_str(&ied, IAX_IE_USERNAME, peer_name);
if (ast_test_flag(p, IAX_TEMPONLY))
destroy_peer(p);
return send_command(iaxs[callno], AST_FRAME_IAX, IAX_COMMAND_REGAUTH, 0, ied.buf, ied.pos, -1);;
}
- ast_log(LOG_WARNING, "No such peer '%s'\n", name);
+ ast_log(LOG_WARNING, "No such peer '%s'\n", peer_name);
return 0;
}
@@ -6211,7 +6263,6 @@
{
/* Schedule sending the authentication failure in one second, to prevent
guessing */
- ast_mutex_lock(&iaxsl[callno]);
if (iaxs[callno]) {
iaxs[callno]->authfail = failcode;
if (delayreject) {
@@ -6221,7 +6272,6 @@
} else
auth_reject((void *)(long)callno);
}
- ast_mutex_unlock(&iaxsl[callno]);
return 0;
}
@@ -7449,8 +7499,15 @@
/* Ignore if it's already up */
if (ast_test_flag(&iaxs[fr->callno]->state, IAX_STATE_STARTED | IAX_STATE_TBD))
break;
- if (ies.provverpres && ies.serviceident && sin.sin_addr.s_addr)
+ if (ies.provverpres && ies.serviceident && sin.sin_addr.s_addr) {
+ ast_mutex_unlock(&iaxsl[fr->callno]);
check_provisioning(&sin, fd, ies.serviceident, ies.provver);
+ ast_mutex_lock(&iaxsl[fr->callno]);
+ if (!iaxs[fr->callno]) {
+ ast_mutex_unlock(&iaxsl[fr->callno]);
+ return 1;
+ }
+ }
/* If we're in trunk mode, do it now, and update the trunk number in our frame before continuing */
if (ast_test_flag(iaxs[fr->callno], IAX_TRUNK)) {
int new_callno;
@@ -7840,6 +7897,10 @@
ast_log(LOG_WARNING,
"I don't know how to authenticate %s to %s\n",
ies.username ? ies.username : "<unknown>", ast_inet_ntoa(iaxs[fr->callno]->addr.sin_addr));
+ }
+ if (!iaxs[fr->callno]) {
+ ast_mutex_unlock(&iaxsl[fr->callno]);
+ return 1;
}
break;
case IAX_COMMAND_AUTHREP:
@@ -8101,21 +8162,44 @@
if (delayreject)
send_command_immediate(iaxs[fr->callno], AST_FRAME_IAX, IAX_COMMAND_ACK, fr->ts, NULL, 0,fr->iseqno);
if (register_verify(fr->callno, &sin, &ies)) {
+ if (!iaxs[fr->callno]) {
+ ast_mutex_unlock(&iaxsl[fr->callno]);
+ return 1;
+ }
/* Send delayed failure */
auth_fail(fr->callno, IAX_COMMAND_REGREJ);
break;
+ }
+ if (!iaxs[fr->callno]) {
+ ast_mutex_unlock(&iaxsl[fr->callno]);
+ return 1;
}
if ((ast_strlen_zero(iaxs[fr->callno]->secret) && ast_strlen_zero(iaxs[fr->callno]->inkeys)) ||
ast_test_flag(&iaxs[fr->callno]->state, IAX_STATE_AUTHENTICATED | IAX_STATE_UNCHANGED)) {
if (f.subclass == IAX_COMMAND_REGREL)
memset(&sin, 0, sizeof(sin));
- if (update_registry(iaxs[fr->callno]->peer, &sin, fr->callno, ies.devicetype, fd, ies.refresh))
+ if (update_registry(&sin, fr->callno, ies.devicetype, fd, ies.refresh))
ast_log(LOG_WARNING, "Registry error\n");
- if (ies.provverpres && ies.serviceident && sin.sin_addr.s_addr)
+ if (!iaxs[fr->callno]) {
+ ast_mutex_unlock(&iaxsl[fr->callno]);
+ return 1;
+ }
+ if (ies.provverpres && ies.serviceident && sin.sin_addr.s_addr) {
+ ast_mutex_unlock(&iaxsl[fr->callno]);
check_provisioning(&sin, fd, ies.serviceident, ies.provver);
+ ast_mutex_lock(&iaxsl[fr->callno]);
+ if (!iaxs[fr->callno]) {
+ ast_mutex_unlock(&iaxsl[fr->callno]);
+ return 1;
+ }
+ }
break;
}
- registry_authrequest(iaxs[fr->callno]->peer, fr->callno);
+ registry_authrequest(fr->callno);
+ if (!iaxs[fr->callno]) {
+ ast_mutex_unlock(&iaxsl[fr->callno]);
+ return 1;
+ }
break;
case IAX_COMMAND_REGACK:
if (iax2_ack_registry(&ies, &sin, fr->callno))
@@ -10479,6 +10563,9 @@
}
}
+ if (ast_test_flag(peer, IAX_TEMPONLY))
+ destroy_peer(peer);
+
return 0;
}
Modified: team/juggie/NoLossCDR/channels/chan_jingle.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/channels/chan_jingle.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/channels/chan_jingle.c (original)
+++ team/juggie/NoLossCDR/channels/chan_jingle.c Wed Aug 15 10:25:51 2007
@@ -827,9 +827,7 @@
ast_copy_string(tmp->exten, i->exten, sizeof(tmp->exten));
/* Don't use ast_set_callerid() here because it will
* generate an unnecessary NewCallerID event */
- tmp->cid.cid_num = ast_strdup(i->cid_num);
tmp->cid.cid_ani = ast_strdup(i->cid_num);
- tmp->cid.cid_name = ast_strdup(i->cid_name);
if (!ast_strlen_zero(i->exten) && strcmp(i->exten, "s"))
tmp->cid.cid_dnid = ast_strdup(i->exten);
tmp->priority = 1;
Modified: team/juggie/NoLossCDR/channels/chan_local.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/channels/chan_local.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/channels/chan_local.c (original)
+++ team/juggie/NoLossCDR/channels/chan_local.c Wed Aug 15 10:25:51 2007
@@ -453,8 +453,6 @@
ast_mutex_lock(&p->lock);
- p->chan->cid.cid_num = ast_strdup(p->owner->cid.cid_num);
- p->chan->cid.cid_name = ast_strdup(p->owner->cid.cid_name);
p->chan->cid.cid_rdnis = ast_strdup(p->owner->cid.cid_rdnis);
p->chan->cid.cid_ani = ast_strdup(p->owner->cid.cid_ani);
p->chan->cid.cid_pres = p->owner->cid.cid_pres;
Modified: team/juggie/NoLossCDR/channels/chan_mgcp.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/channels/chan_mgcp.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/channels/chan_mgcp.c (original)
+++ team/juggie/NoLossCDR/channels/chan_mgcp.c Wed Aug 15 10:25:51 2007
@@ -1495,9 +1495,7 @@
/* Don't use ast_set_callerid() here because it will
* generate a needless NewCallerID event */
- tmp->cid.cid_num = ast_strdup(i->cid_num);
tmp->cid.cid_ani = ast_strdup(i->cid_num);
- tmp->cid.cid_name = ast_strdup(i->cid_name);
if (!i->adsi)
tmp->adsicpe = AST_ADSI_UNAVAILABLE;
Modified: team/juggie/NoLossCDR/channels/chan_misdn.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/channels/chan_misdn.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/channels/chan_misdn.c (original)
+++ team/juggie/NoLossCDR/channels/chan_misdn.c Wed Aug 15 10:25:51 2007
@@ -2319,6 +2319,15 @@
bc = p->bc;
+ if (bc) {
+ const char *tmp=pbx_builtin_getvar_helper(ast,"MISDN_USERUSER");
+ if (tmp) {
+ ast_log(LOG_NOTICE, "MISDN_USERUSER: %s\n", tmp);
+ strcpy(bc->uu, tmp);
+ bc->uulen=strlen(bc->uu);
+ }
+ }
+
MISDN_ASTERISK_TECH_PVT(ast) = NULL;
p->ast = NULL;
@@ -3206,16 +3215,10 @@
else
chan_misdn_log(1, 0, "misdn_new: no exten given.\n");
- if (callerid) {
- char *cid_name, *cid_num;
-
- ast_callerid_parse(callerid, &cid_name, &cid_num);
+ if (callerid)
/* Don't use ast_set_callerid() here because it will
* generate a needless NewCallerID event */
- tmp->cid.cid_num = ast_strdup(cid_num);
tmp->cid.cid_ani = ast_strdup(cid_num);
- tmp->cid.cid_name = ast_strdup(cid_name);
- }
if (pipe(chlist->pipe) < 0)
ast_log(LOG_ERROR, "Pipe failed\n");
Modified: team/juggie/NoLossCDR/channels/chan_oss.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/channels/chan_oss.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/channels/chan_oss.c (original)
+++ team/juggie/NoLossCDR/channels/chan_oss.c Wed Aug 15 10:25:51 2007
@@ -1036,9 +1036,7 @@
ast_string_field_set(c, language, o->language);
/* Don't use ast_set_callerid() here because it will
* generate a needless NewCallerID event */
- c->cid.cid_num = ast_strdup(o->cid_num);
c->cid.cid_ani = ast_strdup(o->cid_num);
- c->cid.cid_name = ast_strdup(o->cid_name);
if (!ast_strlen_zero(ext))
c->cid.cid_dnid = ast_strdup(ext);
Modified: team/juggie/NoLossCDR/channels/chan_phone.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/channels/chan_phone.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/channels/chan_phone.c (original)
+++ team/juggie/NoLossCDR/channels/chan_phone.c Wed Aug 15 10:25:51 2007
@@ -890,9 +890,7 @@
/* Don't use ast_set_callerid() here because it will
* generate a NewCallerID event before the NewChannel event */
- tmp->cid.cid_num = ast_strdup(i->cid_num);
tmp->cid.cid_ani = ast_strdup(i->cid_num);
- tmp->cid.cid_name = ast_strdup(i->cid_name);
i->owner = tmp;
ast_module_ref(ast_module_info->self);
Modified: team/juggie/NoLossCDR/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/channels/chan_sip.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/channels/chan_sip.c (original)
+++ team/juggie/NoLossCDR/channels/chan_sip.c Wed Aug 15 10:25:51 2007
@@ -4622,9 +4622,7 @@
/* Don't use ast_set_callerid() here because it will
* generate an unnecessary NewCallerID event */
- tmp->cid.cid_num = ast_strdup(i->cid_num);
tmp->cid.cid_ani = ast_strdup(i->cid_num);
- tmp->cid.cid_name = ast_strdup(i->cid_name);
if (!ast_strlen_zero(i->rdnis))
tmp->cid.cid_rdnis = ast_strdup(i->rdnis);
@@ -18659,7 +18657,7 @@
ast_string_field_build(p, our_contact, "Transfer <sip:%s@%s%s%s>", extension, host, port ? ":" : "", port ? port : "");
transmit_response_reliable(p, "302 Moved Temporarily", &p->initreq);
- sip_scheddestroy(p, 32000); /* Make sure we stop send this reply. */
+ sip_scheddestroy(p, SIP_TRANS_TIMEOUT); /* Make sure we stop send this reply. */
sip_alreadygone(p);
/* hangup here */
return 0;
Modified: team/juggie/NoLossCDR/channels/chan_skinny.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/channels/chan_skinny.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/channels/chan_skinny.c (original)
+++ team/juggie/NoLossCDR/channels/chan_skinny.c Wed Aug 15 10:25:51 2007
@@ -3229,9 +3229,7 @@
/* Don't use ast_set_callerid() here because it will
* generate a needless NewCallerID event */
- tmp->cid.cid_num = ast_strdup(l->cid_num);
tmp->cid.cid_ani = ast_strdup(l->cid_num);
- tmp->cid.cid_name = ast_strdup(l->cid_name);
tmp->priority = 1;
tmp->adsicpe = AST_ADSI_UNAVAILABLE;
Modified: team/juggie/NoLossCDR/channels/chan_zap.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/channels/chan_zap.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/channels/chan_zap.c (original)
+++ team/juggie/NoLossCDR/channels/chan_zap.c Wed Aug 15 10:25:51 2007
@@ -5651,16 +5651,12 @@
/* Don't use ast_set_callerid() here because it will
* generate a needless NewCallerID event */
#ifdef PRI_ANI
- tmp->cid.cid_num = ast_strdup(i->cid_num);
- tmp->cid.cid_name = ast_strdup(i->cid_name);
if (!ast_strlen_zero(i->cid_ani))
tmp->cid.cid_ani = ast_strdup(i->cid_ani);
else
tmp->cid.cid_ani = ast_strdup(i->cid_num);
#else
- tmp->cid.cid_num = ast_strdup(i->cid_num);
tmp->cid.cid_ani = ast_strdup(i->cid_num);
- tmp->cid.cid_name = ast_strdup(i->cid_name);
#endif
tmp->cid.cid_pres = i->callingpres;
tmp->cid.cid_ton = i->cid_ton;
@@ -6118,6 +6114,7 @@
ast_hangup(chan);
return NULL;
} else if (res) {
+ ast_debug(1,"waitfordigit returned '%c' (%d), timeout = %d\n", res, res, timeout);
exten[len++]=res;
exten[len] = '\0';
}
Modified: team/juggie/NoLossCDR/channels/misdn/ie.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/channels/misdn/ie.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/channels/misdn/ie.c (original)
+++ team/juggie/NoLossCDR/channels/misdn/ie.c Wed Aug 15 10:25:51 2007
@@ -1348,7 +1348,7 @@
if (MISDN_IE_DEBG) printf(" protocol=%d user-user%s\n", protocol, debug);
- l = user_len;
+ l = user_len+1;
p = msg_put(msg, l+3);
if (nt)
*ntmode = p+1;
Modified: team/juggie/NoLossCDR/channels/misdn/isdn_msg_parser.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/channels/misdn/isdn_msg_parser.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/channels/misdn/isdn_msg_parser.c (original)
+++ team/juggie/NoLossCDR/channels/misdn/isdn_msg_parser.c Wed Aug 15 10:25:51 2007
@@ -797,6 +797,12 @@
enc_ie_cause(&disconnect->CAUSE, msg, (nt)?1:0, bc->out_cause,nt,bc);
if (nt) enc_ie_progress(&disconnect->PROGRESS, msg, 0, nt?1:5, 8 ,nt,bc);
+
+ if (bc->uulen) {
+ int protocol=4;
+ enc_ie_useruser(&disconnect->USER_USER, msg, protocol, bc->uu, bc->uulen, nt,bc);
+ cb_log(1,bc->port,"ENCODING USERUESRINFO:%s\n",bc->uu);
+ }
#ifdef DEBUG
printf("Building DISCONNECT Msg\n");
@@ -867,6 +873,12 @@
if (bc->out_cause>= 0)
enc_ie_cause(&release->CAUSE, msg, nt?1:0, bc->out_cause, nt,bc);
+
+ if (bc->uulen) {
+ int protocol=4;
+ enc_ie_useruser(&release->USER_USER, msg, protocol, bc->uu, bc->uulen, nt,bc);
+ cb_log(1,bc->port,"ENCODING USERUESRINFO:%s\n",bc->uu);
+ }
#ifdef DEBUG
printf("Building RELEASE Msg\n");
@@ -917,6 +929,12 @@
release_complete=(RELEASE_COMPLETE_t*)((msg->data+HEADER_LEN));
enc_ie_cause(&release_complete->CAUSE, msg, nt?1:0, bc->out_cause, nt,bc);
+
+ if (bc->uulen) {
+ int protocol=4;
+ enc_ie_useruser(&release_complete->USER_USER, msg, protocol, bc->uu, bc->uulen, nt,bc);
+ cb_log(1,bc->port,"ENCODING USERUESRINFO:%s\n",bc->uu);
+ }
#ifdef DEBUG
printf("Building RELEASE_COMPLETE Msg\n");
Modified: team/juggie/NoLossCDR/include/asterisk/channel.h
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/include/asterisk/channel.h?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/include/asterisk/channel.h (original)
+++ team/juggie/NoLossCDR/include/asterisk/channel.h Wed Aug 15 10:25:51 2007
@@ -1459,14 +1459,12 @@
*/
void ast_channel_whisper_stop(struct ast_channel *chan);
-
-
/*!
\brief return an english explanation of the code returned thru __ast_request_and_dial's 'outstate' argument
\param reason The integer argument, usually taken from AST_CONTROL_ macros
\return char pointer explaining the code
*/
-char *ast_channel_reason2str(int reason);
+const char *ast_channel_reason2str(int reason);
#if defined(__cplusplus) || defined(c_plusplus)
Modified: team/juggie/NoLossCDR/include/asterisk/speech.h
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/include/asterisk/speech.h?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/include/asterisk/speech.h (original)
+++ team/juggie/NoLossCDR/include/asterisk/speech.h Wed Aug 15 10:25:51 2007
@@ -87,6 +87,8 @@
int (*deactivate)(struct ast_speech *speech, char *grammar_name);
/*! Write audio to the speech engine */
int (*write)(struct ast_speech *speech, void *data, int len);
+ /*! Signal DTMF was received */
+ int (*dtmf)(struct ast_speech *speech, const char *dtmf);
/*! Prepare engine to accept audio */
int (*start)(struct ast_speech *speech);
/*! Change an engine specific setting */
@@ -134,6 +136,8 @@
int ast_speech_destroy(struct ast_speech *speech);
/*! \brief Write audio to the speech engine */
int ast_speech_write(struct ast_speech *speech, void *data, int len);
+/*! \brief Signal to the engine that DTMF was received */
+int ast_speech_dtmf(struct ast_speech *speech, const char *dtmf);
/*! \brief Change an engine specific attribute */
int ast_speech_change(struct ast_speech *speech, char *name, const char *value);
/*! \brief Change the type of results we want */
Modified: team/juggie/NoLossCDR/main/channel.c
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/main/channel.c?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/main/channel.c (original)
+++ team/juggie/NoLossCDR/main/channel.c Wed Aug 15 10:25:51 2007
@@ -1929,6 +1929,12 @@
struct ast_channel *ast_waitfor_nandfds(struct ast_channel **c, int n, int *fds, int nfds,
int *exception, int *outfd, int *ms)
{
+ /* Clear all provided values in one place. */
+ if (outfd)
+ *outfd = -99999;
+ if (exception)
+ *exception = 0;
+
/* If no epoll file descriptor is available resort to classic nandfds */
if (!n || nfds || c[0]->epfd == -1)
return ast_waitfor_nandfds_classic(c, n, fds, nfds, exception, outfd, ms);
@@ -1986,12 +1992,14 @@
if (ast_test_flag(c, AST_FLAG_ZOMBIE) || ast_check_hangup(c))
return -1;
/* Wait for a digit, no more than ms milliseconds total. */
+
while (ms) {
struct ast_channel *rchan;
- int outfd;
+ int outfd=-1;
errno = 0;
rchan = ast_waitfor_nandfds(&c, 1, &cmdfd, (cmdfd > -1) ? 1 : 0, NULL, &outfd, &ms);
+
if (!rchan && outfd < 0 && ms) {
if (errno == 0 || errno == EINTR)
continue;
@@ -1999,6 +2007,7 @@
return -1;
} else if (outfd > -1) {
/* The FD we were watching has something waiting */
+ ast_log(LOG_WARNING, "The FD we were waiting for has something waiting. Waitfordigit returning numeric 1\n");
return 1;
} else if (rchan) {
int res;
@@ -2902,7 +2911,7 @@
&chan->writetrans, 1);
}
-char *ast_channel_reason2str(int reason)
+const char *ast_channel_reason2str(int reason)
{
switch (reason) /* the following appear to be the only ones actually returned by request_and_dial */
{
Modified: team/juggie/NoLossCDR/pbx/ael/ael-test/ael-test5/extensions.ael
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/pbx/ael/ael-test/ael-test5/extensions.ael?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/pbx/ael/ael-test/ael-test5/extensions.ael (original)
+++ team/juggie/NoLossCDR/pbx/ael/ael-test/ael-test5/extensions.ael Wed Aug 15 10:25:51 2007
@@ -275,14 +275,14 @@
context long-distance {
includes {
- local;
+ local1;
};
_91XXXXXXXXXX => &dialout(${EXTEN});
_9011. => &dialout(${EXTEN});
};
-context local {
+context local1 {
includes {
default;
};
@@ -472,7 +472,7 @@
};
};
- 1 => goto local|${ct_calltrace}|1;
+ 1 => goto local1|${ct_calltrace}|1;
i => {
Playback(vm-goodbye);
Modified: team/juggie/NoLossCDR/pbx/ael/ael-test/ael-test6/extensions.ael
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/pbx/ael/ael-test/ael-test6/extensions.ael?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/pbx/ael/ael-test/ael-test6/extensions.ael (original)
+++ team/juggie/NoLossCDR/pbx/ael/ael-test/ael-test6/extensions.ael Wed Aug 15 10:25:51 2007
@@ -271,14 +271,14 @@
context long-distance {
includes {
- local;
+ local1;
};
_91XXXXXXXXXX => &dialout(${EXTEN});
_9011. => &dialout(${EXTEN});
};
-context local {
+context local1 {
includes {
default;
};
@@ -468,7 +468,7 @@
};
};
- 1 => goto local|${ct_calltrace}|1;
+ 1 => goto local1|${ct_calltrace}|1;
i => {
Playback(vm-goodbye);
Modified: team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-ntest10
URL: http://svn.digium.com/view/asterisk/team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-ntest10?view=diff&rev=79562&r1=79561&r2=79562
==============================================================================
--- team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-ntest10 (original)
+++ team/juggie/NoLossCDR/pbx/ael/ael-test/ref.ael-ntest10 Wed Aug 15 10:25:51 2007
@@ -5,17 +5,27 @@
(You can use the -w option to dump extensions.conf format to extensions.conf.aeldump)
-LOG: lev:2 file:pbx_ael.c line:3910 func: pbx_load_module Starting AEL load process.
-LOG: lev:2 file:pbx_ael.c line:3917 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
-LOG: lev:2 file:pbx_ael.c line:3925 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
-LOG: lev:3 file:pbx_ael.c line:712 func: check_macro_returns Warning: file ./extensions.ael, line 1-4: The macro endsess does not end with a return; I will insert one.
-LOG: lev:3 file:pbx_ael.c line:712 func: check_macro_returns Warning: file ./extensions.ael, line 6-9: The macro nullchk does not end with a return; I will insert one.
-LOG: lev:3 file:pbx_ael.c line:712 func: check_macro_returns Warning: file ./extensions.ael, line 11-26: The macro endcall does not end with a return; I will insert one.
-LOG: lev:3 file:pbx_ael.c line:712 func: check_macro_returns Warning: file ./extensions.ael, line 28-44: The macro endcall2 does not end with a return; I will insert one.
-LOG: lev:3 file:pbx_ael.c line:712 func: check_macro_returns Warning: file ./extensions.ael, line 46-68: The macro endcall3 does not end with a return; I will insert one.
-LOG: lev:3 file:pbx_ael.c line:712 func: check_macro_returns Warning: file ./extensions.ael, line 70-96: The macro endcall4 does not end with a return; I will insert one.
-LOG: lev:3 file:pbx_ael.c line:712 func: check_macro_returns Warning: file ./extensions.ael, line 98-131: The macro endcall5 does not end with a return; I will insert one.
-LOG: lev:2 file:pbx_ael.c line:3928 func: pbx_load_module AEL load process: checked config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c line:4092 func: pbx_load_module Starting AEL load process.
+LOG: lev:2 file:pbx_ael.c line:4099 func: pbx_load_module AEL load process: calculated config file name './extensions.ael'.
+LOG: lev:2 file:pbx_ael.c line:4107 func: pbx_load_module AEL load process: parsed config file name './extensions.ael'.
+LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 1-4: The macro endsess does not end with a return; I will insert one.
+LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 6-9: The macro nullchk does not end with a return; I will insert one.
+LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 11-26: The macro endcall does not end with a return; I will insert one.
+LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 13-13: A default case was automatically added to the switch.
+LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 28-44: The macro endcall2 does not end with a return; I will insert one.
+LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 36-36: A default case was automatically added to the switch.
+LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 46-68: The macro endcall3 does not end with a return; I will insert one.
+LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 48-48: A default case was automatically added to the switch.
+LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 60-60: A default case was automatically added to the switch.
+LOG: lev:3 file:pbx_ael.c line:739 func: check_macro_returns Warning: file ./extensions.ael, line 70-96: The macro endcall4 does not end with a return; I will insert one.
+LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 72-72: A default case was automatically added to the switch.
+LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 84-84: A default case was automatically added to the switch.
+LOG: lev:3 file:pbx_ael.c line:2356 func: check_switch_expr Warning: file ./extensions.ael, line 87-87: A default case was automatically added to the switch.
[... 5427 lines stripped ...]
More information about the asterisk-commits
mailing list