Freeswitch-svn
Threads by month
- ----- 2026 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
March 2007
- 6 participants
- 392 discussions
[commit] r4769 - in freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip: . libsofia-sip-ua/nta
by Freeswitch SVN 26 Mar '07
by Freeswitch SVN 26 Mar '07
26 Mar '07
Author: mikej
Date: Mon Mar 26 17:16:33 2007
New Revision: 4769
Modified:
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/RELEASE
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nta/nta.c
Log:
update to sofia darcs tree
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/RELEASE
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/RELEASE (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/RELEASE Mon Mar 26 17:16:33 2007
@@ -25,6 +25,8 @@
libsofia-sip-ua:
- **template**: Added foobar() function (sofia-sip/foobar.h).
+- Added tag NUTAG_AUTH_CACHE() determining when to include credentials in
+ the request
- Added kqueue and /dev/poll interfaces (su_devpoll_port_create(),
su_devpoll_clone_start(), su_kqueue_port_create(), su_kqueue_clone_start()
in <sofia-sip/su_wait.h>)
@@ -58,7 +60,7 @@
- **template**: First Surname (patch to nua/soa/msg)
- Martti Mela (kqueue interface to Max OS X and FreeBSD)
-- Pekka Pessi (/dev/poll interface to Solaris)
+- Pekka Pessi (/dev/poll interface to Solaris, kqueue)
- Michael Jerris (Solaris patches)
- Colin Whittaker (sresolv patch)
@@ -88,8 +90,16 @@
/>
- **template**: #9499652 sf.net bug item title
+- Fixed assertion failure because BYE destroyed a session twice.
+ Problem reported by Michael Jerris.
+- Fixed crash caused by a 0-length UDP datagram.
+ Problem reported by Michael Jerris.
+- Fixed the 305 response handling by nua stack.
+ Bug #1676445 reported by Fabio Margarido.
+- Fixed authentication-related bugs #1685245 and #1570746.
+ #1685245 reported by Mikhail Zabaluev.
- Fixed problems resuming DNS after server or link downtime.
- Problem reported by Colin Whittaker.
+ Bug #1631198 reported and initial patch submitted by Colin Whittaker.
- Fixed NUTAG_APPL_METHOD() implementation for UPDATE and PRACK as documented
- Fixed crashes in nua state engines:
- when nua_invite() was called second time before receiving
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nta/nta.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nta/nta.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nta/nta.c Mon Mar 26 17:16:33 2007
@@ -8006,10 +8006,11 @@
{
nta_agent_t *sa = orq->orq_agent;
short orq_status = orq->orq_status;
+ int internal = sip == NULL || (sip->sip_flags & NTA_INTERNAL_MSG) == 0;
if (status < 100) status = 100;
- if (sip && orq->orq_delay == UINT_MAX)
+ if (!internal && orq->orq_delay == UINT_MAX)
outgoing_estimate_delay(orq, sip);
if (orq->orq_cc)
@@ -8067,7 +8068,7 @@
}
else {
/* Final response */
- if (status >= 300)
+ if (status >= 300 && !internal)
outgoing_ack(orq, msg, sip);
if (!orq->orq_completed) {
1
0
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>
1
0
[commit] r4767 - in freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua: iptsec msg nta nua nua/sofia-sip sip/tests su/sofia-sip tport url
by Freeswitch SVN 26 Mar '07
by Freeswitch SVN 26 Mar '07
26 Mar '07
Author: mikej
Date: Mon Mar 26 14:05:55 2007
New Revision: 4767
Added:
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/sip/tests/10052.txt
Modified:
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client.c
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/msg/msg_parser_util.c
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nta/test_nta.c
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/Doxyfile
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_dialog.h
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.c
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.h
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.c
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_tag.c
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua_tag.h
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_100rel.c
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_call_reject.c
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_init.c
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_nua.c
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_nua.h
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_nua_params.c
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_register.c
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_wait.h
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_udp.c
freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/url/torture_url.c
Log:
upadte to sofia darcs
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/iptsec/auth_client.c Mon Mar 26 14:05:55 2007
@@ -178,9 +178,9 @@
return -1;
if (!ca->ca_credential_class)
- stale = 1, ca->ca_credential_class = credential_class;
+ stale = 2, ca->ca_credential_class = credential_class;
- return stale ? 2 : 1;
+ return stale > 1 ? 2 : 1;
}
/** Store authentication info to authenticators.
@@ -748,6 +748,10 @@
};
/** Store a digest authorization challenge.
+ *
+ * @retval 2 if credentials need to be (re)sent
+ * @retval 1 if challenge was updated
+ * @retval -1 upon an error
*/
static int auc_digest_challenge(auth_client_t *ca, msg_auth_t const *ch)
{
@@ -765,7 +769,7 @@
if (ac->ac_qop && !ac->ac_auth && !ac->ac_auth_int)
goto error;
- stale = ac->ac_stale || str0cmp(ac->ac_nonce, cda->cda_ac->ac_nonce);
+ stale = ac->ac_stale || cda->cda_ac->ac_nonce == NULL;
if (ac->ac_qop && (cda->cda_cnonce == NULL || ac->ac_stale)) {
su_guid_t guid[1];
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/msg/msg_parser_util.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/msg/msg_parser_util.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/msg/msg_parser_util.c Mon Mar 26 14:05:55 2007
@@ -1974,6 +1974,8 @@
return NULL;
msg = msg_create(mc, flags);
+ if (msg == NULL)
+ return NULL;
su_home_preload(msg_home(msg), 1, len + 1024);
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nta/test_nta.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nta/test_nta.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nta/test_nta.c Mon Mar 26 14:05:55 2007
@@ -663,6 +663,8 @@
static int test_bad_messages(agent_t *ag)
{
+ BEGIN();
+
#if HAVE_DIRENT_H
DIR *dir;
struct dirent *d;
@@ -687,13 +689,10 @@
if (dir == NULL) {
fprintf(stderr, "test_nta: cannot find sip torture messages\n");
fprintf(stderr, "test_nta: tried %s\n", name);
- return 0;
}
offset = strlen(name);
- BEGIN();
-
TEST_1(ag->ag_default_leg = nta_leg_tcreate(ag->ag_agent,
leg_callback_500,
ag,
@@ -720,7 +719,7 @@
sprintf(via, "v: SIP/2.0/UDP is.invalid:%u\r\n", ntohs(su->su_port));
vlen = strlen(via);
- for (d = readdir(dir); d; d = readdir(dir)) {
+ for (d = dir ? readdir(dir) : NULL; d; d = readdir(dir)) {
size_t len = strlen(d->d_name);
FILE *f;
int blen, n;
@@ -752,6 +751,8 @@
su_root_step(ag->ag_root, 1);
}
+ TEST_SIZE(su_sendto(s, "", 0, 0, ai->ai_addr, ai->ai_addrlen), 0);
+
su_close(s);
for (i = 0; i < 20; i++)
@@ -759,12 +760,12 @@
nta_leg_destroy(ag->ag_default_leg), ag->ag_default_leg = NULL;
- closedir(dir);
+ if (dir)
+ closedir(dir);
- END();
-#else
- return 0;
#endif /* HAVE_DIRENT_H */
+
+ END();
}
static unsigned char const code[] =
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/Doxyfile
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/Doxyfile (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/Doxyfile Mon Mar 26 14:05:55 2007
@@ -30,6 +30,9 @@
ALIASES += NUA_EVENT="@var nua_event_e::"
ALIASES += END_NUA_EVENT="@par "
+ALIASES += \
+ NUA_HPARAM_CALLS="nua_invite(), nua_respond(), nua_ack(), nua_prack(), nua_update(), nua_info(), nua_bye(), nua_options(), nua_message(), nua_register(), nua_publish(), nua_refer(),nua_subscribe(), nua_notify(), nua_refer(), nua_notifier()"
+
VERBATIM_HEADERS = NO
@INCLUDE = ../sip/sip.doxyaliases
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_dialog.h
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_dialog.h (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_dialog.h Mon Mar 26 14:05:55 2007
@@ -301,7 +301,8 @@
unsigned cr_contactize:1; /**< Request needs Contact */
/* Current state */
- unsigned cr_challenged:1; /**< Request was challenged, pending auth */
+ unsigned cr_challenged:1; /**< Request was challenged */
+ unsigned cr_wait_for_cred:1; /**< Request is pending authentication */
unsigned cr_restarting:1; /**< Request is being restarted */
unsigned cr_reporting:1; /**< Reporting in progress */
unsigned cr_terminating:1; /**< Request terminates the usage */
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.c Mon Mar 26 14:05:55 2007
@@ -393,6 +393,7 @@
* NUTAG_ALLOW(), SIPTAG_ALLOW(), and SIPTAG_ALLOW_STR() \n
* NUTAG_ALLOW_EVENTS(), SIPTAG_ALLOW_EVENTS(), and
* SIPTAG_ALLOW_EVENTS_STR() \n
+ * NUTAG_AUTH_CACHE() \n
* NUTAG_AUTOACK() \n
* NUTAG_AUTOALERT() \n
* NUTAG_AUTOANSWER() \n
@@ -778,6 +779,11 @@
else if (tag == nutag_path_enable) {
NHP_SET(nhp, path_enable, value != 0);
}
+ /* NUTAG_AUTH_CACHE(auth_cache) */
+ else if (tag == nutag_auth_cache) {
+ if (value >= 0 && value < (tag_value_t)_nua_auth_cache_invalid)
+ NHP_SET(nhp, auth_cache, (int)value);
+ }
/* NUTAG_REFER_EXPIRES(refer_expires) */
else if (tag == nutag_refer_expires) {
NHP_SET(nhp, refer_expires, value);
@@ -1363,6 +1369,7 @@
* @param sip NULL
* @param tags
* NUTAG_APPL_METHOD() \n
+ * NUTAG_AUTH_CACHE() \n
* NUTAG_AUTOACK() \n
* NUTAG_AUTOALERT() \n
* NUTAG_AUTOANSWER() \n
@@ -1546,6 +1553,7 @@
TIF(NUTAG_MEDIA_FEATURES, media_features),
TIF(NUTAG_SERVICE_ROUTE_ENABLE, service_route_enable),
TIF(NUTAG_PATH_ENABLE, path_enable),
+ TIF(NUTAG_AUTH_CACHE, auth_cache),
TIF(NUTAG_REFER_EXPIRES, refer_expires),
TIF(NUTAG_REFER_WITH_ID, refer_with_id),
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.h
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.h (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_params.h Mon Mar 26 14:05:55 2007
@@ -95,9 +95,11 @@
unsigned nhp_service_route_enable:1;
/** Enable Path */
unsigned nhp_path_enable:1;
+ /** Authentication cache policy */
+ unsigned nhp_auth_cache:1;
+
/** Always include id with Event: refer */
unsigned nhp_refer_with_id:1;
-
unsigned:0;
/* Default lifetime for implicit subscriptions created by REFER */
@@ -157,6 +159,7 @@
unsigned nhb_media_features:1;
unsigned nhb_service_route_enable:1;
unsigned nhb_path_enable:1;
+ unsigned nhb_auth_cache:1;
unsigned nhb_refer_with_id:1;
unsigned nhb_refer_expires:1;
unsigned nhb_substate:1;
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_session.c Mon Mar 26 14:05:55 2007
@@ -1269,7 +1269,7 @@
/* No INVITE template */
cr == NULL ||
/* INVITE is in progress or being authenticated */
- cr->cr_orq || cr->cr_challenged)
+ cr->cr_orq || cr->cr_wait_for_cred)
return;
/* UPDATE in progress or being authenticated */
@@ -3533,10 +3533,13 @@
nua_callstate_terminated);
if (ss && !ss->ss_reporting) {
- if (nua_client_is_queued(du->du_cr) && du->du_cr->cr_status < 200)
- /* No final response to INVITE received yet */;
- else
+ if (du->du_cr == NULL ||
+ !nua_client_is_queued(du->du_cr) ||
+ du->du_cr->cr_status >= 200) {
+ /* INVITE is completed, we can zap the session... */;
+ cr->cr_usage = NULL;
nua_session_usage_destroy(nh, ss);
+ }
}
}
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_stack.c Mon Mar 26 14:05:55 2007
@@ -90,8 +90,6 @@
static int nh_authorize(nua_handle_t *nh,
tag_type_t tag, tag_value_t value, ...);
-static int nh_challenge(nua_handle_t *nh, sip_t const *sip);
-
static void nua_stack_timer(nua_t *nua, su_timer_t *t, su_timer_arg_t *a);
/* ---------------------------------------------------------------------- */
@@ -939,33 +937,6 @@
return retval;
}
-/**@internal
- * Collect challenges from response.
- *
- * @return Number of updated challenges, 0 if no updates found.
- * @retval -1 upon error.
- */
-static
-int nh_challenge(nua_handle_t *nh, sip_t const *sip)
-{
- int server = 0, proxy = 0;
-
- if (sip->sip_www_authenticate)
- server = auc_challenge(&nh->nh_auth, nh->nh_home,
- sip->sip_www_authenticate,
- sip_authorization_class);
-
- if (sip->sip_proxy_authenticate)
- proxy = auc_challenge(&nh->nh_auth, nh->nh_home,
- sip->sip_proxy_authenticate,
- sip_proxy_authorization_class);
-
- if (server < 0 || proxy < 0)
- return -1;
-
- return server + proxy;
-}
-
static inline
int can_redirect(sip_contact_t const *m, sip_method_t method)
{
@@ -1023,7 +994,7 @@
if (status > 0) {
nua_client_request_t *cr = nh->nh_ds->ds_cr;
- if (cr && cr->cr_challenged) {
+ if (cr && cr->cr_wait_for_cred) {
nua_client_restart_request(cr, cr->cr_terminating, tags);
}
else {
@@ -2043,6 +2014,8 @@
/** Restart the request message.
*
+ * A restarted request has not completed successfully.
+ *
* @retval 0 if request is pending
* @retval >=1 if error event has been sent
*/
@@ -2067,6 +2040,8 @@
/** Resend the request message.
*
+ * A resent request has completed once successfully - restarted has not.
+ *
* @retval 0 if request is pending
* @retval >=1 if error event has been sent
*/
@@ -2075,6 +2050,7 @@
{
if (cr) {
cr->cr_retry_count = 0;
+ cr->cr_challenged = 0;
if (nua_client_is_queued(cr)) {
if (terminating)
@@ -2223,7 +2199,7 @@
return -1;
}
- cr->cr_challenged = 0;
+ cr->cr_wait_for_cred = 0;
if (cr->cr_methods->crm_send)
return cr->cr_methods->crm_send(cr, msg, sip, NULL);
@@ -2264,8 +2240,13 @@
{
nua_handle_t *nh = cr->cr_owner;
- if (nh->nh_auth && auc_authorize(&nh->nh_auth, msg, sip) < 0)
- return nua_client_return(cr, 900, "Cannot add credentials", msg);
+ if (nh->nh_auth) {
+ if (cr->cr_challenged ||
+ NH_PGET(nh, auth_cache) == nua_auth_cache_dialog) {
+ if (auc_authorize(&nh->nh_auth, msg, sip) < 0)
+ return nua_client_return(cr, 900, "Cannot add credentials", msg);
+ }
+ }
cr->cr_seq = sip->sip_cseq->cs_seq; /* Save last sequence number */
@@ -2429,14 +2410,31 @@
/* XXX - handle Retry-After */
- if (status == 302) {
+ if (status == 302 || status == 305) {
+ sip_route_t r[1];
+
if (!can_redirect(sip->sip_contact, cr->cr_method))
return 0;
- if (nua_client_set_target(cr, sip->sip_contact->m_url) >= 0)
- return nua_client_restart(cr, 100, "Redirected");
+ switch (status) {
+ case 302:
+ if (nua_client_set_target(cr, sip->sip_contact->m_url) >= 0)
+ return nua_client_restart(cr, 100, "Redirected");
+ break;
+
+ case 305:
+ sip_route_init(r);
+ *r->r_url = *sip->sip_contact->m_url;
+ if (sip_add_dup(cr->cr_msg, cr->cr_sip, (sip_header_t *)r) >= 0)
+ return nua_client_restart(cr, 100, "Redirected via a proxy");
+ break;
+
+ default:
+ break;
+ }
}
+
if (status == 423) {
unsigned my_expires = 0;
@@ -2456,20 +2454,40 @@
}
}
- if (((status == 401 && sip->sip_www_authenticate) ||
- (status == 407 && sip->sip_proxy_authenticate)) &&
- nh_challenge(nh, sip) > 0) {
+ if ((status == 401 && sip->sip_www_authenticate) ||
+ (status == 407 && sip->sip_proxy_authenticate)) {
+ int server = 0, proxy = 0;
nta_outgoing_t *orq;
- if (auc_has_authorization(&nh->nh_auth))
- return nua_client_restart(cr, 100, "Request Authorized by Cache");
- orq = cr->cr_orq, cr->cr_orq = NULL;
- cr->cr_challenged = 1;
- cr->cr_retry_count++;
- nua_client_report(cr, status, phrase, NULL, orq, NULL);
- nta_outgoing_destroy(orq);
+ if (sip->sip_www_authenticate)
+ server = auc_challenge(&nh->nh_auth, nh->nh_home,
+ sip->sip_www_authenticate,
+ sip_authorization_class);
+
+ if (sip->sip_proxy_authenticate)
+ proxy = auc_challenge(&nh->nh_auth, nh->nh_home,
+ sip->sip_proxy_authenticate,
+ sip_proxy_authorization_class);
+
+ if (server >= 0 && proxy >= 0) {
+ int invalid = cr->cr_challenged && server + proxy == 0;
+
+ cr->cr_challenged = 1;
+
+ if (invalid)
+ /* Bad username/password */
+ auc_clear_credentials(&nh->nh_auth, NULL, NULL);
+ else if (auc_has_authorization(&nh->nh_auth))
+ return nua_client_restart(cr, 100, "Request Authorized by Cache");
+
+ orq = cr->cr_orq, cr->cr_orq = NULL;
+ cr->cr_wait_for_cred = 1;
+ cr->cr_retry_count++;
+ nua_client_report(cr, status, phrase, NULL, orq, NULL);
+ nta_outgoing_destroy(orq);
- return 1;
+ return 1;
+ }
}
return 0; /* This was a final response that cannot be restarted. */
@@ -2591,8 +2609,18 @@
cr->cr_reporting = 1, nh->nh_ds->ds_reporting = 1;
- if (status >= 200 && status < 300)
- nh_challenge(nh, sip); /* Collect nextnonce */
+ if (nh->nh_auth && sip &&
+ (sip->sip_authentication_info || sip->sip_proxy_authentication_info)) {
+ /* Collect nextnonce */
+ if (sip->sip_authentication_info)
+ auc_info(&nh->nh_auth,
+ sip->sip_authentication_info,
+ sip_authorization_class);
+ if (sip->sip_proxy_authentication_info)
+ auc_info(&nh->nh_auth,
+ sip->sip_proxy_authentication_info,
+ sip_proxy_authorization_class);
+ }
if ((method != sip_method_invite && status >= 200) || status >= 300)
nua_client_request_remove(cr);
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_tag.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_tag.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/nua_tag.c Mon Mar 26 14:05:55 2007
@@ -144,6 +144,7 @@
tag_typedef_t nutag_path_enable = BOOLTAG_TYPEDEF(path_enable);
tag_typedef_t nutag_service_route_enable =
BOOLTAG_TYPEDEF(service_route_enable);
+tag_typedef_t nutag_auth_cache = INTTAG_TYPEDEF(auth_cache);
tag_typedef_t nutag_detect_network_updates = UINTTAG_TYPEDEF(detect_network_updates);
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua_tag.h
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua_tag.h (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/sofia-sip/nua_tag.h Mon Mar 26 14:05:55 2007
@@ -451,8 +451,8 @@
*
* @par Used with
* nua_invite() \n
- * nua_set_params() \n
- * nua_get_params()
+ * nua_set_params(), nua_set_hparams(),
+ * nua_get_params(), nua_get_hparams()
*
* @par Parameter type
* int (enum nua_af)
@@ -1247,6 +1247,38 @@
#define NUTAG_AUTH_REF(x) nutag_auth_ref, tag_str_vr(&(x))
SOFIAPUBVAR tag_typedef_t nutag_auth_ref;
+/** Authentication caching policy
+ *
+ * @par Used with
+ * nua_set_params(), nua_set_hparams() \n
+ * nua_get_params(), nua_get_hparams() \n
+ * @NUA_HPARAM_CALLS
+ *
+ * @par Parameter type
+ * enum nua_auth_cache
+ *
+ * @par Values
+ * - nua_auth_cache_dialog (0) - include credentials within dialog
+ * - nua_auth_cache_challenged (1) - include credentials only when
+ * challenged
+ *
+ * Corresponding tag taking reference parameter is NUTAG_AUTH_CACHE_REF()
+ */
+#define NUTAG_AUTH_CACHE(x) nutag_auth_cache, tag_int_v(x)
+SOFIAPUBVAR tag_typedef_t nutag_auth_cache;
+
+#define NUTAG_AUTH_CACHE_REF(x) nutag_auth_cache_ref, tag_int_vr(&(x))
+SOFIAPUBVAR tag_typedef_t nutag_auth_cache_ref;
+
+/** Authentication caching policy */
+enum nua_auth_cache {
+ /** Include credentials within dialog (default) */
+ nua_auth_cache_dialog = 0,
+ /** Include credentials only when challenged */
+ nua_auth_cache_challenged = 1,
+ _nua_auth_cache_invalid
+};
+
/** Keepalive interval in milliseconds.
*
* This setting applies to OPTIONS/STUN keepalives. See documentation
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_100rel.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_100rel.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_100rel.c Mon Mar 26 14:05:55 2007
@@ -404,17 +404,21 @@
TEST_1(is_answer_recv(e->data->e_tags));
TEST_1(!is_offer_sent(e->data->e_tags));
- if (md5 && !md5sess) {
- TEST_1(e = e->next); TEST_E(e->data->e_event, nua_r_prack);
- TEST(e->data->e_status, 407);
+ TEST_1(e = e->next); TEST_E(e->data->e_event, nua_r_prack);
+
+ if (e->data->e_status != 200 && md5 && !md5sess) {
+ if (e->data->e_status != 100) {
+ TEST(e->data->e_status, 407);
+ }
TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_state);
TEST(callstate(e->data->e_tags), nua_callstate_proceeding);
TEST_1(!is_answer_recv(e->data->e_tags));
TEST_1(!is_offer_sent(e->data->e_tags));
+
+ TEST_1(e = e->next); TEST_E(e->data->e_event, nua_r_prack);
}
- TEST_1(e = e->next); TEST_E(e->data->e_event, nua_r_prack);
TEST(e->data->e_status, 200);
TEST_1(e = e->next); TEST_E(e->data->e_event, nua_r_invite);
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_call_reject.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_call_reject.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_call_reject.c Mon Mar 26 14:05:55 2007
@@ -261,7 +261,7 @@
/* ------------------------------------------------------------------------ */
-int reject_302(CONDITION_PARAMS);
+int reject_302(CONDITION_PARAMS), reject_305(CONDITION_PARAMS);
int reject_604(CONDITION_PARAMS);
/*
@@ -281,6 +281,7 @@
|<---604 Nowhere-----|
|--------ACK-------->|
*/
+
int reject_302(CONDITION_PARAMS)
{
if (!(check_handle(ep, call, nh, SIP_500_INTERNAL_SERVER_ERROR)))
@@ -301,6 +302,33 @@
case nua_callstate_terminated:
if (call)
nua_handle_destroy(call->nh), call->nh = NULL;
+ ep->next_condition = reject_305;
+ return 0;
+ default:
+ return 0;
+ }
+}
+
+int reject_305(CONDITION_PARAMS)
+{
+ if (!(check_handle(ep, call, nh, SIP_500_INTERNAL_SERVER_ERROR)))
+ return 0;
+
+ save_event_in_list(ctx, event, ep, call);
+
+ switch (callstate(tags)) {
+ case nua_callstate_received:
+ {
+ sip_contact_t m[1];
+ *m = *ep->contact;
+ m->m_url->url_user = "305";
+ m->m_url->url_params = "lr=1";
+ RESPOND(ep, call, nh, SIP_305_USE_PROXY, SIPTAG_CONTACT(m), TAG_END());
+ }
+ return 0;
+ case nua_callstate_terminated:
+ if (call)
+ nua_handle_destroy(call->nh), call->nh = NULL;
ep->next_condition = reject_604;
return 0;
default:
@@ -308,6 +336,7 @@
}
}
+
int reject_604(CONDITION_PARAMS)
{
if (!(check_handle(ep, call, nh, SIP_500_INTERNAL_SERVER_ERROR)))
@@ -338,6 +367,7 @@
struct endpoint *a = &ctx->a, *b = &ctx->b;
struct call *a_call = a->call, *b_call = b->call;
struct event *e;
+ sip_t const *sip;
/* Make call reject-3 */
if (print_headings)
@@ -388,6 +418,12 @@
TEST(callstate(e->data->e_tags), nua_callstate_calling); /* CALLING */
TEST_1(is_offer_sent(e->data->e_tags));
TEST_1(e = e->next); TEST_E(e->data->e_event, nua_r_invite);
+ TEST(e->data->e_status, 100);
+ TEST(sip_object(e->data->e_msg)->sip_status->st_status, 305);
+ TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_state);
+ TEST(callstate(e->data->e_tags), nua_callstate_calling); /* CALLING */
+ TEST_1(is_offer_sent(e->data->e_tags));
+ TEST_1(e = e->next); TEST_E(e->data->e_event, nua_r_invite);
TEST(e->data->e_status, 180);
TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_state);
TEST(callstate(e->data->e_tags), nua_callstate_proceeding); /* PROCEEDING */
@@ -415,6 +451,18 @@
TEST(callstate(e->data->e_tags), nua_callstate_received); /* RECEIVED */
TEST_1(is_offer_recv(e->data->e_tags));
TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_state);
+ TEST(callstate(e->data->e_tags), nua_callstate_terminated); /* TERMINATED */
+ TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_invite);
+ TEST(e->data->e_status, 100);
+ TEST_1(sip = sip_object(e->data->e_msg));
+ TEST_1(sip->sip_request);
+ TEST_S(sip->sip_request->rq_url->url_user, "302");
+ TEST_1(sip->sip_route);
+ TEST_S(sip->sip_route->r_url->url_user, "305");
+ TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_state);
+ TEST(callstate(e->data->e_tags), nua_callstate_received); /* RECEIVED */
+ TEST_1(is_offer_recv(e->data->e_tags));
+ TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_state);
TEST(callstate(e->data->e_tags), nua_callstate_early); /* EARLY */
TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_state);
TEST(callstate(e->data->e_tags), nua_callstate_terminated); /* TERMINATED */
@@ -724,7 +772,7 @@
sip_t const *sip;
if (print_headings)
- printf("TEST NUA-4.6: invalid challenge \n");
+ printf("TEST NUA-4.6.1: invalid challenge \n");
a_call->sdp = "m=audio 5008 RTP/AVP 8";
b_call->sdp = "m=audio 5010 RTP/AVP 0 8";
@@ -773,7 +821,160 @@
nua_handle_destroy(b_call->nh), b_call->nh = NULL;
if (print_headings)
- printf("TEST NUA-4.6: PASSED\n");
+ printf("TEST NUA-4.6.1: PASSED\n");
+
+ END();
+}
+
+
+/* ------------------------------------------------------------------------ */
+
+/* Reject call with 401, twice */
+
+/*
+ A reject-401-bad B
+ | |
+ |-------INVITE------>|
+ |<----100 Trying-----|
+ |<--------401--------|
+ |---------ACK------->|
+ | |
+ |-------INVITE------>|
+ |<----100 Trying-----|
+ |<--------401--------|
+ |---------ACK------->|
+*/
+
+int reject_401_bad(CONDITION_PARAMS)
+{
+ if (!(check_handle(ep, call, nh, SIP_500_INTERNAL_SERVER_ERROR)))
+ return 0;
+
+ save_event_in_list(ctx, event, ep, call);
+
+ switch (callstate(tags)) {
+ case nua_callstate_received:
+ RESPOND(ep, call, nh, SIP_401_UNAUTHORIZED,
+ /* Send a challenge that we do not grok */
+ SIPTAG_WWW_AUTHENTICATE_STR("Digest realm=\"No hope\", "
+ "nonce=\"goO541ftNrw327aWpu2\", "
+ "algorithm=MD5, "
+ "qop=\"auth\""),
+ TAG_END());
+ return 0;
+ case nua_callstate_terminated:
+ if (call)
+ nua_handle_destroy(call->nh), call->nh = NULL;
+ if (ep->flags.bit0) /* Terminate 2 calls */
+ return 1;
+ ep->flags.bit0 = 1;
+ return 0;
+ default:
+ return 0;
+ }
+}
+
+int authenticate_once(CONDITION_PARAMS)
+{
+ if (!(check_handle(ep, call, nh, SIP_500_INTERNAL_SERVER_ERROR)))
+ return 0;
+
+ save_event_in_list(ctx, event, ep, call);
+
+ if (event == nua_r_invite && status == 401) {
+ if (ep->flags.bit0) {
+ nua_handle_destroy(nh); if (call) call->nh = NULL;
+ return 1;
+ }
+ ep->flags.bit0 = 1;
+ AUTHENTICATE(ep, call, nh, NUTAG_AUTH("Digest:\"No hope\":jaska:secret"),
+ SIPTAG_SUBJECT_STR("Got 401"),
+ TAG_END());
+ return 0;
+ }
+
+ switch (callstate(tags)) {
+ case nua_callstate_terminated:
+ if (call)
+ nua_handle_destroy(call->nh), call->nh = NULL;
+ return 1;
+ default:
+ return 0;
+ }
+}
+
+
+int test_reject_401_bad(struct context *ctx)
+{
+ BEGIN();
+
+ struct endpoint *a = &ctx->a, *b = &ctx->b;
+ struct call *a_call = a->call, *b_call = b->call;
+ struct event const *e;
+ sip_t const *sip;
+
+ if (print_headings)
+ printf("TEST NUA-4.6.2: bad username/password\n");
+
+ a_call->sdp = "m=audio 5008 RTP/AVP 8";
+
+ TEST_1(a_call->nh = nua_handle(a->nua, a_call, SIPTAG_TO(b->to), TAG_END()));
+ INVITE(a, a_call, a_call->nh,
+ TAG_IF(!ctx->proxy_tests, NUTAG_URL(b->contact->m_url)),
+ SIPTAG_SUBJECT_STR("reject-401-bad"),
+ SOATAG_USER_SDP_STR(a_call->sdp),
+ TAG_END());
+
+ run_ab_until(ctx, -1, authenticate_once, -1, reject_401_bad);
+
+ /*
+ Client transitions
+ INIT -(C1)-> CALLING -(C6a)-> TERMINATED/INIT
+ */
+ TEST_1(e = a->events->head); TEST_E(e->data->e_event, nua_i_state);
+ TEST(callstate(e->data->e_tags), nua_callstate_calling); /* CALLING */
+ TEST_1(is_offer_sent(e->data->e_tags));
+ TEST_1(e = e->next); TEST_E(e->data->e_event, nua_r_invite);
+ TEST(sip_object(e->data->e_msg)->sip_status->st_status, 401);
+ TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_state);
+ TEST(callstate(e->data->e_tags), nua_callstate_calling); /* CALLING */
+ TEST_1(is_offer_sent(e->data->e_tags));
+ TEST_1(e = e->next); TEST_E(e->data->e_event, nua_r_invite);
+ TEST(sip_object(e->data->e_msg)->sip_status->st_status, 401);
+ TEST_1(!e->next);
+
+ free_events_in_list(ctx, a->events);
+
+ /*
+ Server transitions:
+ INIT -(S1)-> RECEIVED -(S6a)-> TERMINATED
+ */
+ TEST_1(e = b->events->head); TEST_E(e->data->e_event, nua_i_invite);
+ TEST_1(sip = sip_object(e->data->e_msg));
+ TEST(e->data->e_status, 100);
+ TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_state);
+ TEST(callstate(e->data->e_tags), nua_callstate_received); /* RECEIVED */
+ TEST_1(is_offer_recv(e->data->e_tags));
+ TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_state);
+ TEST(callstate(e->data->e_tags), nua_callstate_terminated); /* TERMINATED */
+
+ TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_invite);
+ TEST_1(sip = sip_object(e->data->e_msg));
+ TEST(e->data->e_status, 100);
+ TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_state);
+ TEST(callstate(e->data->e_tags), nua_callstate_received); /* RECEIVED */
+ TEST_1(is_offer_recv(e->data->e_tags));
+ TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_state);
+ TEST(callstate(e->data->e_tags), nua_callstate_terminated); /* TERMINATED */
+ TEST_1(!e->next);
+
+ free_events_in_list(ctx, b->events);
+
+ nua_handle_destroy(a_call->nh), a_call->nh = NULL;
+ nua_handle_destroy(b_call->nh), b_call->nh = NULL;
+
+ if (print_headings)
+ printf("TEST NUA-4.6.2: PASSED\n");
END();
}
@@ -976,7 +1177,7 @@
struct endpoint *a = &ctx->a, *b = &ctx->b;
struct call *a_call = a->call, *b_call = b->call;
struct event *e;
- struct nat_filter *f;
+ struct nat_filter *f, *f2;
if (print_headings)
printf("TEST NUA-4.7: check for error and timeout handling\n");
@@ -993,6 +1194,8 @@
TEST_1(a_call->nh = nua_handle(a->nua, a_call, SIPTAG_TO(b->to), TAG_END()));
TEST_1(f = test_nat_add_filter(ctx->nat, filter_200_OK, NULL, nat_inbound));
+ TEST_1(f2 = test_nat_add_filter(ctx->nat, filter_200_OK,
+ NULL, nat_outbound));
INVITE(a, a_call, a_call->nh,
TAG_IF(!ctx->proxy_tests, NUTAG_URL(b->contact->m_url)),
@@ -1014,7 +1217,7 @@
| X-----200--------|
| |
|<--------BYE--------|
- |--------200 OK----->|
+ |--------200 OK---X |
*/
@@ -1052,6 +1255,7 @@
TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_state);
TEST(callstate(e->data->e_tags), nua_callstate_terminating); /* TERMINATING */
TEST_1(e = e->next); TEST_E(e->data->e_event, nua_r_bye);
+ TEST(e->data->e_status, 408);
TEST_1(e = e->next); TEST_E(e->data->e_event, nua_i_state);
TEST(callstate(e->data->e_tags), nua_callstate_terminated); /* TERMINATED */
TEST_1(!e->next);
@@ -1062,6 +1266,7 @@
nua_handle_destroy(b_call->nh), b_call->nh = NULL;
TEST_1(test_nat_remove_filter(ctx->nat, f) == 0);
+ TEST_1(test_nat_remove_filter(ctx->nat, f2) == 0);
if (print_headings)
printf("TEST NUA-4.7.1: PASSED\n");
@@ -1262,3 +1467,19 @@
return event == nua_i_state && callstate(tags) == nua_callstate_terminated;
}
+
+/* ---------------------------------------------------------------------- */
+
+int test_rejects(struct context *ctx)
+{
+ return
+ test_reject_401_bad(ctx) ||
+ test_reject_a(ctx) ||
+ test_reject_b(ctx) ||
+ test_reject_302(ctx) ||
+ test_reject_401(ctx) ||
+ test_mime_negotiation(ctx) ||
+ test_call_timeouts(ctx) ||
+ test_reject_401_aka(ctx) ||
+ 0;
+}
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_init.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_init.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_init.c Mon Mar 26 14:05:55 2007
@@ -110,7 +110,8 @@
AUTHTAG_OPAQUE("kuik"),
AUTHTAG_DB(passwd_name),
AUTHTAG_QOP("auth-int"),
- AUTHTAG_ALGORITHM("md5-sess"),
+ AUTHTAG_ALGORITHM("md5"),
+ AUTHTAG_NEXT_EXPIRES(60),
TAG_IF(ctx->proxy_logging, TPTAG_LOG(1)),
TAG_END());
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_nua.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_nua.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_nua.c Mon Mar 26 14:05:55 2007
@@ -307,13 +307,7 @@
while (retval == 0) {
retval |= test_basic_call(ctx); SINGLE_FAILURE_CHECK();
- retval |= test_reject_a(ctx); SINGLE_FAILURE_CHECK();
- retval |= test_reject_b(ctx); SINGLE_FAILURE_CHECK();
- retval |= test_reject_302(ctx); SINGLE_FAILURE_CHECK();
- retval |= test_reject_401(ctx); SINGLE_FAILURE_CHECK();
- retval |= test_mime_negotiation(ctx); SINGLE_FAILURE_CHECK();
- retval |= test_call_timeouts(ctx); SINGLE_FAILURE_CHECK();
- retval |= test_reject_401_aka(ctx); SINGLE_FAILURE_CHECK();
+ retval |= test_rejects(ctx); SINGLE_FAILURE_CHECK();
retval |= test_call_cancel(ctx); SINGLE_FAILURE_CHECK();
retval |= test_call_destroy(ctx); SINGLE_FAILURE_CHECK();
retval |= test_offer_answer(ctx); SINGLE_FAILURE_CHECK();
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_nua.h
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_nua.h (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_nua.h Mon Mar 26 14:05:55 2007
@@ -330,10 +330,7 @@
int test_basic_call(struct context *ctx);
int test_offer_answer(struct context *ctx);
-int test_reject_a(struct context *ctx);
-int test_reject_b(struct context *ctx);
-int test_reject_302(struct context *ctx);
-int test_reject_401(struct context *ctx);
+int test_rejects(struct context *ctx);
int test_mime_negotiation(struct context *ctx);
int test_call_timeouts(struct context *ctx);
int test_reject_401_aka(struct context *ctx);
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_nua_params.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_nua_params.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_nua_params.c Mon Mar 26 14:05:55 2007
@@ -193,6 +193,7 @@
NUTAG_MEDIA_FEATURES(1),
NUTAG_SERVICE_ROUTE_ENABLE(0),
NUTAG_PATH_ENABLE(0),
+ NUTAG_AUTH_CACHE(nua_auth_cache_challenged),
NUTAG_REFER_EXPIRES(333),
NUTAG_REFER_WITH_ID(0),
NUTAG_SUBSTATE(nua_substate_pending),
@@ -268,6 +269,7 @@
int media_features = -1;
int service_route_enable = -1;
int path_enable = -1;
+ int auth_cache = -1;
unsigned refer_expires = (unsigned)-1;
int refer_with_id = -1;
int substate = -1;
@@ -331,6 +333,7 @@
NUTAG_MEDIA_FEATURES_REF(media_features),
NUTAG_SERVICE_ROUTE_ENABLE_REF(service_route_enable),
NUTAG_PATH_ENABLE_REF(path_enable),
+ NUTAG_AUTH_CACHE_REF(auth_cache),
NUTAG_REFER_EXPIRES_REF(refer_expires),
NUTAG_REFER_WITH_ID_REF(refer_with_id),
NUTAG_SUBSTATE_REF(substate),
@@ -361,7 +364,7 @@
NUTAG_INSTANCE_REF(instance),
TAG_END());
- TEST(n, 47);
+ TEST(n, 48);
TEST_S(sip_header_as_string(tmphome, (void *)from), Alice);
TEST_S(from_str, Alice);
@@ -391,6 +394,7 @@
TEST(media_features, 1);
TEST(service_route_enable, 0);
TEST(path_enable, 0);
+ TEST(auth_cache, nua_auth_cache_challenged);
TEST(refer_expires, 333);
TEST(refer_with_id, 0);
TEST(substate, nua_substate_pending);
@@ -455,6 +459,7 @@
int media_features = -1;
int service_route_enable = -1;
int path_enable = -1;
+ int auth_cache = -1;
unsigned refer_expires = (unsigned)-1;
int refer_with_id = -1;
int substate = -1;
@@ -513,6 +518,7 @@
NUTAG_MEDIA_FEATURES_REF(media_features),
NUTAG_SERVICE_ROUTE_ENABLE_REF(service_route_enable),
NUTAG_PATH_ENABLE_REF(path_enable),
+ NUTAG_AUTH_CACHE_REF(auth_cache),
NUTAG_SUBSTATE_REF(substate),
SIPTAG_SUPPORTED_REF(supported),
@@ -565,6 +571,7 @@
TEST(media_features, -1);
TEST(service_route_enable, -1);
TEST(path_enable, -1);
+ TEST(auth_cache, -1);
TEST(refer_expires, (unsigned)-1);
TEST(refer_with_id, -1);
TEST(substate, -1);
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_register.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_register.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/nua/test_register.c Mon Mar 26 14:05:55 2007
@@ -55,6 +55,7 @@
struct event *e;
sip_t const *sip;
sip_cseq_t cseq[1];
+ int seen_401;
if (ctx->p)
test_proxy_set_expiration(ctx->p, 5, 5, 10);
@@ -189,6 +190,8 @@
REGISTER(b, b_reg, b_reg->nh, SIPTAG_TO(b->to),
SIPTAG_CONTACT(m),
+ /* Do not include credentials unless challenged */
+ NUTAG_AUTH_CACHE(nua_auth_cache_challenged),
TAG_END());
}
run_ab_until(ctx, -1, save_events, -1, save_until_final_response);
@@ -213,7 +216,8 @@
TEST_1(sip->sip_contact);
TEST_S(sip->sip_contact->m_display, "B");
TEST_S(sip->sip_contact->m_url->url_user, "b");
-
+ free_events_in_list(ctx, b->events);
+
if (print_headings)
printf("TEST NUA-2.3.2: PASSED\n");
@@ -318,11 +322,21 @@
TEST_1(!e->next);
free_events_in_list(ctx, a->events);
+ seen_401 = 0;
+
for (e = b->events->head; e; e = e->next) {
TEST_E(e->data->e_event, nua_r_register);
- TEST(e->data->e_status, 200);
TEST_1(sip = sip_object(e->data->e_msg));
- TEST_1(sip->sip_contact);
+
+ if (e->data->e_status == 200) {
+ TEST(e->data->e_status, 200);
+ TEST_1(seen_401);
+ TEST_1(sip->sip_contact);
+ }
+ else if (sip->sip_status && sip->sip_status->st_status == 401) {
+ seen_401 = 1;
+ }
+
if (!e->next)
break;
}
@@ -680,6 +694,10 @@
run_b_until(ctx, -1, save_until_final_response);
TEST_1(e = b->events->head);
TEST_E(e->data->e_event, nua_r_unregister);
+ if (e->data->e_status == 100) {
+ TEST_1(e = e->next);
+ TEST_E(e->data->e_event, nua_r_unregister);
+ }
TEST(e->data->e_status, 200);
TEST_1(sip = sip_object(e->data->e_msg));
TEST_1(!sip->sip_contact);
Added: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/sip/tests/10052.txt
==============================================================================
--- (empty file)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/sip/tests/10052.txt Mon Mar 26 14:05:55 2007
@@ -0,0 +1,20 @@
+INVITE sip:1234@10.50.71.28 SIP/2.0
+To: <sip:1234@10.50.71.28>
+From: "Displayname" <sip:1234@testaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.example.local:5060>;tag=10052
+Via: SIP/2.0/UDP 10.50.71.29:5060;branch=z9hG4bK10052t1174659568681
+Call-ID: s0c00010052i0t1174659568681(a)10.50.71.29
+Contact: "999" <sip:999@10.50.71.29;transport=udp>
+Content-Length: 180
+Content-Type: application/sdp
+CSeq: 1 INVITE
+Max-Forwards: 70
+
+v=0
+o=999 1 1 IN IP4 10.50.71.29
+s=Codenomicon SIP UAS Test Tool 3.0.2 (http://www.codenomicon.com/)
+c=IN IP4 10.50.71.29
+t=0 0
+m=audio 49152 RTP/AVP 0
+a=rtpmap:0 PCMU/8000
\ No newline at end of file
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_wait.h
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_wait.h (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/su/sofia-sip/su_wait.h Mon Mar 26 14:05:55 2007
@@ -46,9 +46,7 @@
#include "sofia-sip/su_time.h"
#endif
-#if SU_HAVE_KQUEUE
-#include <sys/event.h>
-#elif SU_HAVE_POLL
+#if SU_HAVE_POLL
#include <sys/poll.h>
#endif
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_udp.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_udp.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/tport/tport_type_udp.c Mon Mar 26 14:05:55 2007
@@ -252,6 +252,11 @@
su_strerror(err), err));
return -1;
}
+ if (N == 0) {
+ su_recv(self->tp_socket, sample, 1, 0);
+ SU_DEBUG_3(("tport(%p): zero length packet", (void *)self));
+ return 0;
+ }
#endif
veclen = tport_recv_iovec(self, &self->tp_msg, iovec, N, 1);
Modified: freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/url/torture_url.c
==============================================================================
--- freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/url/torture_url.c (original)
+++ freeswitch/branches/mikej/sofiasip-upgrade/libs/sofia-sip/libsofia-sip-ua/url/torture_url.c Mon Mar 26 14:05:55 2007
@@ -403,6 +403,10 @@
TEST_S(u->url_params, "isfocus");
TEST_1(!url_have_transport(u));
+ u = url_hdup(home, (void *)"sip:%22foo%22@172.21.55.55:5060");
+ TEST_1(u);
+ TEST_S(u->url_user, "%22foo%22");
+
a = url_hdup(home, (void *)"sip:172.21.55.55:5060");
b = url_hdup(home, (void *)"sip:172.21.55.55");
TEST_1(a); TEST_1(b);
1
0
25 Mar '07
Author: mikej
Date: Sun Mar 25 11:21:22 2007
New Revision: 4766
Modified:
freeswitch/trunk/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c
Log:
refactor in mod_dialplan_xml. Factor out a function for the hint string generation/xml_locate so that we do not need to generate the xml hint string when using a static file. Dont add blank items from the caller profile to the hint string.
Modified: freeswitch/trunk/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c
==============================================================================
--- freeswitch/trunk/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c (original)
+++ freeswitch/trunk/src/mod/dialplans/mod_dialplan_xml/mod_dialplan_xml.c Sun Mar 25 11:21:22 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;
}
1
0
25 Mar '07
Author: mikej
Date: Sat Mar 24 21:11:03 2007
New Revision: 4765
Modified:
freeswitch/trunk/libs/portaudio/Makefile.in
freeswitch/trunk/libs/portaudio/src/common/pa_ringbuffer.c
Log:
fix portaudio bsd build and remove gmakeisms from the portaudio lib makefile
Modified: freeswitch/trunk/libs/portaudio/Makefile.in
==============================================================================
--- freeswitch/trunk/libs/portaudio/Makefile.in (original)
+++ freeswitch/trunk/libs/portaudio/Makefile.in Sat Mar 24 21:11:03 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/trunk/libs/portaudio/src/common/pa_ringbuffer.c
==============================================================================
--- freeswitch/trunk/libs/portaudio/src/common/pa_ringbuffer.c (original)
+++ freeswitch/trunk/libs/portaudio/src/common/pa_ringbuffer.c Sat Mar 24 21:11:03 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. */
1
0
Author: mikej
Date: Sat Mar 24 16:12:41 2007
New Revision: 4764
Modified:
freeswitch/trunk/src/switch_apr.c
Log:
I think this is actually more correct from what I read.
Modified: freeswitch/trunk/src/switch_apr.c
==============================================================================
--- freeswitch/trunk/src/switch_apr.c (original)
+++ freeswitch/trunk/src/switch_apr.c Sat Mar 24 16:12:41 2007
@@ -616,8 +616,15 @@
char *buf;
int len;
size_t buflen;
+ va_list ap2;
- len = vsnprintf(NULL, 0, fmt, ap);
+#ifdef _MSC_VER
+ ap2 = ap;
+#else
+ va_copy(ap2, ap);
+#endif
+
+ len = vsnprintf(NULL, 0, fmt, ap2);
if (len > 0 && (buf = malloc((buflen = (size_t)(len + 1)))) != NULL) {
len = vsnprintf(buf, buflen, fmt, ap);
@@ -627,6 +634,7 @@
len = -1;
}
+ va_end(ap2);
return len;
#endif
1
0
Author: mikej
Date: Sat Mar 24 15:54:38 2007
New Revision: 4763
Modified:
freeswitch/trunk/src/switch_apr.c
Log:
a bit cleaner.
Modified: freeswitch/trunk/src/switch_apr.c
==============================================================================
--- freeswitch/trunk/src/switch_apr.c (original)
+++ freeswitch/trunk/src/switch_apr.c Sat Mar 24 15:54:38 2007
@@ -618,17 +618,15 @@
size_t buflen;
len = vsnprintf(NULL, 0, fmt, ap);
- if (len > 0) {
- buflen = (size_t)(len + 1);
- if ((buf = malloc(buflen)) == NULL) {
- *ret = NULL;
- return -1;
- }
+
+ if (len > 0 && (buf = malloc((buflen = (size_t)(len + 1)))) != NULL) {
len = vsnprintf(buf, buflen, fmt, ap);
*ret = buf;
} else {
*ret = NULL;
+ len = -1;
}
+
return len;
#endif
1
0
Author: mikej
Date: Sat Mar 24 15:33:34 2007
New Revision: 4762
Modified:
freeswitch/trunk/src/switch_apr.c
Log:
a more proper replacement for vasprintf. Lets see if we can actually do it this way (seems to work on msvc which is the only platform I have seen that does not have vasprintf available).
Modified: freeswitch/trunk/src/switch_apr.c
==============================================================================
--- freeswitch/trunk/src/switch_apr.c (original)
+++ freeswitch/trunk/src/switch_apr.c Sat Mar 24 15:33:34 2007
@@ -608,79 +608,28 @@
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;
-
- 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;
-}
-#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);
-
- if (data.buf == NULL) {
- *buf = NULL;
- return 0;
- }
-
- data.vbuff.curpos = data.buf;
- data.vbuff.endpos = data.buf + data.block_size;
-
- return apr_vformatter(vasprintf_flush, (apr_vformatter_buff_t *)&data, format, ap);
-#endif
#ifdef HAVE_VASPRINTF
- return vasprintf(buf, format, ap);
+ return vasprintf(ret, fmt, ap);
#else
- size_t block_size = 1024;
- int ret = -1;
- int count = 1;
- *buf = (char *) malloc(block_size);
+ char *buf;
+ int len;
+ size_t buflen;
- if (*buf == NULL) {
- return -1;
- }
-
- while (ret == -1 && count < 10) {
- ret = vsnprintf(*buf, block_size*count, format, ap);
- if (ret == -1) {
- void *new_buf;
- count++;
- new_buf = realloc(*buf, block_size*count);
- if (new_buf == NULL) {
- *buf = NULL;
- return -1;
- } else {
- *buf = new_buf;
- }
+ len = vsnprintf(NULL, 0, fmt, ap);
+ if (len > 0) {
+ buflen = (size_t)(len + 1);
+ if ((buf = malloc(buflen)) == NULL) {
+ *ret = NULL;
+ return -1;
}
+ len = vsnprintf(buf, buflen, fmt, ap);
+ *ret = buf;
+ } else {
+ *ret = NULL;
}
- return ret;
+ return len;
#endif
}
1
0
Author: mikej
Date: Sat Mar 24 00:52:46 2007
New Revision: 4761
Modified:
freeswitch/trunk/src/include/switch_ivr.h
freeswitch/trunk/src/include/switch_types.h
Log:
roll back 4757 until I figure out how I want to actually handle those.
Modified: freeswitch/trunk/src/include/switch_ivr.h
==============================================================================
--- freeswitch/trunk/src/include/switch_ivr.h (original)
+++ freeswitch/trunk/src/include/switch_ivr.h Sat Mar 24 00:52:46 2007
@@ -509,8 +509,6 @@
SWITCH_IVR_ACTION_TOMAIN, /* Go back to the top level menu. */
SWITCH_IVR_ACTION_TRANSFER, /* Transfer caller to another ext. */
SWITCH_IVR_ACTION_NOOP, /* No operation */
-
- SWITCH_IVR_ACTION_COUNT
} switch_ivr_action_t;
struct switch_ivr_menu;
typedef switch_ivr_action_t switch_ivr_menu_action_function_t(struct switch_ivr_menu *, char *, char *, size_t, void *);
Modified: freeswitch/trunk/src/include/switch_types.h
==============================================================================
--- freeswitch/trunk/src/include/switch_types.h (original)
+++ freeswitch/trunk/src/include/switch_types.h Sat Mar 24 00:52:46 2007
@@ -137,9 +137,7 @@
SSM_NA,
SSM_PRONOUNCED,
SSM_ITERATED,
- SSM_COUNTED,
-
- SSM_COUNT
+ SSM_COUNTED
} switch_say_method_t;
typedef enum {
@@ -161,16 +159,12 @@
SST_ACCOUNT_NUMBER,
SST_NAME_SPELLED,
SST_NAME_PHONETIC,
-
- SST_COUNT
} switch_say_type_t;
typedef enum {
SMA_NONE,
SMA_GET,
- SMA_SET,
-
- SMA_COUNT
+ SMA_SET
} switch_management_action_t;
typedef enum {
@@ -192,8 +186,6 @@
SWITCH_ABC_TYPE_WRITE,
SWITCH_ABC_TYPE_WRITE_REPLACE,
SWITCH_ABC_TYPE_CLOSE,
-
- SWITCH_ABC_TYPE_COUNT
} switch_abc_type_t;
typedef struct {
@@ -249,7 +241,7 @@
SWITCH_AUDIO_COL_STR_SOFTWARE = 0x03,
SWITCH_AUDIO_COL_STR_ARTIST = 0x04,
SWITCH_AUDIO_COL_STR_COMMENT = 0x05,
- SWITCH_AUDIO_COL_STR_DATE = 0x06,
+ SWITCH_AUDIO_COL_STR_DATE = 0x06
} switch_audio_col_t;
typedef enum {
@@ -331,8 +323,6 @@
SWITCH_PRIORITY_NORMAL,
SWITCH_PRIORITY_LOW,
SWITCH_PRIORITY_HIGH,
-
- SWITCH_PRIORITY_COUNT
} switch_priority_t;
/*!
@@ -379,9 +369,7 @@
SWITCH_MESSAGE_INDICATE_NOMEDIA,
SWITCH_MESSAGE_INDICATE_HOLD,
SWITCH_MESSAGE_INDICATE_UNHOLD,
- SWITCH_MESSAGE_INDICATE_REDIRECT,
-
- SWITCH_MESSAGE_INDICATE_COUNT
+ SWITCH_MESSAGE_INDICATE_REDIRECT
} switch_core_session_message_types_t;
@@ -436,9 +424,7 @@
SWITCH_STATUS_SOCKERR,
SWITCH_STATUS_MORE_DATA,
SWITCH_STATUS_NOTFOUND,
- SWITCH_STATUS_UNLOAD,
-
- SWITCH_STATUS_COUNT
+ SWITCH_STATUS_UNLOAD
} switch_status_t;
@@ -483,9 +469,7 @@
typedef enum {
SWITCH_CHANNEL_ID_LOG,
SWITCH_CHANNEL_ID_LOG_CLEAN,
- SWITCH_CHANNEL_ID_EVENT,
-
- SWITCH_CHANNEL_ID_COUNT
+ SWITCH_CHANNEL_ID_EVENT
} switch_text_channel_t;
typedef enum {
@@ -522,9 +506,7 @@
CS_HOLD,
CS_HIBERNATE,
CS_HANGUP,
- CS_DONE,
-
- CS_COUNT
+ CS_DONE
} switch_channel_state_t;
@@ -612,9 +594,7 @@
SWITCH_SIG_NONE,
SWITCH_SIG_KILL,
SWITCH_SIG_XFER,
- SWITCH_SIG_BREAK,
-
- SWITCH_SIG_COUNT
+ SWITCH_SIG_BREAK
} switch_signal_t;
/*!
@@ -710,9 +690,7 @@
SWITCH_CODEC_TYPE_AUDIO,
SWITCH_CODEC_TYPE_VIDEO,
SWITCH_CODEC_TYPE_T38,
- SWITCH_CODEC_TYPE_APP,
-
- SWITCH_CODEC_TYPE_COUNT
+ SWITCH_CODEC_TYPE_APP
} switch_codec_type_t;
@@ -872,9 +850,7 @@
typedef enum {
SWITCH_INPUT_TYPE_DTMF,
- SWITCH_INPUT_TYPE_EVENT,
-
- SWITCH_INPUT_TYPE_COUNT
+ SWITCH_INPUT_TYPE_EVENT
} switch_input_type_t;
typedef enum {
@@ -941,9 +917,7 @@
SCSC_PAUSE_INBOUND,
SCSC_HUPALL,
SCSC_SHUTDOWN,
- SCSC_CHECK_RUNNING,
-
- SCSC_COUNT
+ SCSC_CHECK_RUNNING
} switch_session_ctl_t;
typedef uint16_t switch_port_t;
1
0
Author: mikej
Date: Sat Mar 24 00:51:17 2007
New Revision: 4760
Modified:
freeswitch/trunk/src/include/switch_log.h
Log:
quick comment
Modified: freeswitch/trunk/src/include/switch_log.h
==============================================================================
--- freeswitch/trunk/src/include/switch_log.h (original)
+++ freeswitch/trunk/src/include/switch_log.h Sat Mar 24 00:51:17 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);
1
0