[asterisk-commits] murf: branch murf/bug8221-1.4 r59287 - in /team/murf/bug8221-1.4: ./ apps/ ch...

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Tue Mar 27 20:03:20 MST 2007


Author: murf
Date: Tue Mar 27 22:03:20 2007
New Revision: 59287

URL: http://svn.digium.com/view/asterisk?view=rev&rev=59287
Log:
Merged revisions 59180,59182,59188-59189,59195,59200,59202,59206-59207,59209,59213,59215,59217,59223,59225,59227-59228,59230,59254,59256,59259,59261-59262,59273,59275,59278,59281,59284 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.4

................
r59180 | kpfleming | 2007-03-22 17:34:22 -0600 (Thu, 22 Mar 2007) | 2 lines

remove variables that are no longer used (--enable-dev-mode is good, developers should be using it)

................
r59182 | kpfleming | 2007-03-22 17:40:01 -0600 (Thu, 22 Mar 2007) | 2 lines

don't allow string input to overrun the buffer to hold it

................
r59188 | murf | 2007-03-23 10:09:01 -0600 (Fri, 23 Mar 2007) | 9 lines

Merged revisions 59186 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r59186 | murf | 2007-03-23 09:57:26 -0600 (Fri, 23 Mar 2007) | 1 line

Added a few words in the Macro doc strings about the behavior of macros with hangups (et al.), as per 9337
........

................
r59189 | murf | 2007-03-23 10:11:15 -0600 (Fri, 23 Mar 2007) | 1 line

blocking out the fix in 59187... already incorporated here
................
r59195 | file | 2007-03-23 19:39:44 -0600 (Fri, 23 Mar 2007) | 10 lines

Merged revisions 59194 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r59194 | file | 2007-03-23 21:35:49 -0400 (Fri, 23 Mar 2007) | 2 lines

Only try to handle a response if it has a response code.

........

................
r59200 | file | 2007-03-26 09:16:29 -0600 (Mon, 26 Mar 2007) | 2 lines

Have ast_copy_string magically appear in the aelparse binary! DONT_OPTIMIZE should now work once again.

................
r59202 | nadi | 2007-03-26 09:25:53 -0600 (Mon, 26 Mar 2007) | 4 lines

* mISDN >= 1.2 provides a dsp pipeline for i.e. echo cancellation modules, make chan_misdn use it.
* add a check for linux/mISDNdsp.h to configure.ac and update the autogenerated files: 'configure', 'autoconfig.h.in'
  (the 'configure' script was not in sync with the latest configure.ac, so the diff is a bit bigger than expected).

................
r59206 | murf | 2007-03-26 11:38:29 -0600 (Mon, 26 Mar 2007) | 1 line

A fix for the flex input files, DONT_COMPILE, and STANDALONE_AEL
................
r59207 | russell | 2007-03-26 11:45:55 -0600 (Mon, 26 Mar 2007) | 7 lines

The AUDIORTPQOS and VIDEORTPQOS variables are not fully functional in some
because they get set in sip_hangup.  So, there are common situations where
the variables will not be available in the dialplan at all.  So, this patch
provides an alternate method for getting to this information by introducing
AUDIORTPQOS and VIDEORTPQOS dialplan functions.
(issue #9370, patch by Corydon76, with some testing by blitzrage)

................
r59209 | russell | 2007-03-26 11:53:07 -0600 (Mon, 26 Mar 2007) | 1 line

Rename the new dialplan functions to match the variable name
................
r59213 | file | 2007-03-26 12:13:06 -0600 (Mon, 26 Mar 2007) | 2 lines

Make SpeechBackground obey the digit timeout value.

................
r59215 | russell | 2007-03-26 12:28:29 -0600 (Mon, 26 Mar 2007) | 3 lines

Fix some codec negotiation problems when CallerID support is not enabled in SLA.
(issue #9308, reported by twilson)

................
r59217 | russell | 2007-03-26 12:33:50 -0600 (Mon, 26 Mar 2007) | 4 lines

Somehow the code for building the email for voicemail got out of sync.  This
change makes a few tweaks to get 1.4 in sync with trunk.
(issue #9301)

................
r59223 | file | 2007-03-26 13:34:14 -0600 (Mon, 26 Mar 2007) | 2 lines

Add ability to specify no timeout. This means as soon as the prompt is done playing it moves on to the next priority.

................
r59225 | murf | 2007-03-26 14:06:12 -0600 (Mon, 26 Mar 2007) | 1 line

Fix for 9257; by eliminating the globals in main/config.c, we make it thread-safe, which is a minimum requirement.
................
r59227 | tilghman | 2007-03-26 15:37:41 -0600 (Mon, 26 Mar 2007) | 2 lines

Change this to a single dp function to make oej happy.

................
r59228 | murf | 2007-03-26 15:41:32 -0600 (Mon, 26 Mar 2007) | 1 line

fix for 9373 (duplicate context in AEL crashes asterisk). I turned a duplicate context from a WARNING to an ERROR. Now you get a module load failure, and asterisk just exits. That's better than a crash, right\?
................
r59230 | tilghman | 2007-03-26 15:45:44 -0600 (Mon, 26 Mar 2007) | 2 lines

Oops, this should be case insensitive

................
r59254 | crichter | 2007-03-27 09:00:10 -0600 (Tue, 27 Mar 2007) | 9 lines

Merged revisions 59252 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r59252 | crichter | 2007-03-27 15:56:15 +0200 (Di, 27 Mär 2007) | 1 line

fixed #9355
........

................
r59256 | russell | 2007-03-27 10:20:53 -0600 (Tue, 27 Mar 2007) | 4 lines

Convert the RTPQOS function to just be additional parameter of the CHANNEL
function.  This way, it will be possible for other RTP based channel drivers
to expose this information in the future.

................
r59259 | russell | 2007-03-27 12:05:46 -0600 (Tue, 27 Mar 2007) | 12 lines

Merged revisions 59258 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r59258 | russell | 2007-03-27 13:04:02 -0500 (Tue, 27 Mar 2007) | 4 lines

Fix the use of the "sourceaddress" option when "bindaddr" is set to 0.0.0.0
instead of having each interface explicitly listed.
(issue #7874, patch by stevens)

........

................
r59261 | murf | 2007-03-27 12:16:32 -0600 (Tue, 27 Mar 2007) | 1 line

via 9373 (duplicate context in AEL crashes asterisk), kpfleming pointed on asterisk-dev, that DECLINE in this case the proper thing to do. This change now has it doing the proper thing.
................
r59262 | russell | 2007-03-27 12:17:47 -0600 (Tue, 27 Mar 2007) | 3 lines

Fix the check that ensures that the CHANNEL function's first argument is "rtpqos".
Thanks, Corydon.  :)

................
r59273 | russell | 2007-03-27 17:02:12 -0600 (Tue, 27 Mar 2007) | 4 lines

Fix app_directory when ODBC_STORAGE is being used.  The Makefile did not
properly ensure that this information got copied from what was selected
for app_voicemail.  (issue #9224)

................
r59275 | russell | 2007-03-27 17:16:27 -0600 (Tue, 27 Mar 2007) | 3 lines

Fix app_directory to actually compile with ODBC_STORAGE, and update the code to
the latest res_odbc API.

................
r59278 | russell | 2007-03-27 17:20:22 -0600 (Tue, 27 Mar 2007) | 11 lines

Merged revisions 59277 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r59277 | russell | 2007-03-27 18:19:41 -0500 (Tue, 27 Mar 2007) | 3 lines

Fix the check of the return value from mmap().  Thanks to Corydon for catching
this one.

........

................
r59281 | tilghman | 2007-03-27 17:32:46 -0600 (Tue, 27 Mar 2007) | 10 lines

Merged revisions 59280 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r59280 | tilghman | 2007-03-27 18:31:20 -0500 (Tue, 27 Mar 2007) | 2 lines

Fix a few remaining bad mmap(2) return values

........

................
r59284 | tilghman | 2007-03-27 17:37:31 -0600 (Tue, 27 Mar 2007) | 10 lines

Merged revisions 59283 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r59283 | tilghman | 2007-03-27 18:36:49 -0500 (Tue, 27 Mar 2007) | 2 lines

Oops

........

................

Modified:
    team/murf/bug8221-1.4/   (props changed)
    team/murf/bug8221-1.4/apps/Makefile
    team/murf/bug8221-1.4/apps/app_directory.c
    team/murf/bug8221-1.4/apps/app_macro.c
    team/murf/bug8221-1.4/apps/app_meetme.c
    team/murf/bug8221-1.4/apps/app_speech_utils.c
    team/murf/bug8221-1.4/apps/app_voicemail.c
    team/murf/bug8221-1.4/channels/chan_iax2.c
    team/murf/bug8221-1.4/channels/chan_misdn.c
    team/murf/bug8221-1.4/channels/chan_sip.c
    team/murf/bug8221-1.4/channels/misdn/Makefile
    team/murf/bug8221-1.4/channels/misdn/chan_misdn_config.h
    team/murf/bug8221-1.4/channels/misdn/isdn_lib.c
    team/murf/bug8221-1.4/channels/misdn/isdn_lib.h
    team/murf/bug8221-1.4/channels/misdn_config.c
    team/murf/bug8221-1.4/configure
    team/murf/bug8221-1.4/configure.ac
    team/murf/bug8221-1.4/funcs/func_channel.c
    team/murf/bug8221-1.4/include/asterisk/autoconfig.h.in
    team/murf/bug8221-1.4/include/asterisk/rtp.h
    team/murf/bug8221-1.4/main/ast_expr2.fl
    team/murf/bug8221-1.4/main/ast_expr2f.c
    team/murf/bug8221-1.4/main/config.c
    team/murf/bug8221-1.4/main/rtp.c
    team/murf/bug8221-1.4/pbx/ael/ael.flex
    team/murf/bug8221-1.4/pbx/ael/ael_lex.c
    team/murf/bug8221-1.4/pbx/pbx_ael.c

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

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

Propchange: team/murf/bug8221-1.4/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Tue Mar 27 22:03:20 2007
@@ -1,1 +1,1 @@
-/branches/1.4:1-59157
+/branches/1.4:1-59286

Modified: team/murf/bug8221-1.4/apps/Makefile
URL: http://svn.digium.com/view/asterisk/team/murf/bug8221-1.4/apps/Makefile?view=diff&rev=59287&r1=59286&r2=59287
==============================================================================
--- team/murf/bug8221-1.4/apps/Makefile (original)
+++ team/murf/bug8221-1.4/apps/Makefile Tue Mar 27 22:03:20 2007
@@ -21,11 +21,14 @@
   LOADABLE_MODS:=
 endif
 
+MENUSELECT_OPTS_app_directory:=$(MENUSELECT_OPTS_app_voicemail)
 ifneq ($(findstring ODBC_STORAGE,$(MENUSELECT_OPTS_app_voicemail)),)
 MENUSELECT_DEPENDS_app_voicemail+=$(MENUSELECT_DEPENDS_ODBC_STORAGE)
+MENUSELECT_DEPENDS_app_directory+=$(MENUSELECT_DEPENDS_ODBC_STORAGE)
 endif
 ifneq ($(findstring IMAP_STORAGE,$(MENUSELECT_OPTS_app_voicemail)),)
 MENUSELECT_DEPENDS_app_voicemail+=$(MENUSELECT_DEPENDS_IMAP_STORAGE)
+MENUSELECT_DEPENDS_app_directory+=$(MENUSELECT_DEPENDS_IMAP_STORAGE)
 endif
 
 ifeq (SunOS,$(shell uname))

Modified: team/murf/bug8221-1.4/apps/app_directory.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug8221-1.4/apps/app_directory.c?view=diff&rev=59287&r1=59286&r2=59287
==============================================================================
--- team/murf/bug8221-1.4/apps/app_directory.c (original)
+++ team/murf/bug8221-1.4/apps/app_directory.c Tue Mar 27 22:03:20 2007
@@ -45,7 +45,7 @@
 #include "asterisk/utils.h"
 #include "asterisk/app.h"
 
-#ifdef USE_ODBC_STORAGE
+#ifdef ODBC_STORAGE
 #include <errno.h>
 #include <sys/mman.h>
 #include "asterisk/res_odbc.h"
@@ -88,23 +88,23 @@
 #define NUMDIGITS 3
 
 
-#ifdef USE_ODBC_STORAGE
+#ifdef ODBC_STORAGE
 static void retrieve_file(char *dir)
 {
 	int x = 0;
 	int res;
 	int fd=-1;
 	size_t fdlen = 0;
-	void *fdm=NULL;
+	void *fdm = MAP_FAILED;
 	SQLHSTMT stmt;
 	char sql[256];
 	char fmt[80]="";
 	char *c;
 	SQLLEN colsize;
 	char full_fn[256];
-
-	odbc_obj *obj;
-	obj = fetch_odbc_obj(odbc_database, 0);
+	struct odbc_obj *obj;
+
+	obj = ast_odbc_request_obj(odbc_database, 1);
 	if (obj) {
 		do {
 			ast_copy_string(fmt, vmfmts, sizeof(fmt));
@@ -127,7 +127,7 @@
 				break;
 			}
 			SQLBindParameter(stmt, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_CHAR, strlen(dir), 0, (void *)dir, 0, NULL);
-			res = odbc_smart_execute(obj, stmt);
+			res = ast_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);
 				SQLFreeHandle(SQL_HANDLE_STMT, stmt);
@@ -162,7 +162,7 @@
 				if (fd > -1)
 					fdm = mmap(NULL, fdlen, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
 			}
-			if (fdm) {
+			if (fdm != MAP_FAILED) {
 				memset(fdm, 0, fdlen);
 				res = SQLGetData(stmt, x + 1, SQL_BINARY, fdm, fdlen, &colsize);
 				if ((res != SQL_SUCCESS) && (res != SQL_SUCCESS_WITH_INFO)) {
@@ -173,9 +173,10 @@
 			}
 			SQLFreeHandle(SQL_HANDLE_STMT, stmt);
 		} while (0);
+		ast_odbc_release_obj(obj);
 	} else
 		ast_log(LOG_WARNING, "Failed to obtain database object for '%s'!\n", odbc_database);
-	if (fdm)
+	if (fdm != MAP_FAILED)
 		munmap(fdm, fdlen);
 	if (fd > -1)
 		close(fd);
@@ -264,11 +265,14 @@
 	int res = 0;
 	int loop;
 	char fn[256];
+#ifdef ODBC_STORAGE
+	char fn2[256];
+#endif
 
 	/* Check for the VoiceMail2 greeting first */
 	snprintf(fn, sizeof(fn), "%s/voicemail/%s/%s/greet",
 		ast_config_AST_SPOOL_DIR, context, ext);
-#ifdef USE_ODBC_STORAGE
+#ifdef ODBC_STORAGE
 	retrieve_file(fn);
 #endif
 
@@ -277,7 +281,7 @@
 		snprintf(fn, sizeof(fn), "%s/vm/%s/greet",
 			ast_config_AST_SPOOL_DIR, ext);
 	}
-#ifdef USE_ODBC_STORAGE
+#ifdef ODBC_STORAGE
 	retrieve_file(fn2);
 #endif
 
@@ -296,7 +300,7 @@
 			res = ast_say_character_str(chan, ext, AST_DIGIT_ANY, chan->language);
 		}
 	}
-#ifdef USE_ODBC_STORAGE
+#ifdef ODBC_STORAGE
 	ast_filedelete(fn, NULL);	
 	ast_filedelete(fn2, NULL);	
 #endif
@@ -653,9 +657,9 @@
 
 static int load_module(void)
 {
-#ifdef USE_ODBC_STORAGE
+#ifdef ODBC_STORAGE
 	struct ast_config *cfg = ast_config_load(VOICEMAIL_CONFIG);
-	char *tmp;
+	const char *tmp;
 
 	if (cfg) {
 		if ((tmp = ast_variable_retrieve(cfg, "general", "odbcstorage"))) {

Modified: team/murf/bug8221-1.4/apps/app_macro.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug8221-1.4/apps/app_macro.c?view=diff&rev=59287&r1=59286&r2=59287
==============================================================================
--- team/murf/bug8221-1.4/apps/app_macro.c (original)
+++ team/murf/bug8221-1.4/apps/app_macro.c Tue Mar 27 22:03:20 2007
@@ -61,6 +61,11 @@
 "will be returned at the location of the Goto.\n"
 "If ${MACRO_OFFSET} is set at termination, Macro will attempt to continue\n"
 "at priority MACRO_OFFSET + N + 1 if such a step exists, and N + 1 otherwise.\n"
+"Extensions: While a macro is being executed, it becomes the current context.\n"
+"            This means that if a hangup occurs, for instance, that the macro\n"
+"            will be searched for an 'h' extension, NOT the context from which\n"
+"            the macro was called. So, make sure to define all appropriate\n"
+"            extensions in your macro! (you can use 'catch' in AEL) \n"
 "WARNING: Because of the way Macro is implemented (it executes the priorities\n"
 "         contained within it via sub-engine), and a fixed per-thread\n"
 "         memory stack allowance, macros are limited to 7 levels\n"

Modified: team/murf/bug8221-1.4/apps/app_meetme.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug8221-1.4/apps/app_meetme.c?view=diff&rev=59287&r1=59286&r2=59287
==============================================================================
--- team/murf/bug8221-1.4/apps/app_meetme.c (original)
+++ team/murf/bug8221-1.4/apps/app_meetme.c Tue Mar 27 22:03:20 2007
@@ -3476,6 +3476,8 @@
 	char *tech, *tech_data;
 	struct ast_dial *dial;
 	struct sla_ringing_station *ringing_station;
+	const char *cid_name = NULL, *cid_num = NULL;
+	enum ast_dial_result res;
 
 	if (!(dial = ast_dial_create()))
 		return -1;
@@ -3489,8 +3491,25 @@
 		return -1;
 	}
 
-	if (ast_dial_run(dial, sla.attempt_callerid ? ringing_trunk->trunk->chan : NULL, 1) 
-		!= AST_DIAL_RESULT_TRYING) {
+	if (!sla.attempt_callerid && !ast_strlen_zero(ringing_trunk->trunk->chan->cid.cid_name)) {
+		cid_name = ast_strdupa(ringing_trunk->trunk->chan->cid.cid_name);
+		free(ringing_trunk->trunk->chan->cid.cid_name);
+		ringing_trunk->trunk->chan->cid.cid_name = NULL;
+	}
+	if (!sla.attempt_callerid && !ast_strlen_zero(ringing_trunk->trunk->chan->cid.cid_num)) {
+		cid_num = ast_strdupa(ringing_trunk->trunk->chan->cid.cid_num);
+		free(ringing_trunk->trunk->chan->cid.cid_num);
+		ringing_trunk->trunk->chan->cid.cid_num = NULL;
+	}
+
+	res = ast_dial_run(dial, ringing_trunk->trunk->chan, 1);
+	
+	if (cid_name)
+		ringing_trunk->trunk->chan->cid.cid_name = ast_strdup(cid_name);
+	if (cid_num)
+		ringing_trunk->trunk->chan->cid.cid_num = ast_strdup(cid_num);
+	
+	if (res != AST_DIAL_RESULT_TRYING) {
 		struct sla_failed_station *failed_station;
 		ast_dial_destroy(dial);
 		if (!(failed_station = ast_calloc(1, sizeof(*failed_station))))
@@ -3932,6 +3951,7 @@
 	struct ast_conference *conf;
 	struct ast_flags conf_flags = { 0 };
 	struct sla_trunk_ref *trunk_ref = args->trunk_ref;
+	const char *cid_name = NULL, *cid_num = NULL;
 
 	if (!(dial = ast_dial_create())) {
 		ast_mutex_lock(args->cond_lock);
@@ -3950,7 +3970,24 @@
 		return NULL;
 	}
 
-	dial_res = ast_dial_run(dial, sla.attempt_callerid ? trunk_ref->chan : NULL, 1);
+	if (!sla.attempt_callerid && !ast_strlen_zero(trunk_ref->chan->cid.cid_name)) {
+		cid_name = ast_strdupa(trunk_ref->chan->cid.cid_name);
+		free(trunk_ref->chan->cid.cid_name);
+		trunk_ref->chan->cid.cid_name = NULL;
+	}
+	if (!sla.attempt_callerid && !ast_strlen_zero(trunk_ref->chan->cid.cid_num)) {
+		cid_num = ast_strdupa(trunk_ref->chan->cid.cid_num);
+		free(trunk_ref->chan->cid.cid_num);
+		trunk_ref->chan->cid.cid_num = NULL;
+	}
+
+	dial_res = ast_dial_run(dial, trunk_ref->chan, 1);
+
+	if (cid_name)
+		trunk_ref->chan->cid.cid_name = ast_strdup(cid_name);
+	if (cid_num)
+		trunk_ref->chan->cid.cid_num = ast_strdup(cid_num);
+
 	if (dial_res != AST_DIAL_RESULT_TRYING) {
 		ast_mutex_lock(args->cond_lock);
 		ast_cond_signal(args->cond);

Modified: team/murf/bug8221-1.4/apps/app_speech_utils.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug8221-1.4/apps/app_speech_utils.c?view=diff&rev=59287&r1=59286&r2=59287
==============================================================================
--- team/murf/bug8221-1.4/apps/app_speech_utils.c (original)
+++ team/murf/bug8221-1.4/apps/app_speech_utils.c Tue Mar 27 22:03:20 2007
@@ -544,8 +544,11 @@
         if (argc > 0) {
                 /* Yay sound file */
                 filename_tmp = ast_strdupa(argv[0]);
-                if (argv[1] != NULL)
-                        timeout = atoi(argv[1]);
+		if (!ast_strlen_zero(argv[1])) {
+			if ((timeout = atoi(argv[1])) == 0)
+				timeout = -1;
+		} else
+			timeout = 0;
         }
 
         /* Before we go into waiting for stuff... make sure the structure is ready, if not - start it again */
@@ -611,7 +614,13 @@
                         /* If audio playback has stopped do a check for timeout purposes */
                         if (chan->streamid == -1 && chan->timingfunc == NULL)
                                 ast_stopstream(chan);
-                        if (!quieted && chan->stream == NULL && timeout > 0 && started == 0 && !filename_tmp) {
+                        if (!quieted && chan->stream == NULL && timeout && started == 0 && !filename_tmp) {
+				if (timeout == -1) {
+					done = 1;
+					if (f)
+						ast_frfree(f);
+					break;
+				}
 				time(&start);
 				started = 1;
                         }
@@ -669,7 +678,7 @@
 					if (chan->stream != NULL) {
 						ast_stopstream(chan);
 						/* Change timeout to be 5 seconds for DTMF input */
-						timeout = 5;
+						timeout = (chan->pbx && chan->pbx->dtimeout) ? chan->pbx->dtimeout : 5;
 						time(&start);
 						started = 1;
 					}

Modified: team/murf/bug8221-1.4/apps/app_voicemail.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug8221-1.4/apps/app_voicemail.c?view=diff&rev=59287&r1=59286&r2=59287
==============================================================================
--- team/murf/bug8221-1.4/apps/app_voicemail.c (original)
+++ team/murf/bug8221-1.4/apps/app_voicemail.c Tue Mar 27 22:03:20 2007
@@ -949,7 +949,7 @@
 	int res;
 	int fd=-1;
 	size_t fdlen = 0;
-	void *fdm=NULL;
+	void *fdm = MAP_FAILED;
 	SQLSMALLINT colcount=0;
 	SQLHSTMT stmt;
 	char sql[PATH_MAX];
@@ -1066,7 +1066,7 @@
 					}
 					/* Read out in small chunks */
 					for (offset = 0; offset < colsize2; offset += CHUNKSIZE) {
-						if ((fdm = mmap(NULL, CHUNKSIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, offset)) == (void *)-1) {
+						if ((fdm = mmap(NULL, CHUNKSIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, offset)) == MAP_FAILED) {
 							ast_log(LOG_WARNING, "Could not mmap the output file: %s (%d)\n", strerror(errno), errno);
 							SQLFreeHandle(SQL_HANDLE_STMT, stmt);
 							ast_odbc_release_obj(obj);
@@ -1344,7 +1344,7 @@
 	int x = 0;
 	int res;
 	int fd = -1;
-	void *fdm=NULL;
+	void *fdm = MAP_FAILED;
 	size_t fdlen = -1;
 	SQLHSTMT stmt;
 	SQLINTEGER len;
@@ -1400,7 +1400,7 @@
 		lseek(fd, 0, SEEK_SET);
 		printf("Length is %zd\n", fdlen);
 		fdm = mmap(NULL, fdlen, PROT_READ | PROT_WRITE, MAP_SHARED,fd, 0);
-		if (!fdm) {
+		if (fdm == MAP_FAILED) {
 			ast_log(LOG_WARNING, "Memory map failed!\n");
 			ast_odbc_release_obj(obj);
 			goto yuck;
@@ -1449,7 +1449,7 @@
 yuck:	
 	if (cfg)
 		ast_config_destroy(cfg);
-	if (fdm)
+	if (fdm != MAP_FAILED)
 		munmap(fdm, fdlen);
 	if (fd > -1)
 		close(fd);
@@ -1905,7 +1905,7 @@
 		fprintf(p, "Subject: New message %d in mailbox %s" ENDL, msgnum + 1, mailbox);
 	else
 		fprintf(p, "Subject: [PBX]: New message %d in mailbox %s" ENDL, msgnum + 1, mailbox);
-	fprintf(p, "Message-ID: <Asterisk-%d-%d-%s-%d@%s>" ENDL, msgnum, (unsigned int)ast_random(), mailbox, getpid(), host);
+	fprintf(p, "Message-ID: <Asterisk-%d-%d-%s-%d@%s>" ENDL, msgnum + 1, (unsigned int)ast_random(), mailbox, getpid(), host);
 	if(imap) {
 		/* additional information needed for IMAP searching */
 		fprintf(p, "X-Asterisk-VM-Message-Num: %d" ENDL, msgnum + 1);
@@ -1930,7 +1930,7 @@
 	fprintf(p, "MIME-Version: 1.0" ENDL);
 	if (attach_user_voicemail) {
 		/* Something unique. */
-		snprintf(bound, sizeof(bound), "voicemail_%d%s%d%d", msgnum, mailbox, getpid(), (unsigned int)ast_random());
+		snprintf(bound, sizeof(bound), "voicemail_%d%s%d%d", msgnum + 1, mailbox, getpid(), (unsigned int)ast_random());
 
 		fprintf(p, "Content-Type: multipart/mixed; boundary=\"%s\"" ENDL ENDL ENDL, bound);
 
@@ -1946,7 +1946,7 @@
 				memset(passdata, 0, vmlen);
 				prep_email_sub_vars(ast, vmu, msgnum + 1, context, mailbox, cidnum, cidname, dur, date, passdata, vmlen, category);
 				pbx_substitute_variables_helper(ast, emailbody, passdata, vmlen);
-				fprintf(p, "%s\r\n", passdata);
+				fprintf(p, "%s" ENDL, passdata);
 			} else
 				ast_log(LOG_WARNING, "Cannot allocate workspace for variable substitution\n");
 			ast_channel_free(ast);
@@ -1978,19 +1978,19 @@
 				ast_log(LOG_DEBUG, "VOLGAIN: Stored at: %s.%s - Level: %.4f - Mailbox: %s\n", attach, format, vmu->volgain, mailbox);
 		}
 		fprintf(p, "--%s" ENDL, bound);
-		fprintf(p, "Content-Type: %s%s; name=\"msg%04d.%s\"" ENDL, ctype, format, msgnum, format);
+		fprintf(p, "Content-Type: %s%s; name=\"msg%04d.%s\"" ENDL, ctype, format, msgnum + 1, format);
 		fprintf(p, "Content-Transfer-Encoding: base64" ENDL);
 		fprintf(p, "Content-Description: Voicemail sound attachment." ENDL);
-		fprintf(p, "Content-Disposition: attachment; filename=\"msg%04d.%s\"" ENDL ENDL, msgnum, format);
+		fprintf(p, "Content-Disposition: attachment; filename=\"msg%04d.%s\"" ENDL ENDL, msgnum + 1, format);
 		snprintf(fname, sizeof(fname), "%s.%s", attach, format);
 		base_encode(fname, p);
 		/* only attach if necessary */
 		if (imap && !strcmp(format, "gsm")) {
 			fprintf(p, "--%s" ENDL, bound);
-			fprintf(p, "Content-Type: audio/x-gsm; name=\"msg%04d.%s\"" ENDL, msgnum, format);
+			fprintf(p, "Content-Type: audio/x-gsm; name=\"msg%04d.%s\"" ENDL, msgnum + 1, format);
 			fprintf(p, "Content-Transfer-Encoding: base64" ENDL);
 			fprintf(p, "Content-Description: Voicemail sound attachment." ENDL);
-			fprintf(p, "Content-Disposition: attachment; filename=\"msg%04d.gsm\"" ENDL ENDL, msgnum);
+			fprintf(p, "Content-Disposition: attachment; filename=\"msg%04d.gsm\"" ENDL ENDL, msgnum + 1);
 			snprintf(fname, sizeof(fname), "%s.gsm", attach);
 			base_encode(fname, p);
 		}

Modified: team/murf/bug8221-1.4/channels/chan_iax2.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug8221-1.4/channels/chan_iax2.c?view=diff&rev=59287&r1=59286&r2=59287
==============================================================================
--- team/murf/bug8221-1.4/channels/chan_iax2.c (original)
+++ team/murf/bug8221-1.4/channels/chan_iax2.c Tue Mar 27 22:03:20 2007
@@ -171,6 +171,7 @@
 static int timingfd = -1;				/* Timing file descriptor */
 
 static struct ast_netsock_list *netsock;
+static struct ast_netsock_list *outsock;		/*!< used if sourceaddress specified and bindaddr == INADDR_ANY */
 static int defaultsockfd = -1;
 
 int (*iax2_regfunk)(const char *username, int onoff) = NULL;
@@ -8242,20 +8243,40 @@
 		if (res == 0) {
 			/* ip address valid. */
 			sin.sin_port = htons(port);
-			sock = ast_netsock_find(netsock, &sin);
+			if (!(sock = ast_netsock_find(netsock, &sin)))
+				sock = ast_netsock_find(outsock, &sin);
 			if (sock) {
 				sockfd = ast_netsock_sockfd(sock);
 				nonlocal = 0;
+			} else {
+				unsigned int orig_saddr = sin.sin_addr.s_addr;
+				/* INADDR_ANY matches anyway! */
+				sin.sin_addr.s_addr = INADDR_ANY;
+				if (ast_netsock_find(netsock, &sin)) {
+					sin.sin_addr.s_addr = orig_saddr;
+					sock = ast_netsock_bind(outsock, io, srcaddr, port, tos, socket_read, NULL);
+					if (sock) {
+						sockfd = ast_netsock_sockfd(sock);
+						ast_netsock_unref(sock);
+						nonlocal = 0;
+					} else {
+						nonlocal = 2;
+					}
+				}
 			}
 		}
 	}
 		
 	peer->sockfd = sockfd;
 
-	if (nonlocal) {
+	if (nonlocal == 1) {
 		ast_log(LOG_WARNING, "Non-local or unbound address specified (%s) in sourceaddress for '%s', reverting to default\n",
 			srcaddr, peer->name);
 		return -1;
+        } else if (nonlocal == 2) {
+		ast_log(LOG_WARNING, "Unable to bind to sourceaddress '%s' for '%s', reverting to default\n",
+			srcaddr, peer->name);
+			return -1;
 	} else {
 		ast_log(LOG_DEBUG, "Using sourceaddress %s for '%s'\n", srcaddr, peer->name);
 		return 0;
@@ -9051,7 +9072,16 @@
 			ast_netsock_unref(ns);
 		}
 	}
-	
+	if (reload) {
+		ast_netsock_release(outsock);
+		outsock = ast_netsock_list_alloc();
+		if (!outsock) {
+			ast_log(LOG_ERROR, "Could not allocate outsock list.\n");
+			return -1;
+		}
+		ast_netsock_init(outsock);
+	}
+
 	if (min_reg_expire > max_reg_expire) {
 		ast_log(LOG_WARNING, "Minimum registration interval of %d is more than maximum of %d, resetting minimum to %d\n",
 			min_reg_expire, max_reg_expire, max_reg_expire);
@@ -9948,6 +9978,7 @@
 		usleep(10000);
 	
 	ast_netsock_release(netsock);
+	ast_netsock_release(outsock);
 	for (x=0;x<IAX_MAX_CALLS;x++)
 		if (iaxs[x])
 			iax2_destroy(x);
@@ -10023,6 +10054,13 @@
 	}
 	ast_netsock_init(netsock);
 
+	outsock = ast_netsock_list_alloc();
+	if (!outsock) {
+		ast_log(LOG_ERROR, "Could not allocate outsock list.\n");
+		return -1;
+	}
+	ast_netsock_init(outsock);
+
 	ast_mutex_init(&waresl.lock);
 
 	AST_LIST_HEAD_INIT(&iaxq.queue);
@@ -10053,6 +10091,7 @@
 	} else {
 		ast_log(LOG_ERROR, "Unable to start network thread\n");
 		ast_netsock_release(netsock);
+		ast_netsock_release(outsock);
 	}
 
 	AST_LIST_LOCK(&registrations);

Modified: team/murf/bug8221-1.4/channels/chan_misdn.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug8221-1.4/channels/chan_misdn.c?view=diff&rev=59287&r1=59286&r2=59287
==============================================================================
--- team/murf/bug8221-1.4/channels/chan_misdn.c (original)
+++ team/murf/bug8221-1.4/channels/chan_misdn.c Tue Mar 27 22:03:20 2007
@@ -302,9 +302,6 @@
 
 static int tracing = 0 ;
 
-static char **misdn_key_vector=NULL;
-static int misdn_key_vector_size=0;
-
 /* Only alaw and mulaw is allowed for now */
 static int prefformat =  AST_FORMAT_ALAW ; /*  AST_FORMAT_SLINEAR ;  AST_FORMAT_ULAW | */
 
@@ -354,7 +351,11 @@
 int add_in_calls(int port);
 
 
+#ifdef MISDN_1_2
+static int update_pipeline_config(struct misdn_bchannel *bc);
+#else
 static int update_ec_config(struct misdn_bchannel *bc);
+#endif
 
 
 
@@ -1037,7 +1038,11 @@
 			"  --> activated: %d\n"
 			"  --> state: %s\n"
 			"  --> capability: %s\n"
+#ifdef MISDN_1_2
+			"  --> pipeline: %s\n"
+#else
 			"  --> echo_cancel: %d\n"
+#endif
 			"  --> notone : rx %d tx:%d\n"
 			"  --> bc_hold: %d\n",
 			help->ast->name,
@@ -1050,7 +1055,11 @@
 			bc->active,
 			bc_state2str(bc->bc_state),
 			bearer2str(bc->capability),
-			bc->ec_enable,
+#ifdef MISDN_1_2
+			bc->pipeline,
+#else
+ 			bc->ec_enable,
+#endif
 
 			help->norxtone,help->notxtone,
 			bc->holded
@@ -1278,7 +1287,11 @@
 			tmp->toggle_ec=tmp->toggle_ec?0:1;
 
 			if (tmp->toggle_ec) {
+#ifdef MISDN_1_2
+				update_pipeline_config(tmp->bc);
+#else
 				update_ec_config(tmp->bc);
+#endif
 				manager_ec_enable(tmp->bc);
 			} else {
 				manager_ec_disable(tmp->bc);
@@ -1619,6 +1632,25 @@
 
 
 
+#ifdef MISDN_1_2
+static int update_pipeline_config(struct misdn_bchannel *bc)
+{
+	int ec;
+
+	misdn_cfg_get(bc->port, MISDN_CFG_PIPELINE, bc->pipeline, sizeof(bc->pipeline));
+
+	if (*bc->pipeline)
+		return 0;
+
+	misdn_cfg_get(bc->port, MISDN_CFG_ECHOCANCEL, &ec, sizeof(int));
+	if (ec == 1)
+		snprintf(bc->pipeline, sizeof(bc->pipeline) - 1, "mg2ec");
+	else if (ec > 1)
+		snprintf(bc->pipeline, sizeof(bc->pipeline) - 1, "mg2ec(deftaps=%d)", ec);
+
+	return 0;
+}
+#else
 static int update_ec_config(struct misdn_bchannel *bc)
 {
 	int ec;
@@ -1632,17 +1664,10 @@
 		bc->ec_enable=1;
 		bc->ec_deftaps=ec;
 	}
-#ifdef WITH_ECHOTRAINING 
-	int ectr;
-	misdn_cfg_get( port, MISDN_CFG_ECHOTRAINING, &ectr, sizeof(int));
-	
-	if ( ectr >= 0 ) {
-		bc->ec_training=ectr;
-	}
+
+	return 0;
+}
 #endif
-
-	return 0;
-}
 
 
 static int read_config(struct chan_list *ch, int orig) {
@@ -1717,7 +1742,11 @@
 	
 	ast_copy_string (ast->context,ch->context,sizeof(ast->context));	
 
+#ifdef MISDN_1_2
+	update_pipeline_config(bc);
+#else
 	update_ec_config(bc);
+#endif
 
 	{
 		int eb3;
@@ -1990,9 +2019,15 @@
 		int bridging;
 		misdn_cfg_get( 0, MISDN_GEN_BRIDGING, &bridging, sizeof(int));
 		if (bridging && ch->other_ch) {
-			chan_misdn_log(0, port, "Disabling EC on both Sides\n");	
+#ifdef MISDN_1_2
+			chan_misdn_log(0, port, "Disabling EC (aka Pipeline) on both Sides\n");
+			*ch->bc->pipeline=0;
+			*ch->other_ch->bc->pipeline=0;
+#else
+			chan_misdn_log(0, port, "Disabling EC on both Sides\n");
 			ch->bc->ec_enable=0;
 			ch->other_ch->bc->ec_enable=0;
+#endif
 		}
 		
 		r=misdn_lib_send_event( newbc, EVENT_SETUP );
@@ -2485,7 +2520,11 @@
  			isdn_lib_update_rxgain(tmp->bc);
  			tmp->bc->txgain = 0;
  			isdn_lib_update_txgain(tmp->bc);
+#ifdef MISDN_1_2
+			*tmp->bc->pipeline = 0;
+#else
  			tmp->bc->ec_enable = 0;
+#endif
  			isdn_lib_update_ec(tmp->bc);
  			isdn_lib_stop_dtmf(tmp->bc);
  			switch (tmp->faxdetect) {
@@ -4310,7 +4349,8 @@
 
 			if (ch->ast) {
 				ch->ast->hangupcause=bc->cause;
-				ast_queue_control(ch->ast, AST_CONTROL_BUSY);
+				if (bc->cause == 17)
+					ast_queue_control(ch->ast, AST_CONTROL_BUSY);
 			}
 			ch->need_busy=0;
 			break;
@@ -4988,14 +5028,22 @@
 			
 			if (neglect) {
 				chan_misdn_log(1, ch->bc->port, " --> disabled\n");
+#ifdef MISDN_1_2
+				*ch->bc->pipeline=0;
+#else
 				ch->bc->ec_enable=0;
+#endif
 			} else {
+#ifdef MISDN_1_2
+				update_pipeline_config(ch->bc);
+#else
 				ch->bc->ec_enable=1;
 				ch->bc->orig=ch->orginator;
 				tok++;
-				if (tok) {
+				if (*tok) {
 					ch->bc->ec_deftaps=atoi(tok);
 				}
+#endif
 			}
 			
 			break;

Modified: team/murf/bug8221-1.4/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug8221-1.4/channels/chan_sip.c?view=diff&rev=59287&r1=59286&r2=59287
==============================================================================
--- team/murf/bug8221-1.4/channels/chan_sip.c (original)
+++ team/murf/bug8221-1.4/channels/chan_sip.c Tue Mar 27 22:03:20 2007
@@ -1384,6 +1384,7 @@
 static int sip_addheader(struct ast_channel *chan, void *data);
 static int sip_do_reload(enum channelreloadreason reason);
 static int sip_reload(int fd, int argc, char *argv[]);
+static int acf_channel_read(struct ast_channel *chan, char *funcname, char *preparse, char *buf, size_t buflen);
 
 /*--- Debugging 
 	Functions for enabling debug per IP or fully, or enabling history logging for
@@ -1548,6 +1549,7 @@
 	.send_digit_end = sip_senddigit_end,
 	.bridge = ast_rtp_bridge,
 	.send_text = sip_sendtext,
+	.func_channel_read = acf_channel_read,
 };
 
 /*! \brief This version of the sip channel tech has no send_digit_begin
@@ -3392,9 +3394,9 @@
 				char *audioqos = "";
 				char *videoqos = "";
 				if (p->rtp)
-					audioqos = ast_rtp_get_quality(p->rtp);
+					audioqos = ast_rtp_get_quality(p->rtp, NULL);
 				if (p->vrtp)
-					videoqos = ast_rtp_get_quality(p->vrtp);
+					videoqos = ast_rtp_get_quality(p->vrtp, NULL);
 				/* Send a hangup */
 				transmit_request_with_auth(p, SIP_BYE, 0, XMIT_RELIABLE, 1);
 
@@ -5091,15 +5093,15 @@
 					ast_log(LOG_DEBUG, "Transcoding JBIG: %d\n",x);
 				if (x == 1)
 					peert38capability |= T38FAX_TRANSCODING_JBIG;
-			} else if ((sscanf(a, "T38FaxRateManagement:%s", s) == 1)) {
+			} else if ((sscanf(a, "T38FaxRateManagement:%255s", s) == 1)) {
 				found = 1;
 				if (option_debug > 2)
-					ast_log(LOG_DEBUG, "RateMangement: %s\n", s);
+					ast_log(LOG_DEBUG, "RateManagement: %s\n", s);
 				if (!strcasecmp(s, "localTCF"))
 					peert38capability |= T38FAX_RATE_MANAGEMENT_LOCAL_TCF;
 				else if (!strcasecmp(s, "transferredTCF"))
 					peert38capability |= T38FAX_RATE_MANAGEMENT_TRANSFERED_TCF;
-			} else if ((sscanf(a, "T38FaxUdpEC:%s", s) == 1)) {
+			} else if ((sscanf(a, "T38FaxUdpEC:%255s", s) == 1)) {
 				found = 1;
 				if (option_debug > 2)
 					ast_log(LOG_DEBUG, "UDP EC: %s\n", s);
@@ -14127,6 +14129,63 @@
 	}
 }
 
+static int acf_channel_read(struct ast_channel *chan, char *funcname, char *preparse, char *buf, size_t buflen)
+{
+	struct ast_rtp_quality qos;
+	struct sip_pvt *p = chan->tech_pvt;
+	char *all = "", *parse = ast_strdupa(preparse);
+	AST_DECLARE_APP_ARGS(args,
+		AST_APP_ARG(param);
+		AST_APP_ARG(type);
+		AST_APP_ARG(field);
+	);
+	AST_STANDARD_APP_ARGS(args, parse);
+
+	/* Sanity check */
+	if (chan->tech != &sip_tech && chan->tech != &sip_tech_info) {
+		ast_log(LOG_ERROR, "Cannot call %s on a non-SIP channel\n", funcname);
+		return 0;
+	}
+
+	if (strcasecmp(args.param, "rtpqos"))
+		return 0;
+
+	memset(buf, 0, buflen);
+	memset(&qos, 0, sizeof(qos));
+
+	if (strcasecmp(args.type, "AUDIO") == 0) {
+		all = ast_rtp_get_quality(p->rtp, &qos);
+	} else if (strcasecmp(args.type, "VIDEO") == 0) {
+		all = ast_rtp_get_quality(p->vrtp, &qos);
+	}
+
+	if (strcasecmp(args.field, "local_ssrc") == 0)
+		snprintf(buf, buflen, "%u", qos.local_ssrc);
+	else if (strcasecmp(args.field, "local_lostpackets") == 0)
+		snprintf(buf, buflen, "%u", qos.local_lostpackets);
+	else if (strcasecmp(args.field, "local_jitter") == 0)
+		snprintf(buf, buflen, "%.0lf", qos.local_jitter * 1000.0);
+	else if (strcasecmp(args.field, "local_count") == 0)
+		snprintf(buf, buflen, "%u", qos.local_count);
+	else if (strcasecmp(args.field, "remote_ssrc") == 0)
+		snprintf(buf, buflen, "%u", qos.remote_ssrc);
+	else if (strcasecmp(args.field, "remote_lostpackets") == 0)
+		snprintf(buf, buflen, "%u", qos.remote_lostpackets);
+	else if (strcasecmp(args.field, "remote_jitter") == 0)
+		snprintf(buf, buflen, "%.0lf", qos.remote_jitter * 1000.0);
+	else if (strcasecmp(args.field, "remote_count") == 0)
+		snprintf(buf, buflen, "%u", qos.remote_count);
+	else if (strcasecmp(args.field, "rtt") == 0)
+		snprintf(buf, buflen, "%.0lf", qos.rtt * 1000.0);
+	else if (strcasecmp(args.field, "all") == 0)
+		ast_copy_string(buf, all, buflen);
+	else {
+		ast_log(LOG_WARNING, "Unrecognized argument '%s' to %s\n", preparse, funcname);
+		return -1;
+	}
+	return 0;
+}
+
 /*! \brief Handle incoming BYE request */
 static int handle_request_bye(struct sip_pvt *p, struct sip_request *req)
 {
@@ -14148,14 +14207,14 @@
 	if (!ast_test_flag(&p->flags[0], SIP_NO_HISTORY) || p->owner) {
 		char *audioqos, *videoqos;
 		if (p->rtp) {
-			audioqos = ast_rtp_get_quality(p->rtp);
+			audioqos = ast_rtp_get_quality(p->rtp, NULL);
 			if (!ast_test_flag(&p->flags[0], SIP_NO_HISTORY))
 				append_history(p, "RTCPaudio", "Quality:%s", audioqos);
 			if (p->owner)
 				pbx_builtin_setvar_helper(p->owner, "RTPAUDIOQOS", audioqos);
 		}
 		if (p->vrtp) {
-			videoqos = ast_rtp_get_quality(p->vrtp);
+			videoqos = ast_rtp_get_quality(p->vrtp, NULL);
 			if (!ast_test_flag(&p->flags[0], SIP_NO_HISTORY))
 				append_history(p, "RTCPvideo", "Quality:%s", videoqos);
 			if (p->owner)
@@ -14609,20 +14668,20 @@
 			ast_set_flag(req, SIP_PKT_IGNORE);
 			ast_set_flag(req, SIP_PKT_IGNORE_RESP);
 			append_history(p, "Ignore", "Ignoring this retransmit\n");
-		}
-	
-		e = ast_skip_blanks(e);
-		if (sscanf(e, "%d %n", &respid, &len) != 1) {
-			ast_log(LOG_WARNING, "Invalid response: '%s'\n", e);
-		} else {
-			if (respid <= 0) {
-				ast_log(LOG_WARNING, "Invalid SIP response code: '%d'\n", respid);
-				return 0;
+		} else if (e) {
+			e = ast_skip_blanks(e);
+			if (sscanf(e, "%d %n", &respid, &len) != 1) {
+				ast_log(LOG_WARNING, "Invalid response: '%s'\n", e);
+			} else {
+				if (respid <= 0) {
+					ast_log(LOG_WARNING, "Invalid SIP response code: '%d'\n", respid);
+					return 0;
+				}
+				/* More SIP ridiculousness, we have to ignore bogus contacts in 100 etc responses */
+				if ((respid == 200) || ((respid >= 300) && (respid <= 399)))
+					extract_uri(p, req);
+				handle_response(p, respid, e + len, req, ignore, seqno);
 			}
-			/* More SIP ridiculousness, we have to ignore bogus contacts in 100 etc responses */
-			if ((respid == 200) || ((respid >= 300) && (respid <= 399)))
-				extract_uri(p, req);
-			handle_response(p, respid, e + len, req, ignore, seqno);
 		}
 		return 0;
 	}

Modified: team/murf/bug8221-1.4/channels/misdn/Makefile
URL: http://svn.digium.com/view/asterisk/team/murf/bug8221-1.4/channels/misdn/Makefile?view=diff&rev=59287&r1=59286&r2=59287
==============================================================================
--- team/murf/bug8221-1.4/channels/misdn/Makefile (original)
+++ team/murf/bug8221-1.4/channels/misdn/Makefile Tue Mar 27 22:03:20 2007
@@ -1,6 +1,10 @@
 #
 # Makefile for chan_misdn support
 #
+ifneq ($(wildcard /usr/include/linux/mISDNdsp.h),)
+CFLAGS+=-DMISDN_1_2
+endif
+
 all:
 
 %.o: %.c

Modified: team/murf/bug8221-1.4/channels/misdn/chan_misdn_config.h
URL: http://svn.digium.com/view/asterisk/team/murf/bug8221-1.4/channels/misdn/chan_misdn_config.h?view=diff&rev=59287&r1=59286&r2=59287
==============================================================================
--- team/murf/bug8221-1.4/channels/misdn/chan_misdn_config.h (original)
+++ team/murf/bug8221-1.4/channels/misdn/chan_misdn_config.h Tue Mar 27 22:03:20 2007
@@ -52,9 +52,8 @@
 	MISDN_CFG_EARLY_BCONNECT,      /* int (bool) */
 	MISDN_CFG_INCOMING_EARLY_AUDIO,      /* int (bool) */
 	MISDN_CFG_ECHOCANCEL,          /* int */
-	MISDN_CFG_ECHOCANCELWHENBRIDGED,  /* int (bool) */
-#ifdef WITH_ECHOTRAINGING
-	MISDN_CFG_ECHOTRAINING,        /* int (bool) */
+#ifdef MISDN_1_2
+	MISDN_CFG_PIPELINE,      /* char[] */
 #endif
 
 #ifdef WITH_BEROEC

Modified: team/murf/bug8221-1.4/channels/misdn/isdn_lib.c
URL: http://svn.digium.com/view/asterisk/team/murf/bug8221-1.4/channels/misdn/isdn_lib.c?view=diff&rev=59287&r1=59286&r2=59287
==============================================================================
--- team/murf/bug8221-1.4/channels/misdn/isdn_lib.c (original)
+++ team/murf/bug8221-1.4/channels/misdn/isdn_lib.c Tue Mar 27 22:03:20 2007
@@ -590,14 +590,13 @@
 
 	bc->early_bconnect = 1;
 	
+#ifdef MISDN_1_2
+	*bc->pipeline = 0;
+#else
 	bc->ec_enable = 0;
 	bc->ec_deftaps = 128;

[... 957 lines stripped ...]


More information about the asterisk-commits mailing list