[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