[Freeswitch-svn] [commit] r4768 - in freeswitch/branches/mikej/sofiasip-upgrade: . build build/config libs/apr-util libs/apr-util/build libs/apr-util/include/private libs/apr-util/xml/expat libs/apr-util/xml/expat/lib libs/apr/build libs/codec/gsm libs/iksemel/include libs/js libs/libdingaling/src libs/libetpan libs/libresample/src libs/libsndfile/src libs/libteletone libs/pcre libs/portaudio libs/portaudio/src/common libs/sofia-sip libs/srtp libs/srtp/doc libs/xmlrpc-c src src/include src/mod src/mod/applications/mod_conference src/mod/asr_tts/mod_lumenvox src/mod/codecs/mod_g723_1 src/mod/codecs/mod_g729 src/mod/dialplans/mod_dialplan_xml src/mod/endpoints/mod_iax src/mod/endpoints/mod_wanpipe src/mod/endpoints/mod_wanpipe/libsangoma src/mod/event_handlers/mod_cdr src/mod/formats/mod_shout src/mod/languages/mod_perl src/mod/languages/mod_spidermonkey_odbc src/mod/languages/mod_spidermonkey_teletone src/mod/loggers/mod_console src/mod/xml_int/mod_xml_rpc w32/Library

Freeswitch SVN mikej at freeswitch.org
Mon Mar 26 14:45:39 EDT 2007


Author: mikej
Date: Mon Mar 26 14:45:37 2007
New Revision: 4768

Added:
   freeswitch/branches/mikej/sofiasip-upgrade/build/config/ax_lib_mysql.m4
      - copied unchanged from r4767, /freeswitch/trunk/build/config/ax_lib_mysql.m4
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/libsangoma/
      - copied from r4767, /freeswitch/trunk/src/mod/endpoints/mod_wanpipe/libsangoma/
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/libsangoma/g711.h
      - copied unchanged from r4767, /freeswitch/trunk/src/mod/endpoints/mod_wanpipe/libsangoma/g711.h
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.c
      - copied unchanged from r4767, /freeswitch/trunk/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.c
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.dsp
      - copied unchanged from r4767, /freeswitch/trunk/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.dsp
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.dsw
      - copied unchanged from r4767, /freeswitch/trunk/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.dsw
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.h
      - copied unchanged from r4767, /freeswitch/trunk/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.h
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.so.conf
      - copied unchanged from r4767, /freeswitch/trunk/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.so.conf
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.vcproj
      - copied unchanged from r4767, /freeswitch/trunk/src/mod/endpoints/mod_wanpipe/libsangoma/libsangoma.vcproj
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/libsangoma/sangoma_pri.c
      - copied unchanged from r4767, /freeswitch/trunk/src/mod/endpoints/mod_wanpipe/libsangoma/sangoma_pri.c
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/libsangoma/sangoma_pri.h
      - copied unchanged from r4767, /freeswitch/trunk/src/mod/endpoints/mod_wanpipe/libsangoma/sangoma_pri.h
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/libsangoma/win_api_common.h
      - copied unchanged from r4767, /freeswitch/trunk/src/mod/endpoints/mod_wanpipe/libsangoma/win_api_common.h
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/event_handlers/mod_cdr/Makefile.am
      - copied unchanged from r4767, /freeswitch/trunk/src/mod/event_handlers/mod_cdr/Makefile.am
Removed:
   freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/build/apr_common.m4
   freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/build/find_apr.m4
   freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/build/get-version.sh
   freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/build/install.sh
   freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/xml/expat/acconfig.h
   freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/xml/expat/config.h.in
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/event_handlers/mod_cdr/Makefile
Modified:
   freeswitch/branches/mikej/sofiasip-upgrade/Makefile.am
   freeswitch/branches/mikej/sofiasip-upgrade/acinclude.m4
   freeswitch/branches/mikej/sofiasip-upgrade/bootstrap.sh
   freeswitch/branches/mikej/sofiasip-upgrade/build/getlib.sh.in
   freeswitch/branches/mikej/sofiasip-upgrade/build/modmake.rules.in
   freeswitch/branches/mikej/sofiasip-upgrade/configure.in
   freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/   (props changed)
   freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/build/   (props changed)
   freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/include/private/   (props changed)
   freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/xml/expat/   (props changed)
   freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/xml/expat/configure.in
   freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/xml/expat/lib/winconfig.h
   freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/xml/expat/lib/xmlparse.c
   freeswitch/branches/mikej/sofiasip-upgrade/libs/apr/build/apr_common.m4
   freeswitch/branches/mikej/sofiasip-upgrade/libs/codec/gsm/configure.in
   freeswitch/branches/mikej/sofiasip-upgrade/libs/iksemel/include/   (props changed)
   freeswitch/branches/mikej/sofiasip-upgrade/libs/js/   (props changed)
   freeswitch/branches/mikej/sofiasip-upgrade/libs/libdingaling/src/   (props changed)
   freeswitch/branches/mikej/sofiasip-upgrade/libs/libetpan/   (props changed)
   freeswitch/branches/mikej/sofiasip-upgrade/libs/libresample/src/   (props changed)
   freeswitch/branches/mikej/sofiasip-upgrade/libs/libsndfile/src/   (props changed)
   freeswitch/branches/mikej/sofiasip-upgrade/libs/libteletone/configure.in
   freeswitch/branches/mikej/sofiasip-upgrade/libs/pcre/   (props changed)
   freeswitch/branches/mikej/sofiasip-upgrade/libs/portaudio/Makefile.in
   freeswitch/branches/mikej/sofiasip-upgrade/libs/portaudio/src/common/pa_ringbuffer.c
   freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/   (props changed)
   freeswitch/branches/mikej/sofiasip-upgrade/libs/srtp/   (props changed)
   freeswitch/branches/mikej/sofiasip-upgrade/libs/srtp/doc/   (props changed)
   freeswitch/branches/mikej/sofiasip-upgrade/libs/xmlrpc-c/configure.gnu
   freeswitch/branches/mikej/sofiasip-upgrade/src/include/   (props changed)
   freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch.h
   freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_config.h
   freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_log.h
   freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_resample.h
   freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_types.h
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/Makefile.am
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/applications/mod_conference/mod_conference.c
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/asr_tts/mod_lumenvox/Makefile
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/codecs/mod_g723_1/Makefile
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/codecs/mod_g729/Makefile
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_iax/mod_iax.c
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/Makefile
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/formats/mod_shout/Makefile
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/languages/mod_perl/Makefile
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/languages/mod_spidermonkey_odbc/Makefile
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/languages/mod_spidermonkey_teletone/Makefile
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/loggers/mod_console/mod_console.c
   freeswitch/branches/mikej/sofiasip-upgrade/src/mod/xml_int/mod_xml_rpc/Makefile
   freeswitch/branches/mikej/sofiasip-upgrade/src/switch_apr.c
   freeswitch/branches/mikej/sofiasip-upgrade/src/switch_channel.c
   freeswitch/branches/mikej/sofiasip-upgrade/src/switch_console.c
   freeswitch/branches/mikej/sofiasip-upgrade/src/switch_ivr.c
   freeswitch/branches/mikej/sofiasip-upgrade/src/switch_resample.c
   freeswitch/branches/mikej/sofiasip-upgrade/src/switch_rtp.c
   freeswitch/branches/mikej/sofiasip-upgrade/w32/Library/FreeSwitchCore.vcproj

Log:
merged changes from trunk revisions 4706-4767, except for revision 4747 (was hack fix that is now corrected properly in sofia)

Modified: freeswitch/branches/mikej/sofiasip-upgrade/Makefile.am
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/Makefile.am	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/Makefile.am	Mon Mar 26 14:45:37 2007
@@ -25,7 +25,6 @@
 src/switch_buffer.c \
 src/switch_caller.c \
 src/switch_channel.c \
-src/switch_config.c \
 src/switch_console.c \
 src/switch_core.c \
 src/switch_core_db.c\
@@ -38,7 +37,10 @@
 src/switch_ivr.c \
 src/switch_stun.c\
 src/switch_log.c\
-src/switch_xml.c
+src/switch_xml.c\
+libs/libteletone/src/libteletone_detect.c\
+libs/libteletone/src/libteletone_generate.c
+
 
 library_includedir      = $(PREFIX)/include
 
@@ -49,7 +51,6 @@
 src/include/switch_buffer.h\
 src/include/switch_caller.h\
 src/include/switch_channel.h\
-src/include/switch_config.h\
 src/include/switch_console.h\
 src/include/switch_core.h\
 src/include/switch_core_db.h\
@@ -66,7 +67,12 @@
 src/include/switch_rtp.h\
 src/include/switch_stun.h\
 src/include/switch_log.h\
-src/include/switch_xml.h
+src/include/switch_xml.h\
+libs/libteletone/src/libteletone_detect.h\
+libs/libteletone/src/libteletone_generate.h\
+libs/libteletone/src/libteletone.h
+
+
 
 CORE_CFLAGS     = `$(switch_srcdir)/libs/apr/apr-1-config --cflags --cppflags --includes`
 CORE_CFLAGS    += `$(switch_srcdir)/libs/apr-util/apu-1-config --includes`
@@ -80,7 +86,6 @@
 CORE_LIBS      = libs/apr/libapr-1.la libs/apr-util/libaprutil-1.la
 CORE_LIBS     += libs/sqlite/libsqlite3.la libs/pcre/libpcre.la
 CORE_LIBS     += libs/srtp/libsrtp.la libs/libresample/libresample.la
-CORE_LIBS     += libs/libteletone/libteletone.la
 
 lib_LTLIBRARIES	          = libfreeswitch.la
 libfreeswitch_la_CFLAGS   = $(CORE_CFLAGS) $(AM_CFLAGS)
@@ -93,11 +98,12 @@
 CLEANFILES     = src/include/switch_version.h
 BUILT_SOURCES  = src/include/switch_version.h
 
-bin_PROGRAMS =  freeswitch
-freeswitch_SOURCES =    src/switch.c
+bin_PROGRAMS = freeswitch
+freeswitch_SOURCES = src/switch.c
 nodist_freeswitch_SOURCES = src/include/switch_version.h
 freeswitch_CFLAGS = $(AM_CFLAGS)
-freeswitch_LDADD = ${MOD_LINK} libs/apr/libapr-1.la
+freeswitch_LDFLAGS = $(AM_LDFLAGS) -rpath $(libdir)
+freeswitch_LDADD = libfreeswitch.la libs/apr/libapr-1.la
 
 $(libfreeswitch_la_SOURCES): $(CORE_LIBS) $(switch_builddir)/quiet_libtool
 
@@ -112,11 +118,6 @@
 	@if [ ! -f $(DESTDIR)$(PREFIX)/conf/freeswitch.xml ] ; then \
 		$(INSTALL) conf/*.xml $(DESTDIR)$(PREFIX)/conf ; \
 	 fi
-	@if [ -f .libs/$(NAME) ] ; then \
-		$(INSTALL) .libs/$(NAME) $(DESTDIR)$(PREFIX)/bin/$(NAME) ; \
-	 else \
-		$(INSTALL) ./$(NAME) $(DESTDIR)$(PREFIX)/bin/$(NAME) ;\
-	 fi
 
 .version:
 	touch .version
@@ -170,10 +171,6 @@
 	@cd libs/srtp && $(MAKE)
 	@$(TOUCH_TARGET)
 
-libs/libteletone/libteletone.la: libs/libteletone libs/libteletone/.update
-	@cd libs/libteletone && $(MAKE)
-	@$(TOUCH_TARGET)
-
 libs/libresample/libresample.la: libs/libresample libs/libresample/.update
 	@cd libs/libresample && $(MAKE)
 	@$(TOUCH_TARGET)

Modified: freeswitch/branches/mikej/sofiasip-upgrade/acinclude.m4
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/acinclude.m4	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/acinclude.m4	Mon Mar 26 14:45:37 2007
@@ -4,5 +4,6 @@
 m4_include([build/config/ax_check_compiler_flags.m4])
 m4_include([build/config/ac_gcc_archflag.m4])
 m4_include([build/config/ac_gcc_x86_cpuid.m4])
+m4_include([build/config/ax_lib_mysql.m4])
 m4_include([libs/apr/build/apr_common.m4])
 m4_include([libs/curl/docs/libcurl/libcurl.m4])

Modified: freeswitch/branches/mikej/sofiasip-upgrade/bootstrap.sh
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/bootstrap.sh	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/bootstrap.sh	Mon Mar 26 14:45:37 2007
@@ -60,7 +60,7 @@
 lt_pversion=`$libtool --version 2>/dev/null|sed -e 's/([^)]*)//g;s/^[^0-9]*//;s/[- ].*//g;q'`
 if test -z "$lt_pversion"; then
 echo "bootstrap: libtool not found."
-echo "           You need libtool version 1.5.7 or newer installed"
+echo "           You need libtool version 1.5.14 or newer installed"
 echo "           to build FreeSWITCH from SVN."
 exit 1
 fi
@@ -68,16 +68,18 @@
 IFS=.; set $lt_version; IFS=' '
 lt_status="good"
 
-if test "$1" = "1"; then
-   if test "$2" -lt "5" -o "$2" =  "5" -a "$3" -lt "22" || test ; then
+if test "$1" -lt "2"; then
+   if test "$2" -lt "5" -o "$2" =  "5" -a "$3" -lt "14" ; then
       lt_status="bad"
    fi
+else
+    lt_status="bad"
 fi
 if test $lt_status = "good"; then
    echo "bootstrap: libtool version $lt_pversion (ok)"
 else
 echo "bootstrap: libtool version $lt_pversion found."
-echo "           You need libtool version 1.5.7 or newer installed"
+echo "           You need libtool version 1.5.14 or newer installed"
 echo "           to build FreeSWITCH from SVN."
 
 exit 1

Modified: freeswitch/branches/mikej/sofiasip-upgrade/build/getlib.sh.in
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/build/getlib.sh.in	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/build/getlib.sh.in	Mon Mar 26 14:45:37 2007
@@ -13,8 +13,14 @@
     fi
 fi
 
-base=http://svn.freeswitch.org/downloads/libs
+base=http://svn.freeswitch.org/downloads/libs/
 tarfile=$1
+url=`echo $tarfile | grep "://"`
+
+if [ ! -z $url ] ; then
+    base=$tarfile/
+    tarfile=$2
+fi
 
 if [ ! -d $tarfile ] ; then
     uncompressed=`echo $tarfile | sed "s/\.tar\.gz//g"`
@@ -22,7 +28,7 @@
 
     if [ ! -f $tarfile ] ; then
 	rm -fr $uncompressed
-	$DOWNLOAD_CMD $base/$tarfile
+	$DOWNLOAD_CMD $base$tarfile
 	if [ ! -f $tarfile ] ; then
 	    echo cannot find $tarfile
 	    exit 1

Modified: freeswitch/branches/mikej/sofiasip-upgrade/build/modmake.rules.in
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/build/modmake.rules.in	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/build/modmake.rules.in	Mon Mar 26 14:45:37 2007
@@ -117,7 +117,7 @@
 	fi;
 
 mod_clean:
-	@rm -fr *.$(DYNAMIC_LIB_EXTEN) *.o *.lo *~ .libs
+	@rm -fr *.$(DYNAMIC_LIB_EXTEN) *.o *.lo *~ .libs $(LOCAL_OBJS)
 
 mod_install: $(DESTDIR)$(PREFIX)/mod/$(MODNAME).$(DYNAMIC_LIB_EXTEN)
 

Modified: freeswitch/branches/mikej/sofiasip-upgrade/configure.in
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/configure.in	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/configure.in	Mon Mar 26 14:45:37 2007
@@ -291,11 +291,16 @@
 AC_ARG_ENABLE(crash-protection,     
 	[  --enable-crash-protection         Compile with CRASH Protection],,[enable_crash_prot="no"])
 
+#AX_LIB_MYSQL([MINIMUM-VERSION]) 
+AX_LIB_MYSQL
+
 AM_CONDITIONAL([CRASHPROT],[test "x$enable_crash_prot" != "xno"])
+AM_CONDITIONAL([HAVE_MYSQL],[test "$have_mysql" = "yes"])
 
 AC_CONFIG_FILES([Makefile
                 src/Makefile
                 src/mod/Makefile
+                src/mod/event_handlers/mod_cdr/Makefile
                 src/include/switch_am_config.h
                 build/getlib.sh
                 build/modmake.rules])
@@ -308,7 +313,6 @@
 AC_CONFIG_SUBDIRS(libs/srtp)
 AC_CONFIG_SUBDIRS(libs/sqlite)
 AC_CONFIG_SUBDIRS(libs/libresample)
-AC_CONFIG_SUBDIRS(libs/libteletone)
 AC_CONFIG_SUBDIRS(libs/pcre)
 AC_CONFIG_SUBDIRS(libs/apr)
 AC_CONFIG_SUBDIRS(libs/apr-util)

Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/xml/expat/configure.in
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/xml/expat/configure.in	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/xml/expat/configure.in	Mon Mar 26 14:45:37 2007
@@ -86,9 +86,19 @@
 if test "$cross_compiling" = "no"; then
   AC_C_BIGENDIAN
 else
-  AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,
-                [byte order is unknown due to cross-compilation])
+  AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,[byte order is unknown due to cross-compilation])
 fi
+
+if test "$ac_cv_c_bigendian" = "yes"; then
+  AC_DEFINE(XML_BYTE_ORDER,21,[21 for big endian or 12 for little])
+else
+  AC_DEFINE(XML_BYTE_ORDER,12,[z])
+fi
+
+AC_DEFINE(XML_NS,,[Define me])
+AC_DEFINE(XML_DTD,,[Define me])
+AC_DEFINE(XML_CONTEXT_BYTES,1024,[1024])
+
 AC_C_CONST
 AC_TYPE_OFF_T
 AC_TYPE_SIZE_T

Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/xml/expat/lib/winconfig.h
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/xml/expat/lib/winconfig.h	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/xml/expat/lib/winconfig.h	Mon Mar 26 14:45:37 2007
@@ -23,5 +23,6 @@
 #define XML_DTD 1
 #define XML_BYTE_ORDER 12
 #define XML_CONTEXT_BYTES 1024
+#define HAVE_MEMMOVE
 
 #endif /* ndef WINCONFIG_H */

Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/xml/expat/lib/xmlparse.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/xml/expat/lib/xmlparse.c	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/apr-util/xml/expat/lib/xmlparse.c	Mon Mar 26 14:45:37 2007
@@ -14,6 +14,14 @@
 #else
 #include <config.h>
 
+#ifndef HAVE_MEMMOVE
+#ifdef HAVE_BCOPY
+#define memmove(d,s,l) bcopy((s),(d),(l))
+#else
+#define memmove(d,s,l) ;punting on memmove;
+#endif
+#endif
+
 #ifdef HAVE_STRING_H
 #  include <string.h>
 #endif

Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/apr/build/apr_common.m4
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/apr/build/apr_common.m4	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/apr/build/apr_common.m4	Mon Mar 26 14:45:37 2007
@@ -23,7 +23,7 @@
 dnl
 dnl Saves a snapshot of the configure command-line for later reuse
 dnl
-AC_DEFUN(APR_CONFIG_NICE,[
+AC_DEFUN([APR_CONFIG_NICE],[
   rm -f $1
   cat >$1<<EOF
 #! /bin/sh
@@ -80,7 +80,7 @@
 
 dnl APR_MKDIR_P_CHECK(fallback-mkdir-p)
 dnl checks whether mkdir -p works
-AC_DEFUN(APR_MKDIR_P_CHECK,[
+AC_DEFUN([APR_MKDIR_P_CHECK],[
   AC_CACHE_CHECK(for working mkdir -p, ac_cv_mkdir_p,[
     test -d conftestdir && rm -rf conftestdir
     mkdir -p conftestdir/somedir >/dev/null 2>&1
@@ -118,7 +118,7 @@
 dnl Trying to optimize this is left as an exercise to the reader who wants
 dnl to put up with more autoconf craziness.  I give up.
 dnl
-AC_DEFUN(APR_SUBDIR_CONFIG, [
+AC_DEFUN([APR_SUBDIR_CONFIG], [
   # save our work to this point; this allows the sub-package to use it
   AC_CACHE_SAVE
 
@@ -186,7 +186,7 @@
 dnl
 dnl Stores the variable (usually a Makefile macro) for later restoration
 dnl
-AC_DEFUN(APR_SAVE_THE_ENVIRONMENT,[
+AC_DEFUN([APR_SAVE_THE_ENVIRONMENT],[
   apr_ste_save_$1="$$1"
 ])dnl
 
@@ -198,7 +198,7 @@
 dnl and restoring the original variable contents.  This makes it possible
 dnl for a user to override configure when it does something stupid.
 dnl
-AC_DEFUN(APR_RESTORE_THE_ENVIRONMENT,[
+AC_DEFUN([APR_RESTORE_THE_ENVIRONMENT],[
 if test "x$apr_ste_save_$1" = "x"; then
   $2$1="$$1"
   $1=
@@ -222,7 +222,7 @@
 dnl
 dnl  Set variable iff it's currently null
 dnl
-AC_DEFUN(APR_SETIFNULL,[
+AC_DEFUN([APR_SETIFNULL],[
   if test -z "$$1"; then
     test "x$silent" != "xyes" && echo "  setting $1 to \"$2\""
     $1="$2"
@@ -234,7 +234,7 @@
 dnl
 dnl  Set variable no matter what
 dnl
-AC_DEFUN(APR_SETVAR,[
+AC_DEFUN([APR_SETVAR],[
   test "x$silent" != "xyes" && echo "  forcing $1 to \"$2\""
   $1="$2"
 ])dnl
@@ -244,7 +244,7 @@
 dnl
 dnl  Add value to variable
 dnl
-AC_DEFUN(APR_ADDTO,[
+AC_DEFUN([APR_ADDTO],[
   if test "x$$1" = "x"; then
     test "x$silent" != "xyes" && echo "  setting $1 to \"$2\""
     $1="$2"
@@ -271,7 +271,7 @@
 dnl
 dnl Remove a value from a variable
 dnl
-AC_DEFUN(APR_REMOVEFROM,[
+AC_DEFUN([APR_REMOVEFROM],[
   if test "x$$1" = "x$2"; then
     test "x$silent" != "xyes" && echo "  nulling $1"
     $1=""
@@ -295,7 +295,7 @@
 dnl
 dnl APR_CHECK_DEFINE_FILES( symbol, header_file [header_file ...] )
 dnl
-AC_DEFUN(APR_CHECK_DEFINE_FILES,[
+AC_DEFUN([APR_CHECK_DEFINE_FILES],[
   AC_CACHE_CHECK([for $1 in $2],ac_cv_define_$1,[
     ac_cv_define_$1=no
     for curhdr in $2
@@ -317,7 +317,7 @@
 dnl
 dnl APR_CHECK_DEFINE(symbol, header_file)
 dnl
-AC_DEFUN(APR_CHECK_DEFINE,[
+AC_DEFUN([APR_CHECK_DEFINE],[
   AC_CACHE_CHECK([for $1 in $2],ac_cv_define_$1,[
     AC_EGREP_CPP(YES_IS_DEFINED, [
 #include <$2>
@@ -334,7 +334,7 @@
 dnl
 dnl APR_CHECK_APR_DEFINE( symbol )
 dnl
-AC_DEFUN(APR_CHECK_APR_DEFINE,[
+AC_DEFUN([APR_CHECK_APR_DEFINE],[
 apr_old_cppflags=$CPPFLAGS
 CPPFLAGS="$CPPFLAGS $INCLUDES"
 AC_EGREP_CPP(YES_IS_DEFINED, [
@@ -450,7 +450,7 @@
 dnl A variant of AC_CHECK_SIZEOF which allows the checking of
 dnl sizes of non-builtin types
 dnl
-AC_DEFUN(APR_CHECK_SIZEOF_EXTENDED,
+AC_DEFUN([APR_CHECK_SIZEOF_EXTENDED],
 [changequote(<<,>>)dnl
 dnl The name to #define
 define(<<AC_TYPE_NAME>>, translit(sizeof_$2, [a-z *], [A-Z_P]))dnl
@@ -511,7 +511,7 @@
 dnl  string.
 dnl
 dnl
-AC_DEFUN(APR_CHECK_STRERROR_R_RC,[
+AC_DEFUN([APR_CHECK_STRERROR_R_RC],[
 AC_MSG_CHECKING(for type of return code from strerror_r)
 AC_TRY_RUN([
 #include <errno.h>
@@ -546,7 +546,7 @@
 dnl  structure on this platform.  Single UNIX Spec says d_ino,
 dnl  BSD uses d_fileno.  Undef to find the real beast.
 dnl
-AC_DEFUN(APR_CHECK_DIRENT_INODE, [
+AC_DEFUN([APR_CHECK_DIRENT_INODE], [
 AC_CACHE_CHECK([for inode member of struct dirent], apr_cv_dirent_inode, [
 apr_cv_dirent_inode=no
 AC_TRY_COMPILE([
@@ -584,7 +584,7 @@
 dnl  Note that this is worthless without DT_xxx macros, so
 dnl  look for one while we are at it.
 dnl
-AC_DEFUN(APR_CHECK_DIRENT_TYPE,[
+AC_DEFUN([APR_CHECK_DIRENT_TYPE],[
 AC_CACHE_CHECK([for file type member of struct dirent], apr_cv_dirent_type,[
 apr_cv_dirent_type=no
 AC_TRY_COMPILE([
@@ -633,7 +633,7 @@
 dnl  all "." and "-" chars. If the 3rd parameter is "yes" then instead of
 dnl  setting to 1 or 0, we set FLAG-TO-SET to yes or no.
 dnl  
-AC_DEFUN(APR_FLAG_HEADERS,[
+AC_DEFUN([APR_FLAG_HEADERS],[
 AC_CHECK_HEADERS($1)
 for aprt_i in $1
 do
@@ -654,7 +654,7 @@
 dnl  is "yes" then instead of setting to 1 or 0, we set FLAG-TO-SET
 dnl  to yes or no.
 dnl
-AC_DEFUN(APR_FLAG_FUNCS,[
+AC_DEFUN([APR_FLAG_FUNCS],[
 AC_CHECK_FUNCS($1)
 for aprt_j in $1
 do
@@ -679,7 +679,7 @@
 dnl APR_EXPAND_VAR(fraz, $baz)
 dnl   $fraz is now "1/2/3"
 dnl 
-AC_DEFUN(APR_EXPAND_VAR,[
+AC_DEFUN([APR_EXPAND_VAR],[
 ap_last=
 ap_cur="$2"
 while test "x${ap_cur}" != "x${ap_last}";
@@ -698,7 +698,7 @@
 dnl orig_path="${prefix}/bar"
 dnl APR_PATH_RELATIVE(final_path, $orig_path, $prefix)
 dnl    $final_path now contains "bar"
-AC_DEFUN(APR_PATH_RELATIVE,[
+AC_DEFUN([APR_PATH_RELATIVE],[
 ap_stripped=`echo $2 | sed -e "s#^$3##"`
 # check if the stripping was successful
 if test "x$2" != "x${ap_stripped}"; then
@@ -716,12 +716,12 @@
 dnl Note: this define must be on one line so that it can be properly returned
 dnl as the help string.  When using this macro with a multi-line RHS, ensure
 dnl that you surround the macro invocation with []s
-AC_DEFUN(APR_HELP_STRING,[ifelse(regexp(AC_ACVERSION, 2\.1), -1, AC_HELP_STRING([$1],[$2]),[  ][$1] substr([                       ],len($1))[$2])])
+AC_DEFUN([APR_HELP_STRING],[ifelse(regexp(AC_ACVERSION, 2\.1), -1, AC_HELP_STRING([$1],[$2]),[  ][$1] substr([                       ],len($1))[$2])])
 
 dnl
 dnl APR_LAYOUT(configlayout, layoutname [, extravars])
 dnl
-AC_DEFUN(APR_LAYOUT,[
+AC_DEFUN([APR_LAYOUT],[
   if test ! -f $srcdir/config.layout; then
     echo "** Error: Layout file $srcdir/config.layout not found"
     echo "** Error: Cannot use undefined layout '$LAYOUT'"
@@ -784,7 +784,7 @@
 dnl
 dnl APR_ENABLE_LAYOUT(default layout name [, extra vars])
 dnl
-AC_DEFUN(APR_ENABLE_LAYOUT,[
+AC_DEFUN([APR_ENABLE_LAYOUT],[
 AC_ARG_ENABLE(layout,
 [  --enable-layout=LAYOUT],[
   LAYOUT=$enableval
@@ -805,7 +805,7 @@
 dnl a reimplementation of autoconf's argument parser,
 dnl used here to allow us to co-exist layouts and argument based
 dnl set ups.
-AC_DEFUN(APR_PARSE_ARGUMENTS,[
+AC_DEFUN([APR_PARSE_ARGUMENTS],[
 ac_prev=
 # Retrieve the command-line arguments.  The eval is needed because
 # the arguments are quoted to preserve accuracy.
@@ -931,7 +931,7 @@
 dnl
 dnl Determine what program we can use to generate .deps-style dependencies
 dnl
-AC_DEFUN(APR_CHECK_DEPEND,[
+AC_DEFUN([APR_CHECK_DEPEND],[
 dnl Try to determine what depend program we can use
 dnl All GCC-variants should have -MM.
 dnl If not, then we can check on those, too.

Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/codec/gsm/configure.in
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/codec/gsm/configure.in	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/codec/gsm/configure.in	Mon Mar 26 14:45:37 2007
@@ -5,7 +5,6 @@
 AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
 AM_INIT_AUTOMAKE(libgsm,0.1)
 AC_CONFIG_SRCDIR([src])
-#AC_CONFIG_HEADER([])
 
 # Checks for programs.
 AC_PROG_CC

Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/libteletone/configure.in
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/libteletone/configure.in	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/libteletone/configure.in	Mon Mar 26 14:45:37 2007
@@ -6,7 +6,6 @@
 AC_CONFIG_AUX_DIR(build)
 AM_INIT_AUTOMAKE(libteletone,0.1)
 AC_CONFIG_SRCDIR([src])
-#AC_CONFIG_HEADER([])
 
 # Checks for programs.
 AC_PROG_CC

Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/portaudio/Makefile.in
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/portaudio/Makefile.in	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/portaudio/Makefile.in	Mon Mar 26 14:45:37 2007
@@ -57,61 +57,61 @@
 	src/common/pa_trace.o
 
 TESTS = \
-	bin/paqa_devs \
-	bin/paqa_errs \
-	bin/patest1 \
-	bin/patest_buffer \
-	bin/patest_callbackstop \
-	bin/patest_clip \
-	bin/patest_dither \
-	bin/patest_hang \
-	bin/patest_in_overflow \
-	bin/patest_latency \
-	bin/patest_leftright \
-	bin/patest_longsine \
-	bin/patest_many \
-	bin/patest_maxsines \
-	bin/patest_multi_sine \
-	bin/patest_out_underflow \
-	bin/patest_pink \
-	bin/patest_prime \
-	bin/patest_read_record \
-	bin/patest_read_write_wire \
-	bin/patest_record \
-	bin/patest_ringmix \
-	bin/patest_saw \
-	bin/patest_sine8 \
-	bin/patest_sine \
-	bin/patest_sine_formats \
-	bin/patest_sine_time \
-	bin/patest_start_stop \
-	bin/patest_stop \
-	bin/patest_stop_playout \
-	bin/patest_toomanysines \
-	bin/patest_underflow \
-	bin/patest_wire \
-	bin/patest_write_sine \
-	bin/pa_devs \
-	bin/pa_fuzz \
-	bin/pa_minlat
+	test/paqa_devs \
+	test/paqa_errs \
+	test/patest1 \
+	test/patest_buffer \
+	test/patest_callbackstop \
+	test/patest_clip \
+	test/patest_dither \
+	test/patest_hang \
+	test/patest_in_overflow \
+	test/patest_latency \
+	test/patest_leftright \
+	test/patest_longsine \
+	test/patest_many \
+	test/patest_maxsines \
+	test/patest_multi_sine \
+	test/patest_out_underflow \
+	test/patest_pink \
+	test/patest_prime \
+	test/patest_read_record \
+	test/patest_read_write_wire \
+	test/patest_record \
+	test/patest_ringmix \
+	test/patest_saw \
+	test/patest_sine8 \
+	test/patest_sine \
+	test/patest_sine_formats \
+	test/patest_sine_time \
+	test/patest_start_stop \
+	test/patest_stop \
+	test/patest_stop_playout \
+	test/patest_toomanysines \
+	test/patest_underflow \
+	test/patest_wire \
+	test/patest_write_sine \
+	test/pa_devs \
+	test/pa_fuzz \
+	test/pa_minlat
 
 # Most of these don't compile yet.  Put them in TESTS, above, if
 # you want to try to compile them...
 ALL_TESTS = \
 	$(TESTS) \
-	bin/patest_sync \
-	bin/debug_convert \
-	bin/debug_dither_calc \
-	bin/debug_dual \
-	bin/debug_multi_in \
-	bin/debug_multi_out \
-	bin/debug_record \
-	bin/debug_record_reuse \
-	bin/debug_sine_amp \
-	bin/debug_sine \
-	bin/debug_sine_formats \
-	bin/debug_srate \
-	bin/debug_test1
+	test/patest_sync \
+	test/debug_convert \
+	test/debug_dither_calc \
+	test/debug_dual \
+	test/debug_multi_in \
+	test/debug_multi_out \
+	test/debug_record \
+	test/debug_record_reuse \
+	test/debug_sine_amp \
+	test/debug_sine \
+	test/debug_sine_formats \
+	test/debug_srate \
+	test/debug_test1
 
 OBJS = $(COMMON_OBJS) $(OTHER_OBJS)
 
@@ -128,9 +128,8 @@
 lib/$(PALIB): lib-stamp $(LTOBJS) $(MAKEFILE) $(PAINC)
 	$(LIBTOOL) --mode=link $(CC) $(PA_LDFLAGS) -o lib/$(PALIB) $(LTOBJS) $(DLL_LIBS)
 
-$(ALL_TESTS): bin/%: lib/$(PALIB) $(MAKEFILE) $(PAINC) test/%.c
-	$(LIBTOOL) --mode=link $(CC) -o $@ $(CFLAGS) $(top_srcdir)/test/$*.c lib/$(PALIB) $(LIBS)
-
+$(ALL_TESTS): lib/$(PALIB) $(MAKEFILE) $(PAINC)
+	$(LIBTOOL) --mode=link $(CC) -o $@ $(CFLAGS) $(top_srcdir)/$@.c lib/$(PALIB) $(LIBS)
 
 install: lib/$(PALIB) portaudio-2.0.pc
 	$(INSTALL) -d $(DESTDIR)$(libdir)

Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/portaudio/src/common/pa_ringbuffer.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/portaudio/src/common/pa_ringbuffer.c	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/portaudio/src/common/pa_ringbuffer.c	Mon Mar 26 14:45:37 2007
@@ -71,7 +71,7 @@
  *
  ****************/
 
-#if defined(HAVE_LIBKERN_OSATOMIC_H) && defined(__APPLE__) || defined(__FreeBSD__)
+#if defined(HAVE_LIBKERN_OSATOMIC_H) && (defined(__APPLE__) || defined(__FreeBSD__))
 #   include <libkern/OSAtomic.h>
     /* Here are the memory barrier functions. Mac OS X and FreeBSD only provide
        full memory barriers, so the three types of barriers are the same. */

Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/xmlrpc-c/configure.gnu
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/xmlrpc-c/configure.gnu	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/xmlrpc-c/configure.gnu	Mon Mar 26 14:45:37 2007
@@ -1,2 +1,2 @@
 #! /bin/sh
-./configure "$@" --disable-cplusplus --disable-wininet-client --disable-libwww-client --disable-shared --with-pic
+./configure "$@" --disable-cplusplus --disable-wininet-client --disable-libwww-client --disable-shared --with-pic --disable-curl-client

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch.h
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch.h	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch.h	Mon Mar 26 14:45:37 2007
@@ -79,7 +79,6 @@
 #include <switch_console.h>
 #include <switch_utils.h>
 #include <switch_caller.h>
-#include <switch_config.h>
 #include <switch_frame.h>
 #include <switch_module_interfaces.h>
 #include <switch_channel.h>

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_config.h
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_config.h	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_config.h	Mon Mar 26 14:45:37 2007
@@ -60,6 +60,8 @@
 
 SWITCH_BEGIN_EXTERN_C
 
+typedef struct switch_config switch_config_t;
+
 /*! \brief A simple file handle representing an open configuration file **/
 struct switch_config {
 	/*! FILE stream buffer to the opened file */

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_log.h
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_log.h	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_log.h	Mon Mar 26 14:45:37 2007
@@ -64,6 +64,9 @@
 	switch_time_t timestamp;
 	/*! A pointer to where the actual content of the message starts (skipping past the preformatted portion) */	
 	char *content;
+
+	/* To maintain abi, only add new elements to the end of this struct and do not delete any elements */
+
 } switch_log_node_t;
 
 typedef switch_status_t (*switch_log_function_t)(const switch_log_node_t *node, switch_log_level_t level);

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_resample.h
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_resample.h	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_resample.h	Mon Mar 26 14:45:37 2007
@@ -155,6 +155,14 @@
 SWITCH_DECLARE(void) switch_swap_linear(int16_t *buf, int len);
 
 /*!
+  \brief Generate static noise
+  \param data the audio data buffer
+  \param samples the number of 2 byte samples
+  \param divisor the volume factor
+ */
+SWITCH_DECLARE(void) switch_generate_sln_silence(int16_t *data, uint32_t samples, uint32_t divisor);
+
+/*!
   \brief Change the volume of a signed linear audio frame
   \param data the audio data
   \param samples the number of 2 byte samples

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_types.h
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_types.h	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/include/switch_types.h	Mon Mar 26 14:45:37 2007
@@ -943,7 +943,6 @@
 typedef struct switch_codec_implementation switch_codec_implementation_t;
 typedef struct switch_buffer switch_buffer_t;
 typedef struct switch_codec_settings switch_codec_settings_t;
-typedef struct switch_config switch_config_t;
 
 typedef struct switch_io_event_hook_outgoing_channel switch_io_event_hook_outgoing_channel_t;
 typedef struct switch_io_event_hook_answer_channel switch_io_event_hook_answer_channel_t;

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/Makefile.am
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/Makefile.am	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/Makefile.am	Mon Mar 26 14:45:37 2007
@@ -1,9 +1,9 @@
 CONF_MODULES=if test ! -f $(switch_builddir)/modules.conf ; then cp $(switch_builddir)/build/modules.conf.in $(switch_builddir)/modules.conf ; fi ; conf_modules=`grep -v "\#" $(switch_builddir)/modules.conf` ;
 FOUND_MODULES=found_modules=`find . -type d -name mod_\* | sed -e 's|^\./||'` ;
-OUR_MODULES=if test -z "$(MODULES)" ; then our_modules=$$conf_modules ; else our_modules=$(MODULES) ; fi ;
+OUR_MODULES=if test -z "$(MODULES)" ; then our_modules=$$conf_modules ; else our_modules="$(MODULES)" ; fi ;
 OUR_CLEAN_MODULES=if test -z "$(MODULES)" ; then tmp_clean_modules=`echo $$conf_modules $$found_modules`; \
 			our_clean_modules=`for i in $$tmp_clean_modules ; do echo $$i ; done | sort | uniq` ; \
-			 else our_clean_modules=$(MODULES) ; fi ;
+			 else our_clean_modules="$(MODULES)" ; fi ;
 MOD_NAME=`echo $$i | sed -e 's|^.*/||'`
 MOD_DIR=`if test -d $(switch_srcdir)/src/mod/$$i ; then echo $(switch_srcdir)/src/mod/$$i ; else echo $$i ; fi;`
 AM_MAKEFLAGS = `test -n "$(VERBOSE)" || echo -s`

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/applications/mod_conference/mod_conference.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/applications/mod_conference/mod_conference.c	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/applications/mod_conference/mod_conference.c	Mon Mar 26 14:45:37 2007
@@ -735,7 +735,7 @@
 			if (conference->fnode->leadin) {
 				conference->fnode->leadin--;
 			} else {
-				ready++;
+				file_sample_len = samples;
 				if (conference->fnode->type == NODE_TYPE_SPEECH) {
 					switch_speech_flag_t flags = SWITCH_SPEECH_FLAG_BLOCKING;
 					uint32_t rate = conference->rate;
@@ -758,34 +758,40 @@
 				}
 			}
 			has_file_data = 1;
+			ready++;
 		} else {
 			has_file_data = 0;
 		}
 
 		if (conference->async_fnode) {
-			switch_core_file_read(&conference->async_fnode->fh, async_file_frame, &file_sample_len);
-
-			if (file_sample_len <= 0) {
-				conference->async_fnode->done++;
+			/* Lead in time */
+			if (conference->async_fnode->leadin) {
+				conference->async_fnode->leadin--;
 			} else {
-				if (has_file_data) {
-					switch_size_t x;			
-					for (x = 0; x < file_sample_len; x++) {
-						int32_t z;
-						int16_t *bptr, *muxed;
-						
-						muxed = (int16_t *) file_frame;
-						bptr = (int16_t *) async_file_frame;
-						z = muxed[x] + bptr[x];
-						switch_normalize_to_16bit(z);
-						muxed[x] = (int16_t)z;
-					}
+				file_sample_len = samples;
+				switch_core_file_read(&conference->async_fnode->fh, async_file_frame, &file_sample_len);
+				if (file_sample_len <= 0) {
+					conference->async_fnode->done++;
 				} else {
-					memcpy(file_frame, async_file_frame, file_sample_len * 2);
-					has_file_data = 1;
+					if (has_file_data) {
+						switch_size_t x;			
+						for (x = 0; x < file_sample_len; x++) {
+							int32_t z;
+							int16_t *bptr, *muxed;
+							
+							muxed = (int16_t *) file_frame;
+							bptr = (int16_t *) async_file_frame;
+							z = muxed[x] + bptr[x];
+							switch_normalize_to_16bit(z);
+							muxed[x] = (int16_t)z;
+						}
+					} else {
+						memcpy(file_frame, async_file_frame, file_sample_len * 2);
+						has_file_data = 1;
+						ready++;
+					}
 				}
 			}
-
 		}
 
 		if (ready) {
@@ -833,22 +839,22 @@
 						if (imember->read > imember->len) {
 							imember->len = imember->read;
 						}
-
+						
 						bptr = (int16_t *) imember->frame;
 						muxed = (int16_t *) omember->mux_frame;
 
-
+						
 						for (x = 0; x < imember->read / 2; x++) {
 							int32_t z = muxed[x] + bptr[x];
 							switch_normalize_to_16bit(z);
 							muxed[x] = (int16_t)z;
 						}
-
+						
 						ready++;
 					}
 				}
 			}
-
+			
 			/* Go back and write each member his dedicated copy of the audio frame that does not contain his own audio. */
 			for (imember = conference->members; imember; imember = imember->next) {
 				if (switch_test_flag(imember, MFLAG_RUNNING)) {
@@ -1466,7 +1472,7 @@
 							   samples, 
 							   NULL) == SWITCH_STATUS_SUCCESS) {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "setup timer %s success interval: %u  samples: %u\n", 
-						  member->conference->timer_name, member->conference->interval, samples);	
+						  member->conference->timer_name, interval, samples);	
 	} else {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Timer Setup Failed.  Conference Cannot Start\n");	
 		return;
@@ -1696,7 +1702,7 @@
 				
 			} else {
 				if (switch_test_flag(member, MFLAG_WASTE_BANDWIDTH)) {
-					memset(write_frame.data, 255, bytes);
+					switch_generate_sln_silence(write_frame.data, samples, 1400);
 					write_frame.datalen = bytes;
 					write_frame.samples = samples;
 					write_frame.timestamp = timer.samplecount;
@@ -1958,7 +1964,7 @@
         }
     }
 
-    if (!strncasecmp(file, "say:", 4)) {
+    if (!async && !strncasecmp(file, "say:", 4)) {
         status = conference_say(conference, file + 4, leadin);
         goto done;
     } 
@@ -1969,10 +1975,12 @@
                 goto done;
             }
             file = dfile;
-        } else {
+        } else if (!async) {
             status = conference_say(conference, file, leadin);
             goto done;  
-        }
+        } else {
+			goto done;
+		}
     }
 
     /* Setup a memory pool to use. */
@@ -2017,8 +2025,10 @@
 		conference->async_fnode = fnode;
 
 		if (nptr) {
-			switch_speech_flag_t flags = SWITCH_SPEECH_FLAG_NONE;
-			switch_core_speech_close(&conference->fnode->sh, &flags);
+			switch_memory_pool_t *pool;
+			switch_core_file_close(&nptr->fh);
+			pool = nptr->pool;
+            switch_core_destroy_memory_pool(&pool);
 		}
 		
 	} else {
@@ -4046,10 +4056,12 @@
                                NULL, 
                                member.pool) == SWITCH_STATUS_SUCCESS) {
         switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Success L16@%uhz 1 channel %dms\n", 
-                          conference->rate, conference->interval);
+                          read_codec->implementation->samples_per_second,
+						  read_codec->implementation->microseconds_per_frame / 1000);
     } else {
         switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Failed L16@%uhz 1 channel %dms\n", 
-                          conference->rate, conference->interval);
+						  read_codec->implementation->samples_per_second,
+						  read_codec->implementation->microseconds_per_frame / 1000);
         flags = 0;
         goto done;
     }
@@ -4075,17 +4087,19 @@
     if (switch_core_codec_init(&member.write_codec, 
                                "L16", 
                                NULL, 
-                               conference->rate, 
-                               conference->interval, 
+                               read_codec->implementation->samples_per_second, 
+                               read_codec->implementation->microseconds_per_frame / 1000, 
                                1, 
                                SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE, 
                                NULL, 
                                member.pool) == SWITCH_STATUS_SUCCESS) {
         switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Success L16@%uhz 1 channel %dms\n", 
-                          conference->rate, conference->interval);
+						  read_codec->implementation->samples_per_second,
+						  read_codec->implementation->microseconds_per_frame / 1000);
     } else {
         switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Raw Codec Activation Failed L16@%uhz 1 channel %dms\n", 
-                          conference->rate, conference->interval);
+						  read_codec->implementation->samples_per_second,
+						  read_codec->implementation->microseconds_per_frame / 1000);
         flags = 0;
         goto codec_done2;
     }

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/asr_tts/mod_lumenvox/Makefile
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/asr_tts/mod_lumenvox/Makefile	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/asr_tts/mod_lumenvox/Makefile	Mon Mar 26 14:45:37 2007
@@ -3,9 +3,9 @@
 
 # and define these variables to impact your build
 
-LOCAL_CFLAGS= -fpermissive -Wno-deprecated -Wno-conversion -fpermissive -Wno-unused -Wno-comment -Wno-sign-compare \
-	-Wno-conversion -Wno-reorder -I/opt/lumenvox/eng\ine_7.0/include
-LOCAL_LDFLAGS= -L/opt/lumenvox/engine_7.0/lib -llv_lvspeechport
-LOCAL_OBJS=
+LVENGINE_DIR=/opt/lumenvox/engine_7.0
+LOCAL_CFLAGS= -fpermissive -Wno-deprecated -Wno-conversion -fpermissive -Wno-unused
+LOCAL_CFLAGS+= -Wno-comment -Wno-sign-compare -Wno-conversion -Wno-reorder -I$(LVINCLUDE)
+LOCAL_LDFLAGS= -L$(LVLIB) -llv_lvspeechport
 include ../../../../build/modmake.rules
 

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/codecs/mod_g723_1/Makefile
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/codecs/mod_g723_1/Makefile	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/codecs/mod_g723_1/Makefile	Mon Mar 26 14:45:37 2007
@@ -1,6 +1,8 @@
 BASE=../../../..
+DIR=$(BASE)/libs/libg723_1
+A=$(DIR)/.libs/libg723.a
 
-LOCAL_INSERT_CFLAGS=if test -d $(BASE)/libs/libg723_1; then echo "-I$(PREFIX)/include/g723" ; else echo "-DG723_PASSTHROUGH" ; fi ;
-LOCAL_INSERT_LDFLAGS=test ! -d $(BASE)/libs/libg723_1 || echo "-lg723"
+LOCAL_INSERT_CFLAGS=if test -f $(A); then echo "-I$(DIR)/src/include" ; else echo "-DG723_PASSTHROUGH" ; fi ;
+LOCAL_INSERT_LDFLAGS=test ! -f $(A) || echo $(A) 
 
 include $(BASE)/build/modmake.rules

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/codecs/mod_g729/Makefile
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/codecs/mod_g729/Makefile	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/codecs/mod_g729/Makefile	Mon Mar 26 14:45:37 2007
@@ -1,4 +1,7 @@
 BASE=../../../..
-LOCAL_INSERT_CFLAGS=if test -d $(BASE)/libs/libg729; then echo "-I$(PREFIX)/include/libg729" ; else echo "-DG729_PASSTHROUGH" ; fi ;
-LOCAL_INSERT_LDFLAGS=test ! -d $(BASE)/libs/libg729 || echo "-lg729" 
+DIR=$(BASE)/libs/libg729
+A=$(DIR)/.libs/libg729.a
+
+LOCAL_INSERT_CFLAGS=if test -f $(A); then echo "-I$(DIR)/src/include" ; else echo "-DG729_PASSTHROUGH" ; fi ;
+LOCAL_INSERT_LDFLAGS=test ! -f $(A) || echo $(A) 
 include $(BASE)/build/modmake.rules

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c	Mon Mar 26 14:45:37 2007
@@ -34,11 +34,8 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 
-
 static const char modname[] = "mod_dialplan_xml";
 
-
-
 typedef enum {
 	BREAK_ON_TRUE,
 	BREAK_ON_FALSE,
@@ -193,36 +190,26 @@
 	return proceed;
 }
 
-static switch_caller_extension_t *dialplan_hunt(switch_core_session_t *session, void *arg)
+static switch_status_t dialplan_xml_locate(switch_core_session_t *session,
+										   switch_caller_profile_t *caller_profile,
+										   switch_xml_t *root,
+										   switch_xml_t *node)
 {
-	switch_caller_profile_t *caller_profile;
-	switch_caller_extension_t *extension = NULL;
+	switch_status_t status = SWITCH_STATUS_GENERR;
 	switch_channel_t *channel;
-	switch_xml_t alt_root = NULL, cfg, xml, xcontext, xexten;
-	char *context = NULL;
     switch_stream_handle_t stream = {0};
     switch_size_t encode_len = 1024, new_len = 0;
     char *encode_buf = NULL;
     char *prof[12] = {0}, *prof_names[12] = {0}, *e = NULL;
     switch_hash_index_t *hi;
     uint32_t x = 0;
-    char *alt_path = (char *) arg;
 
 	channel = switch_core_session_get_channel(session);
-	if ((caller_profile = switch_channel_get_caller_profile(channel))) {
-		context = caller_profile->context ? caller_profile->context : "default";
-	} else {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Obtaining Profile!\n");
-		return NULL;
-	}
-
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Processing %s->%s!\n", caller_profile->caller_id_name,
-					  caller_profile->destination_number);
 
     SWITCH_STANDARD_STREAM(stream);
     
     if (!(encode_buf = malloc(encode_len))) {
-        return NULL;
+        goto done;
     }
     
     prof[0] = caller_profile->context;
@@ -250,6 +237,9 @@
     prof_names[10] = "uuid";
 
     for (x = 0; prof[x]; x++) {
+		if (switch_strlen_zero(prof[x])) {
+			continue;
+		}
         new_len = (strlen(prof[x]) * 3) + 1;
         if (encode_len < new_len) {
             char *tmp;
@@ -257,8 +247,7 @@
             encode_len = new_len;
 
             if (!(tmp = realloc(encode_buf, encode_len))) {
-                switch_safe_free(encode_buf);
-                return NULL;
+                goto done;
             }
 
             encode_buf = tmp;
@@ -280,8 +269,7 @@
             encode_len = new_len;
 
             if (!(tmp = realloc(encode_buf, encode_len))) {
-                switch_safe_free(encode_buf);
-                return NULL;
+                goto done;
             }
 
             encode_buf = tmp;
@@ -298,11 +286,43 @@
         *e = '\0';
     }
 
-    if (!switch_strlen_zero(alt_path)) {
+	status = switch_xml_locate("dialplan", NULL, NULL, NULL, root, node, stream.data);
+
+done:
+	switch_safe_free(stream.data);
+	switch_safe_free(encode_buf);
+	return status;
+}
+
+static switch_caller_extension_t *dialplan_hunt(switch_core_session_t *session, void *arg)
+{
+	switch_caller_profile_t *caller_profile;
+	switch_caller_extension_t *extension = NULL;
+	switch_channel_t *channel;
+	switch_xml_t alt_root = NULL, cfg, xml = NULL, xcontext, xexten;
+    char *alt_path = (char *) arg;
+
+	channel = switch_core_session_get_channel(session);
+
+	if ((caller_profile = switch_channel_get_caller_profile(channel))) {
+		if (!caller_profile->context) {
+			caller_profile->context = "default";
+		}
+	} else {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Obtaining Profile!\n");
+		goto done;
+	}
+
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Processing %s->%s!\n", caller_profile->caller_id_name,
+					  caller_profile->destination_number);
+
+	/* get our handle to the "dialplan" section of the config */
+
+	if (!switch_strlen_zero(alt_path)) {
         switch_xml_t conf = NULL, tag = NULL;
         if (!(alt_root = switch_xml_parse_file(alt_path))) {
             switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of [%s] failed\n", alt_path);
-            return NULL;
+            goto done;
         }
         
 		if ((conf = switch_xml_find_child(alt_root, "section", "name", "dialplan")) && 
@@ -312,22 +332,20 @@
             cfg = tag;
         } else {
             switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of dialplan failed\n");
-            return NULL;
+            goto done;
         }
-    } else if (switch_xml_locate("dialplan", NULL, NULL, NULL, &xml, &cfg, stream.data) != SWITCH_STATUS_SUCCESS) {
-        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of dialplan failed\n");
-        return NULL;
+	} else {
+		if (dialplan_xml_locate(session, caller_profile, &xml, &cfg) != SWITCH_STATUS_SUCCESS) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "open of dialplan failed\n");
+			goto done;
+		}
     }
     
-	
-    switch_safe_free(stream.data);
-    switch_safe_free(encode_buf);
-    
-	if (!(xcontext = switch_xml_find_child(cfg, "context", "name", context))) {
+    /* get a handle to the context tag */
+	if (!(xcontext = switch_xml_find_child(cfg, "context", "name", caller_profile->context))) {
 		if (!(xcontext = switch_xml_find_child(cfg, "context", "name", "global"))) {
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "context %s not found\n", context);
-			switch_xml_free(xml);
-			return NULL;
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "context %s not found\n", caller_profile->context);
+			goto done;
 		}
 	}
 	
@@ -355,6 +373,8 @@
 		switch_channel_set_state(channel, CS_EXECUTE);
 	}
 
+done:
+	switch_xml_free(xml);
 	return extension;
 }
 

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_iax/mod_iax.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_iax/mod_iax.c	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_iax/mod_iax.c	Mon Mar 26 14:45:37 2007
@@ -587,9 +587,7 @@
     default:
         break;
     }
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "%s CHANNEL KILL\n", switch_channel_get_name(channel));
-
-
+	
 	return SWITCH_STATUS_SUCCESS;
 }
 
@@ -649,7 +647,8 @@
 	private_t *tech_pvt = NULL;
 	switch_time_t started = switch_time_now();
 	unsigned int elapsed;
-
+	switch_byte_t *data;
+	
 	channel = switch_core_session_get_channel(session);
 	assert(channel != NULL);
 
@@ -703,12 +702,14 @@
 	return SWITCH_STATUS_FALSE;
 
  cng:
-    tech_pvt->read_frame.datalen = 13;
-    memset(tech_pvt->read_frame.data, 0, 13);
+	data = (switch_byte_t *) tech_pvt->read_frame.data;
+	data[0] = 65;
+	data[1] = 0;
+    tech_pvt->read_frame.datalen = 2;
     tech_pvt->read_frame.flags = SFF_CNG; 
     *frame = &tech_pvt->read_frame;
     return SWITCH_STATUS_SUCCESS;
-
+	
 }
 
 static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, int timeout,

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/Makefile
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/Makefile	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/Makefile	Mon Mar 26 14:45:37 2007
@@ -1,10 +1,36 @@
 BASE=../../../..
-LOCAL_CFLAGS  =-I/usr/local/include -I/usr/src/libpri -I/usr/src/linux/include -I. -I/usr/include 
-LOCAL_CFLAGS +=-D__LINUX__ -D_REENTRANT -D_GNU_SOURCE -DAFT_A104 -DWANPIPE_TDM_API -I$(switch_srcdir)/libs/libteletone/src
-LOCAL_CFLAGS +=-w
-LOCAL_LDFLAGS=-lsangoma $(BASE)/libs/libteletone/libteletone.la
-LOCAL_OBJS=ss7boost_client.o
-include $(BASE)/build/modmake.rules
+LIBPRI_HOST=http://ftp.digium.com/pub/libpri
+LIBPRI=libpri-1.2.4
+LIBPRI_FILE=$(LIBPRI).tar.gz
+LIBPRI_DIR=$(BASE)/libs/$(LIBPRI)
+WANPIPE=wanpipe-3.1.0.p13
+WANPIPE_HOST=ftp://ftp.sangoma.com/linux/custom/3.1
+WANPIPE_FILE=$(WANPIPE).tgz
+WANPIPE_DIR=$(BASE)/libs/$(WANPIPE)
+WANPIPE_INCLUDE=$(WANPIPE_DIR)/patches/kdrivers/include
+WANPIPE_KO=$(WANPIPE_DIR)/patches/kdrivers/src/net/wanpipe.ko
+WANPIPE_INSTALLED_KO=$(shell echo "/lib/modules/`uname -r`/kernel/drivers/net/wan/wanpipe.ko")
+LIBSANGOMA_DIR=$(WANPIPE_DIR)/api/libsangoma
+LOCAL_CFLAGS  =-w -I$(WANPIPE_INCLUDE) -I$(LIBSANGOMA_DIR) -I/usr/local/include -I$(LIBPRI_DIR) -I/usr/src/linux/include -I. -I/usr/include 
+LOCAL_CFLAGS +=-D__LINUX__ -D_REENTRANT -D_GNU_SOURCE -DAFT_A104 -DWANPIPE_TDM_API -I$(switch_srcdir)/libs/libteletone/src -D_GNUC_ -DWANPIPE_TDM_API
+LOCAL_OBJS = ss7boost_client.o $(LIBPRI_DIR)/copy_string.o $(LIBPRI_DIR)/pri.o $(LIBPRI_DIR)/q921.o $(LIBPRI_DIR)/prisched.o $(LIBPRI_DIR)/q931.o $(LIBPRI_DIR)/pri_facility.o $(LIBSANGOMA_DIR)/libsangoma.o $(LIBSANGOMA_DIR)/sangoma_pri.o 
+
+include $(BASE)/build/modmake.rules 
+
+$(LIBPRI_DIR):
+	$(GETLIB) $(LIBPRI_HOST) $(LIBPRI_FILE)
+
+$(WANPIPE_DIR):
+	$(GETLIB) $(WANPIPE_HOST) $(WANPIPE_FILE)
+
+$(WANPIPE_KO): $(WANPIPE_DIR)
+	cd $(WANPIPE_DIR) && $(MAKE)
+	@$(TOUCH_TARGET)
+
+$(WANPIPE_INSTALLED_KO): $(WANPIPE_KO)
+	cd $(WANPIPE_DIR) && $(MAKE) install
+
+local_depend: $(LIBPRI_DIR) $(WANPIPE_KO)
+
+local_install: $(WANPIPE_INSTALLED_KO)
 
-local_depend:
-	MAKE=$(MAKE) $(BASE)/build/buildlib.sh $(BASE) install libsangoma --prefix=$(PREFIX) --with-libpri=/usr/src/libpri

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/endpoints/mod_wanpipe/mod_wanpipe.c	Mon Mar 26 14:45:37 2007
@@ -80,7 +80,6 @@
 	char map[SANGOMA_MAX_CHAN_PER_SPAN][SWITCH_UUID_FORMATTED_LENGTH + 1];
 };
 
-
 unsigned int txseq=0;
 unsigned int rxseq=0;
 
@@ -116,6 +115,8 @@
 	switch_mutex_t *hash_mutex;
 	switch_mutex_t *channel_mutex;
 	ss7boost_handle_t *ss7boost_handle;
+	uint32_t fxo_index;
+	uint32_t fxs_index;
 } globals;
 
 struct wanpipe_pri_span {
@@ -138,6 +139,37 @@
 
 typedef struct wpsock wpsock_t;
 
+typedef enum {
+	ANALOG_TYPE_UNKNOWN,
+	ANALOG_TYPE_PHONE_FXS,
+	ANLOG_TYPE_LINE_FXO
+} analog_type_t;
+
+typedef enum {
+	ANALOG_STATE_DOWN,
+	ANALOG_STATE_ONHOOK,
+	ANALOG_STATE_OFFHOOK,
+	ANALOG_STATE_RING
+} analog_state_t;
+
+struct analog_channel {
+	analog_type_t a_type;
+	analog_state_t state;
+	wpsock_t *sock;
+	int chan;
+	int span;
+	char *device;
+	char *user;
+	char *domain;
+	char *cid_name;
+	char *cid_num;
+};
+typedef struct analog_channel analog_channel_t;
+
+#define MAX_ANALOG_CHANNELS 128
+static struct analog_channel *FXS_ANALOG_CHANNELS[MAX_ANALOG_CHANNELS];
+static struct analog_channel *FXO_ANALOG_CHANNELS[MAX_ANALOG_CHANNELS];
+
 static struct wanpipe_pri_span *SPANS[MAX_SPANS];
 
 struct private_object {
@@ -176,6 +208,105 @@
 };
 typedef struct private_object private_object_t;
 
+
+
+static int local_sangoma_tdm_read_event(sng_fd_t fd, wp_tdm_api_rx_hdr_t *rx_event)
+{
+	wanpipe_tdm_api_t tdm_api[1];
+	
+#if defined(WIN32)
+    rx_event = &last_tdm_api_event_buffer;
+#else
+    int err;
+
+    tdm_api->wp_tdm_cmd.cmd = SIOC_WP_TDM_READ_EVENT;
+
+    if ((err = sangoma_tdm_cmd_exec(fd, tdm_api))) {
+        return err;
+    }
+
+    rx_event = &tdm_api->wp_tdm_cmd.event;
+#endif
+
+	return 0;
+}
+
+static int analog_set_state(analog_channel_t *alc, analog_state_t state)
+{
+	alc->state = state;
+	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Changing State to %d\n", state);
+}
+
+static void analog_check_state(analog_channel_t *alc)
+{
+	wanpipe_tdm_api_t tdm_api;
+
+	switch(alc->state) {
+	case ANALOG_STATE_DOWN:
+		sangoma_tdm_enable_rxhook_events(alc->sock->fd, &tdm_api);
+		analog_set_state(alc, ANALOG_STATE_ONHOOK);
+		break;
+	default:
+		break;
+	}
+}
+
+static void analog_parse_event(analog_channel_t *alc)
+{
+	wp_tdm_api_rx_hdr_t rx_event;
+	int err = local_sangoma_tdm_read_event(alc->sock->fd, &rx_event);
+	
+	if (err < 0) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error reading event!\n");
+		return;
+	}
+
+	switch (rx_event.wp_tdm_api_event_type) {
+	case WP_TDM_EVENT_RXHOOK:
+		printf("hook\n");
+		break;
+	}
+
+}
+
+static void *SWITCH_THREAD_FUNC fxs_thread_run(switch_thread_t *thread, void *obj)
+{
+
+	for(;;) {
+		int i = 0, sel_on = -1;
+		fd_set oob;
+		FD_ZERO(&oob);
+		
+		for(i = 0; i < globals.fxs_index; i++) {
+			int fd;
+			assert(FXS_ANALOG_CHANNELS[i]);
+			assert(FXS_ANALOG_CHANNELS[i]->sock);
+
+			fd = FXS_ANALOG_CHANNELS[i]->sock->fd;
+			
+			analog_check_state(FXS_ANALOG_CHANNELS[i]);
+
+			FD_SET(fd, &oob);
+
+			if (fd > sel_on) {
+				sel_on = fd;
+			}
+		}
+
+		if (sel_on > -1) {
+			if (select(++sel_on, NULL, NULL, &oob, NULL)) {
+				for(i = 0; i < globals.fxs_index; i++) {
+					int fd = FXS_ANALOG_CHANNELS[i]->sock->fd;
+					if (FD_ISSET(fd, &oob)) {
+						analog_parse_event(FXS_ANALOG_CHANNELS[i]);
+					}
+				}
+			}
+		}
+	}
+}
+
+
 static int wp_close(private_object_t *tech_pvt)
 {
 	int ret = 0;
@@ -190,7 +321,7 @@
 	return ret;
 }
 
-static int wp_open(private_object_t *tech_pvt, int span, int chan)
+static wpsock_t *wp_open(private_object_t *tech_pvt, int span, int chan)
 {
 	sng_fd_t fd;
 	wpsock_t *sock;
@@ -212,7 +343,7 @@
 		}
 	}
 
-	if (sock) {
+	if (sock && tech_pvt) {
 		if (sock->tech_pvt) {
 			if (tech_pvt->session) {
 				switch_channel_t *channel = switch_core_session_get_channel(tech_pvt->session);
@@ -225,7 +356,7 @@
 
 	switch_mutex_unlock(globals.hash_mutex);
 
-	return sock ? 1 : 0;
+	return sock;
 }
 
 static int wp_restart(int span, int chan)
@@ -2038,7 +2169,7 @@
 {
 	char *cf = "wanpipe.conf";
 	int current_span = 0, min_span = 0, max_span = 0;
-	switch_xml_t cfg, xml, settings, param, pri_spans, ss7boost_handles, span;
+	switch_xml_t cfg, xml, settings, param, pri_spans, ss7boost_handles, span, analog_channels, channel;
 
 	globals.samples_per_frame = DEFAULT_SAMPLES_PER_FRAME;
 	globals.dtmf_on = 150;
@@ -2112,6 +2243,102 @@
 		break;
 	}
 
+	analog_channels = switch_xml_child(cfg, "analog_channels");
+	for(channel = switch_xml_child(analog_channels, "channel"); channel; channel = channel->next) {
+		char *c_type = (char *) switch_xml_attr(channel, "type");
+		char *c_dev = (char *) switch_xml_attr(channel, "device");
+		char *user = NULL;
+		char *domain = NULL;
+		char *cid_name = NULL, *cid_num = NULL;
+		analog_channel_t *alc;
+		analog_type_t a_type = ANALOG_TYPE_UNKNOWN;
+		wpsock_t *sock;
+		int chan, span;
+		
+		if (!c_type) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing required attribute 'type'\n");
+			continue;
+		}
+
+		if (!strcasecmp(c_type, "phone") || !strcasecmp(c_type, "fxs")) {
+			a_type = ANALOG_TYPE_PHONE_FXS;
+		} else if (!strcasecmp(c_type, "line") || !strcasecmp(c_type, "fxo")) {
+			a_type = ANLOG_TYPE_LINE_FXO;
+		} else {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid type '%s'\n", c_type);
+			continue;
+		}
+
+		if (!c_dev) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing required attribute 'device'\n");
+			continue;
+		}
+
+		if (!sangoma_span_chan_fromif(c_dev, &span, &chan)) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid device name '%s'\n", c_dev);
+			continue;
+		}
+		
+		if (!(sock = wp_open(NULL, span, chan))) {
+			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Cannot open device '%s' (%s)\n", c_dev, strerror(errno));
+			continue;
+		}
+
+		for (param = switch_xml_child(channel, "param"); param; param = param->next) {
+            char *var = (char *) switch_xml_attr_soft(param, "name");
+            char *val = (char *) switch_xml_attr_soft(param, "value");
+			
+			if (!strcasecmp(var, "user")) {
+				user = var;
+			} else if (!strcasecmp(var, "domain")) {
+				domain = val;
+			} else if (!strcasecmp(var, "caller-id-name")) {
+				cid_name = val;
+			} else if (!strcasecmp(var, "caller-id-number")) {
+				cid_num = val;
+			}
+		}
+
+		assert((alc = malloc(sizeof(*alc))));
+		memset(alc, 0, sizeof(*alc));
+		if (user) {
+			alc->user = strdup(user);
+		}
+		if (domain) {
+			alc->domain = strdup(domain);
+		}
+		if (cid_name) {
+			alc->cid_name = strdup(cid_name);
+		}
+		if (cid_num) {
+			alc->cid_name = strdup(cid_num);
+		}
+		
+		alc->a_type = a_type;
+		alc->sock = sock;
+		alc->chan = chan;
+		alc->span = span;
+
+		if (a_type == ANALOG_TYPE_PHONE_FXS) {
+			FXS_ANALOG_CHANNELS[globals.fxs_index++] = alc;
+		} else {
+			FXO_ANALOG_CHANNELS[globals.fxo_index++] = alc;
+		}
+	}
+
+
+	if (globals.fxs_index) {
+		switch_thread_t *thread;
+		switch_threadattr_t *thd_attr = NULL;
+	
+		switch_threadattr_create(&thd_attr, module_pool);
+		switch_threadattr_detach_set(thd_attr, 1);
+		switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
+		switch_thread_create(&thread, thd_attr, fxs_thread_run, NULL, module_pool);
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Starting FXS Thread!\n");
+	}
+
+
 	pri_spans = switch_xml_child(cfg, "pri_spans");
 	for (span = switch_xml_child(pri_spans, "span"); span; span = span->next) {
 		char *id = (char *) switch_xml_attr(span, "id");

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/formats/mod_shout/Makefile
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/formats/mod_shout/Makefile	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/formats/mod_shout/Makefile	Mon Mar 26 14:45:37 2007
@@ -11,8 +11,9 @@
 SHOUTLA=$(SHOUT_DIR)/src/libshout.la
 
 LOCAL_CFLAGS=-I$(SHOUT_DIR)/include -I$(LAME_DIR)/include
-LOCAL_LIBADD=$(LAMELA) $(SHOUTLA)
+LOCAL_LIBADD=$(LAMELA) $(SHOUTLA) 
 
+LOCAL_LDFLAGS=`cat ../../../../libs/libshout-2.2.2/Makefile | grep SPEEX_LIBS | sed -e 's|^SPEEX_LIBS =||'`
 MP3SOURCES=common.c dct64_i386.c decode_ntom.c layer3.c tabinit.c interface.c
 MP3OBJS=common.o dct64_i386.o decode_ntom.o layer3.o tabinit.o interface.o
 LOCAL_OBJS=$(MP3OBJS)

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/languages/mod_perl/Makefile
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/languages/mod_perl/Makefile	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/languages/mod_perl/Makefile	Mon Mar 26 14:45:37 2007
@@ -3,18 +3,21 @@
 
 # and define these variables to impact your build
 
-LOCAL_CFLAGS=-DMULTIPLICITY $(shell $(PERL) -MExtUtils::Embed -e ccopts) -DEMBED_PERL
+PERL        = `which perl`
+PERL_LIBDIR =-L$(shell perl -MConfig -e 'print $$Config{archlib}')/CORE
+PERL_LIBS   =$(shell perl -MConfig -e 'print $$Config{libs}')
+
+LOCAL_CFLAGS=-w -DMULTIPLICITY $(shell $(PERL) -MExtUtils::Embed -e ccopts) -DEMBED_PERL
 LOCAL_LDFLAGS=$(shell $(PERL) -MExtUtils::Embed -e ldopts) $(shell $(PERL) -MConfig -e 'print $$Config{libs}')
 LOCAL_OBJS=perlxsi.o
 include ../../../../build/modmake.rules
 
-PERL        = $(shell which perl)
-PERL_LIBDIR =-L$(shell perl -MConfig -e 'print $$Config{archlib}')/CORE
-PERL_LIBS   =$(shell perl -MConfig -e 'print $$Config{libs}')
 
 SWIGCFILE=../../../switch_swig.c
 SWIGIFILE=../../../switch_swig.i
 
+
+
 local_all: fs_perl.$(DYNAMIC_LIB_EXTEN)
 
 .perlok:

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/languages/mod_spidermonkey_odbc/Makefile
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/languages/mod_spidermonkey_odbc/Makefile	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/languages/mod_spidermonkey_odbc/Makefile	Mon Mar 26 14:45:37 2007
@@ -25,4 +25,4 @@
 
 $(INST_ODBCLA): $(UNINST_ODBCLA)
 	cd $(ODBC_DIR) && $(MAKE) install
-
+	@$(TOUCH_TARGET)

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/languages/mod_spidermonkey_teletone/Makefile
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/languages/mod_spidermonkey_teletone/Makefile	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/languages/mod_spidermonkey_teletone/Makefile	Mon Mar 26 14:45:37 2007
@@ -1,5 +1,4 @@
 switch_srcdir=../../../..
 LOCAL_CFLAGS=-I$(switch_srcdir)/libs/libteletone/src
-LOCAL_LIBADD=$(switch_srcdir)/libs/libteletone/libteletone.la
 include ../mod_spidermonkey/sm.mak
 

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/loggers/mod_console/mod_console.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/loggers/mod_console/mod_console.c	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/loggers/mod_console/mod_console.c	Mon Mar 26 14:45:37 2007
@@ -36,19 +36,19 @@
 static int COLORIZE = 0;
 #ifdef WIN32
 static HANDLE hStdout;
-static WORD wOldColorAttrs;
-static CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
-static WORD COLORS[] =
-	{	FOREGROUND_RED | FOREGROUND_INTENSITY,
-		FOREGROUND_RED | FOREGROUND_INTENSITY,
-		FOREGROUND_RED | FOREGROUND_INTENSITY,
-		FOREGROUND_RED | FOREGROUND_INTENSITY,
-		FOREGROUND_BLUE | FOREGROUND_INTENSITY,
-		FOREGROUND_BLUE | FOREGROUND_INTENSITY,
-		FOREGROUND_GREEN | FOREGROUND_INTENSITY,
-		FOREGROUND_GREEN | FOREGROUND_INTENSITY,
-		FOREGROUND_GREEN | FOREGROUND_INTENSITY };
-#else
+static WORD wOldColorAttrs;
+static CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
+static WORD COLORS[] =
+	{	FOREGROUND_RED | FOREGROUND_INTENSITY,
+		FOREGROUND_RED | FOREGROUND_INTENSITY,
+		FOREGROUND_RED | FOREGROUND_INTENSITY,
+		FOREGROUND_RED | FOREGROUND_INTENSITY,
+		FOREGROUND_BLUE | FOREGROUND_INTENSITY,
+		FOREGROUND_BLUE | FOREGROUND_INTENSITY,
+		FOREGROUND_GREEN | FOREGROUND_INTENSITY,
+		FOREGROUND_GREEN | FOREGROUND_INTENSITY,
+		FOREGROUND_GREEN | FOREGROUND_INTENSITY };
+#else
 static const char *COLORS[] = 
 	{ SWITCH_SEQ_FRED, SWITCH_SEQ_FRED, SWITCH_SEQ_FRED, SWITCH_SEQ_FRED, SWITCH_SEQ_FMAGEN, SWITCH_SEQ_FCYAN, SWITCH_SEQ_FGREEN, SWITCH_SEQ_FYELLOW, "" };
 #endif
@@ -170,7 +170,7 @@
 			if (COLORIZE) {
 #ifdef WIN32
 				SetConsoleTextAttribute(hStdout, COLORS[node->level]);
-				WriteFile(hStdout, node->data, (DWORD)strlen(node->data), NULL, NULL);
+				WriteFile(hStdout, node->data, (DWORD)strlen(node->data), NULL, NULL);
 				SetConsoleTextAttribute(hStdout, wOldColorAttrs);
 #else
 				fprintf(handle, "%s%s%s", COLORS[node->level], node->data, SWITCH_SEQ_DEFAULT_COLOR);

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/mod/xml_int/mod_xml_rpc/Makefile
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/mod/xml_int/mod_xml_rpc/Makefile	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/mod/xml_int/mod_xml_rpc/Makefile	Mon Mar 26 14:45:37 2007
@@ -1,17 +1,18 @@
 BASE=../../../..
 XMLRPC_DIR=$(BASE)/libs/xmlrpc-c
 
-XMLRPCLAS  = $(XMLRPC_DIR)/src/libxmlrpc.la $(XMLRPC_DIR)/src/libxmlrpc_server.la 
+#XMLRPCLAS  = $(XMLRPC_DIR)/src/libxmlrpc.la 
+#dont ask...
+XMLRPCLAS  = $(XMLRPC_DIR)/src/*.o
+XMLRPCLAS += $(XMLRPC_DIR)/src/libxmlrpc_server.la 
 XMLRPCLAS += $(XMLRPC_DIR)/src/libxmlrpc_server_abyss.la $(XMLRPC_DIR)/lib/abyss/src/libxmlrpc_abyss.la
-XMLRPCLAS += $(XMLRPC_DIR)/lib/expat/xmlparse/libxmlrpc_xmlparse.la
+XMLRPCLAS += $(XMLRPC_DIR)/lib/expat/xmlparse/libxmlrpc_xmlparse.la $(XMLRPC_DIR)/lib/expat/xmltok/libxmlrpc_xmltok.la
 
-LOCAL_LDFLAGS = $(XMLRPCLAS)
+LOCAL_LIBADD =$(XMLRPCLAS)
 LOCAL_CFLAGS=-I$(XMLRPC_DIR)/include
 
 include $(BASE)/build/modmake.rules
 
-local_depend: $(XMLRPCLAS)
-
 $(XMLRPCLAS): $(XMLRPC_DIR) $(XMLRPC_DIR)/.update
 	cd $(XMLRPC_DIR) && $(MAKE)
 	$(TOUCH_TARGET)

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/switch_apr.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/switch_apr.c	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/switch_apr.c	Mon Mar 26 14:45:37 2007
@@ -608,57 +608,35 @@
 	return apr_queue_trypush(queue, data);
 }
 
-#if 0
-/* Utility functions */
-struct switch_vasprintf_data {
-    apr_vformatter_buff_t vbuff;
-	switch_size_t len;
-	switch_size_t block_size;
-	char *buf;
-};
-
-static int vasprintf_flush(apr_vformatter_buff_t *buff)
+SWITCH_DECLARE(int) switch_vasprintf(char **ret, const char *fmt, va_list ap)
 {
-    struct switch_vasprintf_data *data = (struct switch_vasprintf_data *)buff;
-
-	char *temp;
-	switch_size_t len = data->vbuff.curpos - data->buf;
+#ifdef HAVE_VASPRINTF
+    return vasprintf(ret, fmt, ap);
+#else
+	char *buf;
+	int len;
+	size_t buflen;
+	va_list ap2;
 
-	if ((temp = realloc(data->buf, data->len + data->block_size))) {
-		data->buf = temp;
-		data->vbuff.curpos = data->buf + len;
-		data->len = data->len + data->block_size;
-		data->vbuff.endpos = data->buf + data->len;
-		return 0;
-	}
-    	
-	return -1;
-}
+#ifdef _MSC_VER
+	ap2 = ap;
+#else
+	va_copy(ap2, ap);
 #endif
 
-SWITCH_DECLARE(int) switch_vasprintf(char **buf, const char *format, va_list ap)
-{
-#if 0
-	struct switch_vasprintf_data data;
-
-	data.block_size = 1024;
-	data.buf = malloc(data.block_size);
+	len = vsnprintf(NULL, 0, fmt, ap2);
 
-	if (data.buf == NULL) {
-		*buf = NULL;
-        return 0;
-    }
+	if (len > 0 && (buf = malloc((buflen = (size_t)(len + 1)))) != NULL) {
+		len = vsnprintf(buf, buflen, fmt, ap);
+		*ret = buf;
+	} else {
+		*ret = NULL;
+		len = -1;
+	}
 
-    data.vbuff.curpos = data.buf;
-    data.vbuff.endpos = data.buf + data.block_size;
+	va_end(ap2);
+	return len;
 
-    return apr_vformatter(vasprintf_flush, (apr_vformatter_buff_t *)&data, format, ap);
-#endif
-#ifdef HAVE_VASPRINTF
-    return vasprintf(buf, format, ap);
-#else
-    *buf = (char *) malloc(2048);
-    return vsnprintf(*buf, 2048, format, ap);
 #endif
 }
 

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/switch_channel.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/switch_channel.c	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/switch_channel.c	Mon Mar 26 14:45:37 2007
@@ -1036,10 +1036,10 @@
             switch_event_fire(&event);
         }
 
-        /* if we're in a bridge and the other channel is in a blocking read they will never realize we have answered so send 
+        /* if we're the child of another channel and the other channel is in a blocking read they will never realize we have answered so send 
            a SWITCH_SIG_BREAK to interrupt any blocking reads on that channel
         */
-        if ((uuid = switch_channel_get_variable(channel, SWITCH_BRIDGE_VARIABLE)) && (other_session = switch_core_session_locate(uuid))) {
+        if ((uuid = switch_channel_get_variable(channel, SWITCH_ORIGINATOR_VARIABLE)) && (other_session = switch_core_session_locate(uuid))) {
             switch_core_session_kill_channel(other_session, SWITCH_SIG_BREAK);
             switch_core_session_rwunlock(other_session);
         }
@@ -1075,7 +1075,7 @@
 	msg.message_id = SWITCH_MESSAGE_INDICATE_PROGRESS;
 	msg.from = channel->name;
 	status = switch_core_session_message_send(uuid, &msg);
-
+	
 	if (status == SWITCH_STATUS_SUCCESS) {
         status = switch_channel_perform_mark_pre_answered(channel, file, func, line);
 	}
@@ -1148,11 +1148,11 @@
         switch_channel_event_set_data(channel, event);
         switch_event_fire(&event);
     }
-
-    /* if we're in a bridge and the other channel is in a blocking read they will never realize we have answered so send 
+	
+    /* if we're the child of another channel and the other channel is in a blocking read they will never realize we have answered so send 
        a SWITCH_SIG_BREAK to interrupt any blocking reads on that channel
      */
-    if ((uuid = switch_channel_get_variable(channel, SWITCH_BRIDGE_VARIABLE)) && (other_session = switch_core_session_locate(uuid))) {
+    if ((uuid = switch_channel_get_variable(channel, SWITCH_ORIGINATOR_VARIABLE)) && (other_session = switch_core_session_locate(uuid))) {
         switch_core_session_kill_channel(other_session, SWITCH_SIG_BREAK);
         switch_core_session_rwunlock(other_session);
     }

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/switch_console.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/switch_console.c	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/switch_console.c	Mon Mar 26 14:45:37 2007
@@ -41,7 +41,7 @@
 	char *buf = handle->data;
 	char *end = handle->end;
 	int ret = 0;
-	char *data;
+	char *data = NULL;
 
 	if (handle->data_len >= handle->data_size) {
 		return SWITCH_STATUS_FALSE;

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/switch_ivr.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/switch_ivr.c	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/switch_ivr.c	Mon Mar 26 14:45:37 2007
@@ -2048,9 +2048,8 @@
 				switch_channel_answer(chan_a);
 				ans_a++;
 			} else if (!pre_b && switch_channel_test_flag(chan_b, CF_EARLY_MEDIA)) {
-				if (switch_channel_pre_answer(chan_a) == SWITCH_STATUS_SUCCESS) {
-					pre_b++;
-				}
+				switch_channel_pre_answer(chan_a);
+				pre_b++;
 			}
 			if (!pre_b) {
 				switch_yield(10000);

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/switch_resample.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/switch_resample.c	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/switch_resample.c	Mon Mar 26 14:45:37 2007
@@ -183,6 +183,27 @@
 	}
 }
 
+SWITCH_DECLARE(void) switch_generate_sln_silence(int16_t *data, uint32_t samples, uint32_t divisor)
+{
+	int16_t rnd, x;
+	uint32_t i;
+	int sum_rnd = 0;
+
+	assert(divisor);
+	
+	for(i = 0; i < samples; i++, sum_rnd = 0) {
+		for(x = 0; x < 7; x++) {
+			rnd = (int16_t) (rand() * sizeof(int16_t));
+			sum_rnd += rnd;
+		}
+		switch_normalize_to_16bit(sum_rnd);
+		*data = (int16_t)((int16_t)sum_rnd / (int)divisor);
+
+		data++;
+	}
+}
+
+
 SWITCH_DECLARE(void) switch_change_sln_volume(int16_t *data, uint32_t samples, int32_t vol)
 {
     double newrate = 0;

Modified: freeswitch/branches/mikej/sofiasip-upgrade/src/switch_rtp.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/src/switch_rtp.c	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/src/switch_rtp.c	Mon Mar 26 14:45:37 2007
@@ -105,6 +105,7 @@
 	unsigned char out_digit_packet[4];
 	unsigned int out_digit_sofar;
 	unsigned int out_digit_dur;
+	uint16_t in_digit_seq;
 	uint16_t out_digit_seq;
 	uint32_t out_digit_ssrc;
 	int32_t timestamp_dtmf;
@@ -910,31 +911,36 @@
 			int end = packet[1]&0x80;
 			int duration = (packet[2]<<8) + packet[3];
 			char key = switch_rfc2833_to_char(packet[0]);
+			uint16_t in_digit_seq = ntohs((uint16_t)rtp_session->recv_msg.header.seq);
 
 			/* SHEESH.... Curse you RFC2833 inventors!!!!*/
 			if ((time(NULL) - rtp_session->dtmf_data.last_digit_time) > 2) {
 				rtp_session->dtmf_data.last_digit = 0;
 				rtp_session->dtmf_data.dc = 0;
 			}
+			if (in_digit_seq > rtp_session->dtmf_data.in_digit_seq) {
+				rtp_session->dtmf_data.in_digit_seq = in_digit_seq;
+			
+				if (duration && end) {
+					if (key != rtp_session->dtmf_data.last_digit) {
+						char digit_str[] = {key, 0};
+						time(&rtp_session->dtmf_data.last_digit_time);
+						switch_rtp_queue_dtmf(rtp_session, digit_str);
+					}
+					if (++rtp_session->dtmf_data.dc >= 3) {
+						rtp_session->dtmf_data.last_digit = 0;
+						rtp_session->dtmf_data.dc = 0;
+					}
 
-			if (duration && end) {
-				if (key != rtp_session->dtmf_data.last_digit) {
-					char digit_str[] = {key, 0};
-					time(&rtp_session->dtmf_data.last_digit_time);
-					switch_rtp_queue_dtmf(rtp_session, digit_str);
-				}
-				if (++rtp_session->dtmf_data.dc >= 3) {
+					rtp_session->dtmf_data.last_digit = key;
+				} else {
 					rtp_session->dtmf_data.last_digit = 0;
 					rtp_session->dtmf_data.dc = 0;
 				}
-
-				rtp_session->dtmf_data.last_digit = key;
-			} else {
-				rtp_session->dtmf_data.last_digit = 0;
-				rtp_session->dtmf_data.dc = 0;
 			}
 
 			continue;
+
 		}
 
 		break;

Modified: freeswitch/branches/mikej/sofiasip-upgrade/w32/Library/FreeSwitchCore.vcproj
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/w32/Library/FreeSwitchCore.vcproj	(original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/w32/Library/FreeSwitchCore.vcproj	Mon Mar 26 14:45:37 2007
@@ -43,7 +43,7 @@
 			<Tool
 				Name="VCCLCompilerTool"
 				Optimization="0"
-				AdditionalIncludeDirectories="..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libresample\include;..\..\libs\libteletone\src"
+				AdditionalIncludeDirectories="..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libresample\include;..\..\libs\libteletone\src;..\..\libs\win32\sqlite;..\..\libs\pcre"
 				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS;PCRE_STATIC"
 				MinimalRebuild="true"
 				BasicRuntimeChecks="3"
@@ -136,7 +136,7 @@
 			/>
 			<Tool
 				Name="VCCLCompilerTool"
-				AdditionalIncludeDirectories="..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libresample\include;..\..\libs\libteletone\src"
+				AdditionalIncludeDirectories="..\..\src\include;..\..\libs\include;..\..\libs\srtp\include;..\..\libs\srtp\crypto\include;..\..\libs\libresample\include;..\..\libs\libteletone\src;..\..\libs\win32\sqlite;..\..\libs\pcre"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;FREESWITCHCORE_EXPORTS;CRASH_PROT;PCRE_STATIC"
 				RuntimeLibrary="2"
 				UsePrecompiledHeader="2"
@@ -240,10 +240,6 @@
 				>
 			</File>
 			<File
-				RelativePath="..\..\src\switch_config.c"
-				>
-			</File>
-			<File
 				RelativePath="..\..\src\switch_console.c"
 				>
 			</File>
@@ -322,10 +318,6 @@
 				>
 			</File>
 			<File
-				RelativePath="..\..\src\include\switch_config.h"
-				>
-			</File>
-			<File
 				RelativePath="..\..\src\include\switch_console.h"
 				>
 			</File>



More information about the Freeswitch-svn mailing list