[asterisk-commits] murf: branch murf/config_comments r40387 - in /team/murf/config_comments: ./ ...

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Fri Aug 18 08:51:15 MST 2006


Author: murf
Date: Fri Aug 18 10:51:14 2006
New Revision: 40387

URL: http://svn.digium.com/view/asterisk?rev=40387&view=rev
Log:
Bringing this up to date against bustling changes...


Added:
    team/murf/config_comments/doc/queues-with-callback-members.txt   (props changed)
      - copied unchanged from r40360, trunk/doc/queues-with-callback-members.txt
Modified:
    team/murf/config_comments/   (props changed)
    team/murf/config_comments/UPGRADE.txt
    team/murf/config_comments/acinclude.m4
    team/murf/config_comments/apps/app_macro.c
    team/murf/config_comments/apps/app_voicemail.c
    team/murf/config_comments/channel.c
    team/murf/config_comments/channels/Makefile
    team/murf/config_comments/channels/chan_alsa.c
    team/murf/config_comments/channels/chan_h323.c
    team/murf/config_comments/channels/chan_jingle.c
    team/murf/config_comments/channels/chan_mgcp.c
    team/murf/config_comments/channels/chan_misdn.c
    team/murf/config_comments/channels/chan_oss.c
    team/murf/config_comments/channels/chan_sip.c
    team/murf/config_comments/channels/chan_skinny.c
    team/murf/config_comments/channels/misdn/Makefile
    team/murf/config_comments/channels/misdn/isdn_lib.c
    team/murf/config_comments/channels/misdn/isdn_lib.h
    team/murf/config_comments/channels/misdn/isdn_msg_parser.c
    team/murf/config_comments/configure
    team/murf/config_comments/configure.ac
    team/murf/config_comments/contrib/utils/zones2indications.c
    team/murf/config_comments/doc/imapstorage.txt
    team/murf/config_comments/doc/odbcstorage.txt
    team/murf/config_comments/frame.c
    team/murf/config_comments/funcs/func_cdr.c
    team/murf/config_comments/http.c
    team/murf/config_comments/include/asterisk/autoconfig.h.in
    team/murf/config_comments/include/asterisk/lock.h
    team/murf/config_comments/res/res_agi.c
    team/murf/config_comments/translate.c

Propchange: team/murf/config_comments/
------------------------------------------------------------------------------
Binary property 'branch-1.2-blocked' - no diff available.

Propchange: team/murf/config_comments/
------------------------------------------------------------------------------
Binary property 'branch-1.2-merged' - no diff available.

Propchange: team/murf/config_comments/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Fri Aug 18 10:51:14 2006
@@ -1,1 +1,1 @@
-/trunk:1-39814
+/trunk:1-40386

Modified: team/murf/config_comments/UPGRADE.txt
URL: http://svn.digium.com/view/asterisk/team/murf/config_comments/UPGRADE.txt?rev=40387&r1=40386&r2=40387&view=diff
==============================================================================
--- team/murf/config_comments/UPGRADE.txt (original)
+++ team/murf/config_comments/UPGRADE.txt Fri Aug 18 10:51:14 2006
@@ -197,6 +197,10 @@
   exit code, the AGISTATUS variable will be set to "FAILURE" as opposed to
   "SUCCESS".
 
+* app_voicemail: The ODBC_STORAGE capability now requires the extended table format
+  previously used only by EXTENDED_ODBC_STORAGE. This means that you will need to update
+  your table format using the schema provided in doc/odbcstorage.txt
+
 Manager:
 
 * After executing the 'status' manager action, the "Status" manager events

Modified: team/murf/config_comments/acinclude.m4
URL: http://svn.digium.com/view/asterisk/team/murf/config_comments/acinclude.m4?rev=40387&r1=40386&r2=40387&view=diff
==============================================================================
--- team/murf/config_comments/acinclude.m4 (original)
+++ team/murf/config_comments/acinclude.m4 Fri Aug 18 10:51:14 2006
@@ -84,10 +84,14 @@
 AC_DEFUN(
 [AST_CHECK_GNU_MAKE], [AC_CACHE_CHECK(for GNU make, GNU_MAKE,
    GNU_MAKE='Not Found' ;
+   GNU_MAKE_VERSION_MAJOR=0 ;
+   GNU_MAKE_VERSION_MINOR=0 ;
    for a in make gmake gnumake ; do
       if test -z "$a" ; then continue ; fi ;
       if ( sh -c "$a --version" 2> /dev/null | grep GNU  2>&1 > /dev/null ) ;  then
          GNU_MAKE=$a ;
+         GNU_MAKE_VERSION_MAJOR=`$GNU_MAKE --version | grep "GNU Make" | cut -f3 -d' ' | cut -f1 -d'.'`
+         GNU_MAKE_VERSION_MINOR=`$GNU_MAKE --version | grep "GNU Make" | cut -f2 -d'.' | cut -c1-2`
          break;
       fi
    done ;

Modified: team/murf/config_comments/apps/app_macro.c
URL: http://svn.digium.com/view/asterisk/team/murf/config_comments/apps/app_macro.c?rev=40387&r1=40386&r2=40387&view=diff
==============================================================================
--- team/murf/config_comments/apps/app_macro.c (original)
+++ team/murf/config_comments/apps/app_macro.c Fri Aug 18 10:51:14 2006
@@ -112,7 +112,7 @@
 	int oldpriority;
 	char pc[80], depthc[12];
 	char oldcontext[AST_MAX_CONTEXT] = "";
-	int offset, depth = 0;
+	int offset, depth = 0, maxdepth = 7;
 	int setmacrocontext=0;
 	int autoloopflag, dead = 0;
   
@@ -129,11 +129,16 @@
 
 	LOCAL_USER_ADD(u);
 
+	/* does the user want a deeper rabbit hole? */
+	s = pbx_builtin_getvar_helper(chan, "MACRO_RECURSION");
+	if (s)
+		sscanf(s, "%d", &maxdepth);
+
 	/* Count how many levels deep the rabbit hole goes */
 	s = pbx_builtin_getvar_helper(chan, "MACRO_DEPTH");
 	if (s)
 		sscanf(s, "%d", &depth);
-	if (depth >= 7) {
+	if (depth >= maxdepth) {
 		ast_log(LOG_ERROR, "Macro():  possible infinite loop detected.  Returning early.\n");
 		LOCAL_USER_REMOVE(u);
 		return 0;
@@ -254,9 +259,9 @@
 			break;
 		}
 		/* don't stop executing extensions when we're in "h" */
-		if (chan->_softhangup && strcasecmp(oldexten,"h")) {
-			ast_log(LOG_DEBUG, "Extension %s, priority %d returned normally even though call was hung up\n",
-				chan->exten, chan->priority);
+		if (chan->_softhangup && strcasecmp(chan->macroexten,"h")) {
+			ast_log(LOG_DEBUG, "Extension %s, macroexten %s, priority %d returned normally even though call was hung up\n",
+				chan->exten, chan->macroexten, chan->priority);
 			goto out;
 		}
 		chan->priority++;

Modified: team/murf/config_comments/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/team/murf/config_comments/apps/app_voicemail.c?rev=40387&r1=40386&r2=40387&view=diff
==============================================================================
--- team/murf/config_comments/apps/app_voicemail.c (original)
+++ team/murf/config_comments/apps/app_voicemail.c Fri Aug 18 10:51:14 2006
@@ -31,10 +31,6 @@
 /*** MAKEOPTS
 <category name="MENUSELECT_OPTS_app_voicemail" displayname="Voicemail Build Options" positive_output="yes" remove_on_change="apps/app_voicemail.o">
 	<member name="ODBC_STORAGE" displayname="Storage of Voicemail using ODBC">
-		<depend>unixodbc</depend>
-		<defaultenabled>no</defaultenabled>
-	</member>
-	<member name="EXTENDED_ODBC_STORAGE" displayname="Storage of Voicemail using ODBC (extended)">
 		<depend>unixodbc</depend>
 		<defaultenabled>no</defaultenabled>
 	</member>
@@ -1330,11 +1326,7 @@
 			odbc_release_obj(obj);
 			goto yuck;
 		}
-#ifdef EXTENDED_ODBC_STORAGE
 		snprintf(sql, sizeof(sql), "INSERT INTO %s (dir, msgnum, context, macrocontext, callerid, origtime, duration, recording, mailboxuser, mailboxcontext) SELECT ?,?,context,macrocontext,callerid,origtime,duration,recording,?,? FROM %s WHERE dir=? AND msgnum=?",odbc_table,odbc_table); 
-#else
-		snprintf(sql, sizeof(sql), "INSERT INTO %s (dir, msgnum, context, macrocontext, callerid, origtime, duration, recording) SELECT ?,?,context,macrocontext,callerid,origtime,duration,recording FROM %s WHERE dir=? AND msgnum=?",odbc_table,odbc_table); 
-#endif
 		res = SQLPrepare(stmt, sql, SQL_NTS);
 		if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) {
 			ast_log(LOG_WARNING, "SQL Prepare failed![%s]\n", sql);
@@ -1344,15 +1336,10 @@
 		}
 		SQLBindParameter(stmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(ddir), 0, (void *)ddir, 0, NULL);
 		SQLBindParameter(stmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(msgnumd), 0, (void *)msgnumd, 0, NULL);
-#ifdef EXTENDED_ODBC_STORAGE
 		SQLBindParameter(stmt, 3, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(dmailboxuser), 0, (void *)dmailboxuser, 0, NULL);
 		SQLBindParameter(stmt, 4, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(dmailboxcontext), 0, (void *)dmailboxcontext, 0, NULL);
 		SQLBindParameter(stmt, 5, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(sdir), 0, (void *)sdir, 0, NULL);
 		SQLBindParameter(stmt, 6, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(msgnums), 0, (void *)msgnums, 0, NULL);
-#else
-		SQLBindParameter(stmt, 3, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(sdir), 0, (void *)sdir, 0, NULL);
-		SQLBindParameter(stmt, 4, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(msgnums), 0, (void *)msgnums, 0, NULL);
-#endif
 		res = odbc_smart_execute(obj, stmt);
 		if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) {
 			ast_log(LOG_WARNING, "SQL Execute error!\n[%s] (You probably don't have MySQL 4.1 or later installed)\n\n", sql);
@@ -1441,17 +1428,9 @@
 			goto yuck;
 		}
 		if (!ast_strlen_zero(category)) 
-#ifdef EXTENDED_ODBC_STORAGE
 			snprintf(sql, sizeof(sql), "INSERT INTO %s (dir,msgnum,recording,context,macrocontext,callerid,origtime,duration,mailboxuser,mailboxcontext,category) VALUES (?,?,?,?,?,?,?,?,?,?,?)",odbc_table); 
-#else
-			snprintf(sql, sizeof(sql), "INSERT INTO %s (dir,msgnum,recording,context,macrocontext,callerid,origtime,duration,category) VALUES (?,?,?,?,?,?,?,?,?)",odbc_table);
-#endif
 		else
-#ifdef EXTENDED_ODBC_STORAGE
 			snprintf(sql, sizeof(sql), "INSERT INTO %s (dir,msgnum,recording,context,macrocontext,callerid,origtime,duration,mailboxuser,mailboxcontext) VALUES (?,?,?,?,?,?,?,?,?,?)",odbc_table);
-#else
-			snprintf(sql, sizeof(sql), "INSERT INTO %s (dir,msgnum,recording,context,macrocontext,callerid,origtime,duration) VALUES (?,?,?,?,?,?,?,?)",odbc_table);
-#endif
 		res = SQLPrepare(stmt, sql, SQL_NTS);
 		if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) {
 			ast_log(LOG_WARNING, "SQL Prepare failed![%s]\n", sql);
@@ -1468,15 +1447,10 @@
 		SQLBindParameter(stmt, 6, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(callerid), 0, (void *)callerid, 0, NULL);
 		SQLBindParameter(stmt, 7, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(origtime), 0, (void *)origtime, 0, NULL);
 		SQLBindParameter(stmt, 8, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(duration), 0, (void *)duration, 0, NULL);
-#ifdef EXTENDED_ODBC_STORAGE
 		SQLBindParameter(stmt, 9, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(mailboxuser), 0, (void *)mailboxuser, 0, NULL);
 		SQLBindParameter(stmt, 10, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(mailboxcontext), 0, (void *)mailboxcontext, 0, NULL);
 		if (!ast_strlen_zero(category))
 			SQLBindParameter(stmt, 11, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(category), 0, (void *)category, 0, NULL);
-#else
-		if (!ast_strlen_zero(category))
-			SQLBindParameter(stmt, 9, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(category), 0, (void *)category, 0, NULL);
-#endif
 		res = odbc_smart_execute(obj, stmt);
 		if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) {
 			ast_log(LOG_WARNING, "SQL Execute error!\n[%s]\n\n", sql);
@@ -1518,11 +1492,7 @@
 			odbc_release_obj(obj);
 			goto yuck;
 		}
-#ifdef EXTENDED_ODBC_STORAGE
 		snprintf(sql, sizeof(sql), "UPDATE %s SET dir=?, msgnum=?, mailboxuser=?, mailboxcontext=? WHERE dir=? AND msgnum=?",odbc_table);
-#else
-		snprintf(sql, sizeof(sql), "UPDATE %s SET dir=?, msgnum=? WHERE dir=? AND msgnum=?",odbc_table);
-#endif
 		res = SQLPrepare(stmt, sql, SQL_NTS);
 		if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) {
 			ast_log(LOG_WARNING, "SQL Prepare failed![%s]\n", sql);
@@ -1532,15 +1502,10 @@
 		}
 		SQLBindParameter(stmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(ddir), 0, (void *)ddir, 0, NULL);
 		SQLBindParameter(stmt, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(msgnumd), 0, (void *)msgnumd, 0, NULL);
-#ifdef EXTENDED_ODBC_STORAGE
 		SQLBindParameter(stmt, 3, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(mailboxuser), 0, (void *)mailboxuser, 0, NULL);
 		SQLBindParameter(stmt, 4, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(mailboxcontext), 0, (void *)mailboxcontext, 0, NULL);
 		SQLBindParameter(stmt, 5, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(sdir), 0, (void *)sdir, 0, NULL);
 		SQLBindParameter(stmt, 6, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(msgnums), 0, (void *)msgnums, 0, NULL);
-#else
-		SQLBindParameter(stmt, 3, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(sdir), 0, (void *)sdir, 0, NULL);
-		SQLBindParameter(stmt, 4, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(msgnums), 0, (void *)msgnums, 0, NULL);
-#endif
 		res = odbc_smart_execute(obj, stmt);
 		if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) {
 			ast_log(LOG_WARNING, "SQL Execute error!\n[%s]\n\n", sql);
@@ -2390,7 +2355,7 @@
 
 #else
 #ifdef IMAP_STORAGE
-static int messagecount(const char *mailbox, int *newmsgs, int *oldmsgs)
+static int count_messages_imap(const char *mailbox, int *newmsgs, int *oldmsgs)
 {
    	SEARCHPGM *pgm;
    	SEARCHHEADER *hdr;
@@ -2418,7 +2383,7 @@
  		ret = 0;
  		while((cur = strsep(&mb, ", "))) {
  			if (!ast_strlen_zero(cur)) {
- 				if (messagecount(cur, newmsgs ? &tmpnew : NULL, oldmsgs ? &tmpold : NULL))
+ 				if (count_messages_imap(cur, newmsgs ? &tmpnew : NULL, oldmsgs ? &tmpold : NULL))
  					return -1;
  				else {
  					if (newmsgs)
@@ -2542,13 +2507,6 @@
  	}
  	return 0;
  }
-#else
-
-static int messagecount(const char *context, const char *mailbox, const char *folder)
-{
-	return __has_voicemail(context, mailbox, folder, 0);
-}
-
 #endif
 #endif
 
@@ -2588,6 +2546,13 @@
 }
 
 #ifndef ODBC_STORAGE
+
+static int messagecount(const char *context, const char *mailbox, const char *folder)
+{
+	return __has_voicemail(context, mailbox, folder, 0);
+}
+
+
 static int __has_voicemail(const char *context, const char *mailbox, const char *folder, int shortcircuit)
 {
 	DIR *dir;
@@ -2914,7 +2879,7 @@
 			oldmsgs = vms->oldmessages;
 		} else {
 			ast_log(LOG_DEBUG, "About to call messagecount.\n");
-			res = messagecount(ext, &newmsgs, &oldmsgs);
+			res = count_messages_imap(ext, &newmsgs, &oldmsgs);
 			if(res < 0) {
 				ast_log(LOG_NOTICE,"Can not leave voicemail, unable to count messages\n");
 				return -1;
@@ -6505,10 +6470,13 @@
 	/* expunge message - use UID Expunge if supported on IMAP server*/
 	ast_log(LOG_DEBUG, "*** Checking if we can expunge, deleted set to %d, expungeonhangup set to %d\n",deleted,expungeonhangup);
 	if (vmu && deleted == 1 && expungeonhangup == 1)  {
+#ifdef HAVE_IMAP_TK2006
 	      	if (LEVELUIDPLUS (vms.mailstream)) {
 			ast_log(LOG_DEBUG, "*** About to expunge messages using UID\n");
 			mail_expunge_full(vms.mailstream,NIL,EX_UID);
-		} else {
+		} else 
+#endif
+		{
 			ast_log(LOG_DEBUG, "*** About to expunge messages\n");
 			mail_expunge(vms.mailstream);
 		}
@@ -7406,13 +7374,6 @@
 	snprintf(VM_SPOOL_DIR, sizeof(VM_SPOOL_DIR), "%s/voicemail/", ast_config_AST_SPOOL_DIR);
 
 	ast_install_vm_functions(has_voicemail, inboxcount, messagecount);
-
-#if defined(ODBC_STORAGE) && !defined(EXTENDED_ODBC_STORAGE)
-	ast_log(LOG_WARNING, "The current ODBC storage table format will be changed soon."
-				"Please update your tables as per the README and edit the apps/Makefile "
-				"and uncomment the line containing EXTENDED_ODBC_STORAGE to enable the "
-				"new table format.\n");
-#endif
 
 	return res;
 }
@@ -8555,7 +8516,7 @@
 	for (x = 0; x<256; x++) {
 		if (vms->msgArray[x]!=0) {
   			ast_log (LOG_DEBUG, "Item %d set to %ld\n",x,vms->msgArray[x]);
-		};
+		}
 	}
   	ast_log (LOG_DEBUG, "Check complete.\n");
 }

Modified: team/murf/config_comments/channel.c
URL: http://svn.digium.com/view/asterisk/team/murf/config_comments/channel.c?rev=40387&r1=40386&r2=40387&view=diff
==============================================================================
--- team/murf/config_comments/channel.c (original)
+++ team/murf/config_comments/channel.c Fri Aug 18 10:51:14 2006
@@ -3349,7 +3349,8 @@
 
 	chan->_state = state;
 	ast_device_state_changed_literal(chan->name);
-	manager_event(EVENT_FLAG_CALL, "Newstate",
+	manager_event(EVENT_FLAG_CALL,
+		      (oldstate == AST_STATE_DOWN) ? "Newchannel" : "Newstate",
 		      "Channel: %s\r\n"
 		      "State: %s\r\n"
 		      "CallerID: %s\r\n"
@@ -3807,12 +3808,18 @@
 };
 
 struct tonepair_state {
-	float freq1;
-	float freq2;
-	float vol;
+	int fac1;
+	int fac2;
+	int v1_1;
+	int v2_1;
+	int v3_1;
+	int v1_2;
+	int v2_2;
+	int v3_2;
+	int origwfmt;
+	int pos;
 	int duration;
-	int pos;
-	int origwfmt;
+	int modulate;
 	struct ast_frame f;
 	unsigned char offset[AST_FRIENDLY_OFFSET];
 	short data[4000];
@@ -3840,10 +3847,16 @@
 		tonepair_release(NULL, ts);
 		ts = NULL;
 	} else {
-		ts->freq1 = td->freq1;
-		ts->freq2 = td->freq2;
+		ts->fac1 = 2.0 * cos(2.0 * M_PI * (td->freq1 / 8000.0)) * 32768.0;
+		ts->v1_1 = 0;
+		ts->v2_1 = sin(-4.0 * M_PI * (td->freq1 / 8000.0)) * td->vol;
+		ts->v3_1 = sin(-2.0 * M_PI * (td->freq1 / 8000.0)) * td->vol;
+		ts->v2_1 = 0;
+		ts->fac2 = 2.0 * cos(2.0 * M_PI * (td->freq2 / 8000.0)) * 32768.0;
+		ts->v2_2 = sin(-4.0 * M_PI * (td->freq2 / 8000.0)) * td->vol;
+		ts->v3_2 = sin(-2.0 * M_PI * (td->freq2 / 8000.0)) * td->vol;
 		ts->duration = td->duration;
-		ts->vol = td->vol;
+		ts->modulate = 0;
 	}
 	/* Let interrupts interrupt :) */
 	ast_set_flag(chan, AST_FLAG_WRITE_INT);
@@ -3865,12 +3878,23 @@
 		return -1;
 	}
 	memset(&ts->f, 0, sizeof(ts->f));
-	for (x = 0; x < (len / 2); x++) {
-		ts->data[x] = ts->vol * (
-				sin((ts->freq1 * 2.0 * M_PI / 8000.0) * (ts->pos + x)) +
-				sin((ts->freq2 * 2.0 * M_PI / 8000.0) * (ts->pos + x))
-			);
-	}
+ 	for (x=0;x<len/2;x++) {
+ 		ts->v1_1 = ts->v2_1;
+ 		ts->v2_1 = ts->v3_1;
+ 		ts->v3_1 = (ts->fac1 * ts->v2_1 >> 15) - ts->v1_1;
+ 		
+ 		ts->v1_2 = ts->v2_2;
+ 		ts->v2_2 = ts->v3_2;
+ 		ts->v3_2 = (ts->fac2 * ts->v2_2 >> 15) - ts->v1_2;
+ 		if (ts->modulate) {
+ 			int p;
+ 			p = ts->v3_2 - 32768;
+ 			if (p < 0) p = -p;
+ 			p = ((p * 9) / 10) + 1;
+ 			ts->data[x] = (ts->v3_1 * p) >> 15;
+ 		} else
+ 			ts->data[x] = ts->v3_1 + ts->v3_2; 
+ 	}
 	ts->f.frametype = AST_FRAME_VOICE;
 	ts->f.subclass = AST_FORMAT_SLINEAR;
 	ts->f.datalen = len;

Modified: team/murf/config_comments/channels/Makefile
URL: http://svn.digium.com/view/asterisk/team/murf/config_comments/channels/Makefile?rev=40387&r1=40386&r2=40387&view=diff
==============================================================================
--- team/murf/config_comments/channels/Makefile (original)
+++ team/murf/config_comments/channels/Makefile Fri Aug 18 10:51:14 2006
@@ -47,11 +47,6 @@
   C_MODS:=$(filter-out chan_misdn,$(C_MODS))
 endif
 
-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/lib/libbnec.so),)
-  EC_CFLAGS=-DWITH_BEROEC
-  EC_LIBS=-lbnec
-endif
-
 ifndef OPENH323DIR
   OPENH323DIR=$(HOME)/openh323
 endif
@@ -99,9 +94,9 @@
 misdn/chan_misdn_lib.a:
 	make -C misdn
 
-chan_misdn.o: CFLAGS+=-Imisdn -DCHAN_MISDN_VERSION=\"0.3.0\" $(EC_CFLAGS)
+chan_misdn.o: CFLAGS+=-Imisdn -DCHAN_MISDN_VERSION=\"0.3.0\" 
 
-misdn_config.o: CFLAGS+=-Imisdn -DCHAN_MISDN_VERSION=\"0.3.0\" $(EC_CFLAGS)
+misdn_config.o: CFLAGS+=-Imisdn -DCHAN_MISDN_VERSION=\"0.3.0\" 
 
 chan_misdn.so: chan_misdn.o misdn_config.o misdn/chan_misdn_lib.a
-chan_misdn.so: LIBS+=-lisdnnet -lmISDN -lsuppserv $(EC_LIBS)
+chan_misdn.so: LIBS+=-lisdnnet -lmISDN -lsuppserv 

Modified: team/murf/config_comments/channels/chan_alsa.c
URL: http://svn.digium.com/view/asterisk/team/murf/config_comments/channels/chan_alsa.c?rev=40387&r1=40386&r2=40387&view=diff
==============================================================================
--- team/murf/config_comments/channels/chan_alsa.c (original)
+++ team/murf/config_comments/channels/chan_alsa.c Fri Aug 18 10:51:14 2006
@@ -829,6 +829,7 @@
 		usecnt++;
 		ast_mutex_unlock(&usecnt_lock);
 		ast_update_use_count();
+		ast_jb_configure(tmp, &global_jbconf);
 		if (state != AST_STATE_DOWN) {
 			if (ast_pbx_start(tmp)) {
 				ast_log(LOG_WARNING, "Unable to start PBX on %s\n", tmp->name);
@@ -836,8 +837,6 @@
 				tmp = NULL;
 			}
 		}
-		if (tmp)
-			ast_jb_configure(tmp, &global_jbconf);
 	}
 	return tmp;
 }

Modified: team/murf/config_comments/channels/chan_h323.c
URL: http://svn.digium.com/view/asterisk/team/murf/config_comments/channels/chan_h323.c?rev=40387&r1=40386&r2=40387&view=diff
==============================================================================
--- team/murf/config_comments/channels/chan_h323.c (original)
+++ team/murf/config_comments/channels/chan_h323.c Fri Aug 18 10:51:14 2006
@@ -278,10 +278,13 @@
 		pvt->newcontrol = -1;
 	}
 	if (pvt->newdigit >= 0) {
-		struct ast_frame f = {AST_FRAME_DTMF, pvt->newdigit, };
-
-		f.samples = 800;
-		f.src = "UPDATE_INFO";
+		struct ast_frame f = {
+			.frametype = AST_FRAME_DTMF,
+			.subclass = pvt->newdigit,
+			.samples = 800,
+			.src = "UPDATE_INFO",
+		};
+
 		ast_queue_frame(c, &f);
 		pvt->newdigit = -1;
 	}
@@ -823,6 +826,8 @@
 			ch->cid.cid_dnid = strdup(pvt->exten);
 		}
 		ast_setstate(ch, state);
+		if (pvt->rtp)
+			ast_jb_configure(ch, &global_jbconf);
 		if (state != AST_STATE_DOWN) {
 			if (ast_pbx_start(ch)) {
 				ast_log(LOG_WARNING, "Unable to start PBX on %s\n", ch->name);
@@ -830,10 +835,6 @@
 				ch = NULL;
 			}
 		}
-
-		/* Configure the new channel jb */
-		if (ch && pvt && pvt->rtp)
-			ast_jb_configure(ch, &global_jbconf);
 	} else  {
 		ast_log(LOG_WARNING, "Unable to allocate channel structure\n");
 	}
@@ -1158,9 +1159,13 @@
 		return -1;
 	}
 	if (pvt->owner && !ast_mutex_trylock(&pvt->owner->lock)) {
-		struct ast_frame f = {AST_FRAME_DTMF, digit, };
-		f.samples = 800;
-		f.src = "SEND_DIGIT";
+		struct ast_frame f = {
+			.frametype = AST_FRAME_DTMF,
+			.subclass = digit,
+			.samples = 800,
+			.src = "SEND_DIGIT",
+		};
+
 		res = ast_queue_frame(pvt->owner, &f);
 		ast_mutex_unlock(&pvt->owner->lock);
 	} else {

Modified: team/murf/config_comments/channels/chan_jingle.c
URL: http://svn.digium.com/view/asterisk/team/murf/config_comments/channels/chan_jingle.c?rev=40387&r1=40386&r2=40387&view=diff
==============================================================================
--- team/murf/config_comments/channels/chan_jingle.c (original)
+++ team/murf/config_comments/channels/chan_jingle.c Fri Aug 18 10:51:14 2006
@@ -813,16 +813,14 @@
 		tmp->cid.cid_dnid = ast_strdup(i->exten);
 	tmp->priority = 1;
 	ast_setstate(tmp, state);
+	if (i->rtp)
+		ast_jb_configure(tmp, &global_jbconf);
 	if (state != AST_STATE_DOWN && ast_pbx_start(tmp)) {
 		ast_log(LOG_WARNING, "Unable to start PBX on %s\n", tmp->name);
 		tmp->hangupcause = AST_CAUSE_SWITCH_CONGESTION;
 		ast_hangup(tmp);
 		tmp = NULL;
 	}
-
-	/* Configure the new channel jb */
-	if (tmp && i && i->rtp)
-		ast_jb_configure(tmp, &global_jbconf);
 
 	return tmp;
 }

Modified: team/murf/config_comments/channels/chan_mgcp.c
URL: http://svn.digium.com/view/asterisk/team/murf/config_comments/channels/chan_mgcp.c?rev=40387&r1=40386&r2=40387&view=diff
==============================================================================
--- team/murf/config_comments/channels/chan_mgcp.c (original)
+++ team/murf/config_comments/channels/chan_mgcp.c Fri Aug 18 10:51:14 2006
@@ -1425,6 +1425,8 @@
 		if (!i->adsi)
 			tmp->adsicpe = AST_ADSI_UNAVAILABLE;
 		tmp->priority = 1;
+		if (sub->rtp)
+			ast_jb_configure(tmp, &global_jbconf);
 		if (state != AST_STATE_DOWN) {
 			if (ast_pbx_start(tmp)) {
 				ast_log(LOG_WARNING, "Unable to start PBX on %s\n", tmp->name);
@@ -1437,10 +1439,6 @@
 			ast_verbose(VERBOSE_PREFIX_3 "MGCP mgcp_new(%s) created in state: %s\n",
 				tmp->name, ast_state2str(state));
 		}
-
-		/* Configure the new channel jb */
-		if (tmp && sub && sub->rtp)
-			ast_jb_configure(tmp, &global_jbconf);
 	} else {
 		ast_log(LOG_WARNING, "Unable to allocate channel structure\n");
 	}
@@ -2462,12 +2460,14 @@
 						if (strncasecmp(v, p->sub->cxident, len) &&
 						    strncasecmp(v, p->sub->next->cxident, len)) {
 							/* connection id not found. delete it */
-							char cxident[80];
-							memcpy(cxident, v, len);
-							cxident[len] = '\0';
+							char cxident[80] = "";
+
+							if (len > (sizeof(cxident) - 1))
+								len = sizeof(cxident) - 1;
+							ast_copy_string(cxident, v, len);
 							if (option_verbose > 2) {
 								ast_verbose(VERBOSE_PREFIX_3 "Non existing connection id %s on %s@%s \n", 
-									cxident, p->name, gw->name);
+									    cxident, p->name, gw->name);
 							}
 							transmit_connection_del_w_params(p, NULL, cxident);
 						}

Modified: team/murf/config_comments/channels/chan_misdn.c
URL: http://svn.digium.com/view/asterisk/team/murf/config_comments/channels/chan_misdn.c?rev=40387&r1=40386&r2=40387&view=diff
==============================================================================
--- team/murf/config_comments/channels/chan_misdn.c (original)
+++ team/murf/config_comments/channels/chan_misdn.c Fri Aug 18 10:51:14 2006
@@ -260,6 +260,8 @@
 static struct sched_context *misdn_tasks = NULL;
 static pthread_t misdn_tasks_thread;
 
+static int *misdn_ports;
+
 static void chan_misdn_log(int level, int port, char *tmpl, ...);
 
 static struct ast_channel *misdn_new(struct chan_list *cl, int state,  char *exten, char *callerid, int format, int port, int c);
@@ -413,12 +415,38 @@
 }
 
 
-static void print_facility(struct FacReqParm *fac, struct misdn_bchannel *bc)
+static void print_facility(struct FacParm *fac, struct misdn_bchannel *bc)
 {
 	switch (fac->Function) {
-	case FacReq_CD:
+	case Fac_CD:
 		chan_misdn_log(0,bc->port," --> calldeflect to: %s, screened: %s\n", fac->u.CDeflection.DeflectedToNumber,
 					   fac->u.CDeflection.PresentationAllowed ? "yes" : "no");
+		break;
+	case Fac_AOCDCurrency:
+		if (fac->u.AOCDcur.chargeNotAvailable)
+			chan_misdn_log(0,bc->port," --> AOCD currency: charge not available\n");
+		else if (fac->u.AOCDcur.freeOfCharge)
+			chan_misdn_log(0,bc->port," --> AOCD currency: free of charge\n");
+		else if (fac->u.AOCDchu.billingId >= 0)
+			chan_misdn_log(0,bc->port," --> AOCD currency: currency:%s amount:%d multiplier:%d typeOfChargingInfo:%d billingId:%d\n",
+						   fac->u.AOCDcur.currency, fac->u.AOCDcur.currencyAmount, fac->u.AOCDcur.multiplier,
+						   (fac->u.AOCDcur.typeOfChargingInfo == 0) ? "subTotal" : "total", fac->u.AOCDcur.billingId);
+		else
+			chan_misdn_log(0,bc->port," --> AOCD currency: currency:%s amount:%d multiplier:%d typeOfChargingInfo:%d\n",
+						   fac->u.AOCDcur.currency, fac->u.AOCDcur.currencyAmount, fac->u.AOCDcur.multiplier,
+						   (fac->u.AOCDcur.typeOfChargingInfo == 0) ? "subTotal" : "total");
+		break;
+	case Fac_AOCDChargingUnit:
+		if (fac->u.AOCDchu.chargeNotAvailable)
+			chan_misdn_log(0,bc->port," --> AOCD charging unit: charge not available\n");
+		else if (fac->u.AOCDchu.freeOfCharge)
+			chan_misdn_log(0,bc->port," --> AOCD charging unit: free of charge\n");
+		else if (fac->u.AOCDchu.billingId >= 0)
+			chan_misdn_log(0,bc->port," --> AOCD charging unit: recordedUnits:%d typeOfChargingInfo:%s billingId:%d\n",
+						   fac->u.AOCDchu.recordedUnits, (fac->u.AOCDchu.typeOfChargingInfo == 0) ? "subTotal" : "total", fac->u.AOCDchu.billingId);
+		else
+			chan_misdn_log(0,bc->port," --> AOCD charging unit: recordedUnits:%d typeOfChargingInfo:%s\n",
+						   fac->u.AOCDchu.recordedUnits, (fac->u.AOCDchu.typeOfChargingInfo == 0) ? "subTotal" : "total");
 		break;
 	default:
 		chan_misdn_log(0,bc->port," --> unknown\n");
@@ -534,8 +562,8 @@
 
 static int misdn_l1_task (void *data)
 {
-	misdn_lib_isdn_l1watcher((int)data);
-	chan_misdn_log(5, (int)data, "L1watcher timeout\n");
+	misdn_lib_isdn_l1watcher(*(int *)data);
+	chan_misdn_log(5, *(int *)data, "L1watcher timeout\n");
 	return 1;
 }
 
@@ -957,13 +985,6 @@
 			"  --> state: %s\n"
 			"  --> capability: %s\n"
 			"  --> echo_cancel: %d\n"
-#ifdef WITH_BEROEC
-			"  --> bnec_tail: %d\n"
-			"  --> bnec_nlp: %d\n"
-			"  --> bnec_ah: %d\n"
-			"  --> bnec_td: %d\n"
-			"  --> bnec_zerocoeff: %d\n"
-#endif
 			"  --> notone : rx %d tx:%d\n"
 			"  --> bc_hold: %d holded_bc :%d\n",
 			help->ast->name,
@@ -978,13 +999,6 @@
 			bearer2str(bc->capability),
 			bc->ec_enable,
 
-#ifdef WITH_BEROEC
-			bc->bnec_tail,
-			bc->bnec_nlp,
-			bc->bnec_ah,
-			bc->bnec_td,
-			bc->bnec_zero,
-#endif
 			help->norxtone,help->notxtone,
 			bc->holded, help->holded_bc?1:0
 			);
@@ -1128,7 +1142,7 @@
 				ast_cli(fd, "Sending CD with nr %s to %s failed: Number too long (up to 15 digits are allowed).\n",nr, channame);
 				return 0; 
 			}
-			tmp->bc->fac_out.Function = FacReq_CD;
+			tmp->bc->fac_out.Function = Fac_CD;
 			strncpy((char *)tmp->bc->fac_out.u.CDeflection.DeflectedToNumber, nr, sizeof(tmp->bc->fac_out.u.CDeflection.DeflectedToNumber));
 			misdn_lib_send_event(tmp->bc, EVENT_FACILITY);
 		}
@@ -1329,155 +1343,51 @@
 	return NULL;
 }
 
-static struct ast_cli_entry cli_send_cd =
-{ {"misdn","send","calldeflect", NULL},
-  misdn_send_cd,
-  "Sends CallDeflection to mISDN Channel", 
-  "Usage: misdn send calldeflect <channel> \"<nr>\" \n",
-  complete_ch
+static struct ast_cli_entry chan_misdn_clis[] = {
+	{ {"misdn","send","calldeflect", NULL}, misdn_send_cd, "Sends CallDeflection to mISDN Channel",
+		"Usage: misdn send calldeflect <channel> \"<nr>\" \n", complete_ch },
+	{ {"misdn","send","digit", NULL}, misdn_send_digit,	"Sends DTMF Digit to mISDN Channel",
+		"Usage: misdn send digit <channel> \"<msg>\" \n"
+		"       Send <digit> to <channel> as DTMF Tone\n"
+		"       when channel is a mISDN channel\n", complete_ch },
+	{ {"misdn","toggle","echocancel", NULL}, misdn_toggle_echocancel, "Toggles EchoCancel on mISDN Channel",
+		"Usage: misdn toggle echocancel <channel>\n", complete_ch },
+	{ {"misdn","send","display", NULL}, misdn_send_display, "Sends Text to mISDN Channel", 
+		"Usage: misdn send display <channel> \"<msg>\" \n"
+		"       Send <msg> to <channel> as Display Message\n"
+		"       when channel is a mISDN channel\n", complete_ch },
+	{ {"misdn","show","config", NULL}, misdn_show_config, "Shows internal mISDN config, read from cfg-file",
+		"Usage: misdn show config [<port> | description <config element> | descriptions [general|ports]]\n"
+		"       Use 0 for <port> to only print the general config.\n", complete_show_config },
+	{ {"misdn","reload", NULL}, misdn_reload, "Reloads internal mISDN config, read from cfg-file",
+		"Usage: misdn reload\n" },
+	{ {"misdn","set","tics", NULL}, misdn_set_tics, "", 
+		"\n" },
+	{ {"misdn","show","channels", NULL}, misdn_show_cls, "Shows internal mISDN chan_list",
+		"Usage: misdn show channels\n" },
+	{ {"misdn","show","channel", NULL}, misdn_show_cl, "Shows internal mISDN chan_list",
+		"Usage: misdn show channels\n", complete_ch },
+	{ {"misdn","port","block", NULL}, misdn_port_block, "Blocks the given port",
+		"Usage: misdn port block\n" },
+	{ {"misdn","port","unblock", NULL}, misdn_port_unblock, "Unblocks the given port",
+		"Usage: misdn port unblock\n" },
+	{ {"misdn","restart","port", NULL}, misdn_restart_port, "Restarts the given port",
+		"Usage: misdn restart port\n" },
+	{ {"misdn","port","up", NULL}, misdn_port_up, "Tries to establish L1 on the given port",
+		"Usage: misdn port up <port>\n" },
+	{ {"misdn","port","down", NULL}, misdn_port_down, "Tries to deacivate the L1 on the given port",
+		"Usage: misdn port down <port>\n" },
+	{ {"misdn","show","stacks", NULL}, misdn_show_stacks, "Shows internal mISDN stack_list",
+		"Usage: misdn show stacks\n" },
+	{ {"misdn","show","ports","stats", NULL}, misdn_show_ports_stats, "Shows chan_misdns call statistics per port",
+		"Usage: misdn show port stats\n" },
+	{ {"misdn","show","port", NULL}, misdn_show_port, "Shows detailed information for given port",
+		"Usage: misdn show port <port>\n" },
+	{ {"misdn","set","debug", NULL}, misdn_set_debug, "Sets Debuglevel of chan_misdn",
+		"Usage: misdn set debug <level> [only] | [port <port> [only]]\n", complete_debug_port },
+	{ {"misdn","set","crypt","debug", NULL}, misdn_set_crypt_debug, "Sets CryptDebuglevel of chan_misdn, at the moment, level={1,2}",
+		"Usage: misdn set crypt debug <level>\n" }
 };
-
-static struct ast_cli_entry cli_send_digit =
-{ {"misdn","send","digit", NULL},
-  misdn_send_digit,
-  "Sends DTMF Digit to mISDN Channel", 
-  "Usage: misdn send digit <channel> \"<msg>\" \n"
-  "       Send <digit> to <channel> as DTMF Tone\n"
-  "       when channel is a mISDN channel\n",
-  complete_ch
-};
-
-static struct ast_cli_entry cli_toggle_echocancel =
-{ {"misdn","toggle","echocancel", NULL},
-  misdn_toggle_echocancel,
-  "Toggles EchoCancel on mISDN Channel", 
-  "Usage: misdn toggle echocancel <channel>\n", 
-  complete_ch
-};
-
-static struct ast_cli_entry cli_send_display =
-{ {"misdn","send","display", NULL},
-  misdn_send_display,
-  "Sends Text to mISDN Channel", 
-  "Usage: misdn send display <channel> \"<msg>\" \n"
-  "       Send <msg> to <channel> as Display Message\n"
-  "       when channel is a mISDN channel\n",
-  complete_ch
-};
-
-static struct ast_cli_entry cli_show_config =
-{ {"misdn","show","config", NULL},
-  misdn_show_config,
-  "Shows internal mISDN config, read from cfg-file", 
-  "Usage: misdn show config [<port> | description <config element> | descriptions [general|ports]]\n"
-  "       Use 0 for <port> to only print the general config.\n",
-  complete_show_config
-};
- 
-static struct ast_cli_entry cli_reload =
-{ {"misdn","reload", NULL},
-  misdn_reload,
-  "Reloads internal mISDN config, read from cfg-file", 
-  "Usage: misdn reload\n"
-};
-
-static struct ast_cli_entry cli_set_tics =
-{ {"misdn","set","tics", NULL},
-  misdn_set_tics,
-  "", 
-  "\n"
-};
-
-static struct ast_cli_entry cli_show_cls =
-{ {"misdn","show","channels", NULL},
-  misdn_show_cls,
-  "Shows internal mISDN chan_list", 
-  "Usage: misdn show channels\n"
-};
-
-static struct ast_cli_entry cli_show_cl =
-{ {"misdn","show","channel", NULL},
-  misdn_show_cl,
-  "Shows internal mISDN chan_list", 
-  "Usage: misdn show channels\n",
-  complete_ch
-};
-
-static struct ast_cli_entry cli_port_block=
-{ {"misdn","port","block", NULL},
-  misdn_port_block,
-  "Blocks the given port", 
-  "Usage: misdn port block\n"
-};
-
-static struct ast_cli_entry cli_port_unblock=
-{ {"misdn","port","unblock", NULL},
-  misdn_port_unblock,
-  "Unblocks the given port", 
-  "Usage: misdn port unblock\n"
-};
-
-
-static struct ast_cli_entry cli_restart_port =
-{ {"misdn","restart","port", NULL},
-  misdn_restart_port,
-  "Restarts the given port", 
-  "Usage: misdn restart port\n"
-};
-
-static struct ast_cli_entry cli_port_up =
-{ {"misdn","port","up", NULL},
-  misdn_port_up,
-  "Tries to establish L1 on the given port", 
-  "Usage: misdn port up <port>\n"
-};
-
-static struct ast_cli_entry cli_port_down =
-{ {"misdn","port","down", NULL},
-  misdn_port_down,
-  "Tries to deacivate the L1 on the given port", 
-  "Usage: misdn port down <port>\n"
-};
-
-
-
-static struct ast_cli_entry cli_show_stacks =
-{ {"misdn","show","stacks", NULL},
-  misdn_show_stacks,
-  "Shows internal mISDN stack_list", 
-  "Usage: misdn show stacks\n"
-};
-
-static struct ast_cli_entry cli_show_ports_stats =
-{ {"misdn","show","ports","stats", NULL},
-  misdn_show_ports_stats,
-  "Shows chan_misdns call statistics per port", 
-  "Usage: misdn show port stats\n"
-};
-
-
-static struct ast_cli_entry cli_show_port =
-{ {"misdn","show","port", NULL},
-  misdn_show_port,
-  "Shows detailed information for given port", 
-  "Usage: misdn show port <port>\n"
-};
-
-static struct ast_cli_entry cli_set_debug =
-{ {"misdn","set","debug", NULL},
-  misdn_set_debug,
-  "Sets Debuglevel of chan_misdn",
-  "Usage: misdn set debug <level> [only] | [port <port> [only]]\n",
-  complete_debug_port
-};
-
-static struct ast_cli_entry cli_set_crypt_debug =
-{ {"misdn","set","crypt","debug", NULL},
-  misdn_set_crypt_debug,
-  "Sets CryptDebuglevel of chan_misdn, at the moment, level={1,2}", 
-  "Usage: misdn set crypt debug <level>\n"
-};
-/*** CLI END ***/
 
 
 static int update_config (struct chan_list *ch, int orig) 
@@ -1663,19 +1573,6 @@
 	}
 #endif
 
-#ifdef WITH_BEROEC
-	misdn_cfg_get(port, MISDN_CFG_BNECHOCANCEL,&bc->bnec_tail, sizeof(int));
-	misdn_cfg_get(port, MISDN_CFG_BNEC_ANTIHOWL, &bc->bnec_ah, sizeof(int));
-	misdn_cfg_get(port, MISDN_CFG_BNEC_NLP, &bc->bnec_nlp, sizeof(int));
-	misdn_cfg_get(port, MISDN_CFG_BNEC_TD, &bc->bnec_td, sizeof(int));
-	misdn_cfg_get(port, MISDN_CFG_BNEC_ADAPT, &bc->bnec_adapt, sizeof(int));
-	misdn_cfg_get(port, MISDN_CFG_BNEC_ZEROCOEFF, &bc->bnec_zero, sizeof(int));
-
-	if (bc->bnec_tail && bc->ec_enable) {
-		ast_log(LOG_WARNING,"Are you sure you wan't to mix BNEC with Zapec ? This might cause bad audio quality!\n");
-		bc->ec_enable=0;
-	}
-#endif
 	return 0;
 }
 
@@ -1895,6 +1792,9 @@
 		if (!ch->trans)
 			ch->trans=ast_translator_build_path(AST_FORMAT_SLINEAR, AST_FORMAT_ALAW);
 	}
+
+	/* AOCD initialization */
+	bc->AOCDtype = Fac_None;
 
 	return 0;
 }
@@ -4480,29 +4380,34 @@
 		print_facility(&(bc->fac_in), bc);
 		
 		switch (bc->fac_in.Function) {
-		case FacReq_CD:
-		{
-			struct ast_channel *bridged=AST_BRIDGED_P(ch->ast);
-			struct chan_list *ch_br;
-			
-			if (bridged && MISDN_ASTERISK_TECH_PVT(bridged)) {
-				ch_br=MISDN_ASTERISK_TECH_PVT(bridged);
-				/*ch->state=MISDN_FACILITY_DEFLECTED;*/
-				if (ch_br->bc) {
-					if (ast_exists_extension(bridged, ch->context, (char *)bc->fac_in.u.CDeflection.DeflectedToNumber, 1, bc->oad)) {
-						ch_br->state=MISDN_DIALING;
-						if (pbx_start_chan(ch_br) < 0) {
-							chan_misdn_log(-1, ch_br->bc->port, "ast_pbx_start returned < 0 in misdn_overlap_dial_task\n");
+		case Fac_CD:
+			{
+				struct ast_channel *bridged=AST_BRIDGED_P(ch->ast);
+				struct chan_list *ch_br;
+				if (bridged && MISDN_ASTERISK_TECH_PVT(bridged)) {
+					ch_br=MISDN_ASTERISK_TECH_PVT(bridged);
+					/*ch->state=MISDN_FACILITY_DEFLECTED;*/
+					if (ch_br->bc) {
+						if (ast_exists_extension(bridged, ch->context, (char *)bc->fac_in.u.CDeflection.DeflectedToNumber, 1, bc->oad)) {
+							ch_br->state=MISDN_DIALING;
+							if (pbx_start_chan(ch_br) < 0) {
+								chan_misdn_log(-1, ch_br->bc->port, "ast_pbx_start returned < 0 in misdn_overlap_dial_task\n");
+							}
 						}
 					}
+
 				}
-				
-			}
-			
-			misdn_lib_send_event(bc, EVENT_DISCONNECT);
-		} 
-		
-		break;
+				misdn_lib_send_event(bc, EVENT_DISCONNECT);
+			} 
+			break;
+		case Fac_AOCDCurrency:
+			bc->AOCDtype = Fac_AOCDCurrency;
+			memcpy(&(bc->AOCD.currency), &(bc->fac_in.u.AOCDcur), sizeof(struct FacAOCDCurrency));
+			break;
+		case Fac_AOCDChargingUnit:
+			bc->AOCDtype = Fac_AOCDChargingUnit;
+			memcpy(&(bc->AOCD.chargingUnit), &(bc->fac_in.u.AOCDchu), sizeof(struct FacAOCDChargingUnit));
+			break;
 		default:
 			chan_misdn_log(0, bc->port," --> not yet handled: facility type:%p\n", bc->fac_in.Function);
 		}
@@ -4545,28 +4450,8 @@
 	
 	if (!g_config_initialized) return 0;
 	
-	ast_cli_unregister(&cli_send_display);
-	
-	ast_cli_unregister(&cli_send_cd);
-	
-	ast_cli_unregister(&cli_send_digit);
-	ast_cli_unregister(&cli_toggle_echocancel);
-	ast_cli_unregister(&cli_set_tics);
-  
-	ast_cli_unregister(&cli_show_cls);
-	ast_cli_unregister(&cli_show_cl);
-	ast_cli_unregister(&cli_show_config);
-	ast_cli_unregister(&cli_show_port);
-	ast_cli_unregister(&cli_show_ports_stats);
-	ast_cli_unregister(&cli_show_stacks);
-	ast_cli_unregister(&cli_port_block);
-	ast_cli_unregister(&cli_port_unblock);
-	ast_cli_unregister(&cli_restart_port);
-	ast_cli_unregister(&cli_port_up);
-	ast_cli_unregister(&cli_port_down);
-	ast_cli_unregister(&cli_set_debug);
-	ast_cli_unregister(&cli_set_crypt_debug);
-	ast_cli_unregister(&cli_reload);
+	ast_cli_unregister_multiple(chan_misdn_clis, sizeof(chan_misdn_clis) / sizeof(chan_misdn_clis[0]));
+	
 	/* ast_unregister_application("misdn_crypt"); */

[... 1297 lines stripped ...]


More information about the asterisk-commits mailing list