Merge branch 'master' into smgmaster
Conflicts: build/modules.conf.in libs/esl/fs_cli.c
This commit is contained in:
commit
3eef66d6c1
|
@ -83,6 +83,7 @@ core.*
|
|||
|
||||
/build/config/compile
|
||||
/build/config/config.guess
|
||||
/build/config/config.sub
|
||||
/build/config/depcomp
|
||||
/build/config/install-sh
|
||||
/build/config/ltmain.sh
|
||||
|
|
|
@ -466,6 +466,8 @@ EndProject
|
|||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dingaling", "src\mod\endpoints\mod_dingaling\mod_dingaling.2008.vcproj", "{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{1906D736-08BD-4EE1-924F-B536249B9A54} = {1906D736-08BD-4EE1-924F-B536249B9A54}
|
||||
{D331904D-A00A-4694-A5A3-FCFF64AB5DBE} = {D331904D-A00A-4694-A5A3-FCFF64AB5DBE}
|
||||
{B4B62169-5AD4-4559-8707-3D933AC5DB39} = {B4B62169-5AD4-4559-8707-3D933AC5DB39}
|
||||
{202D7A4E-760D-4D0E-AFA1-D7459CED30FF} = {202D7A4E-760D-4D0E-AFA1-D7459CED30FF}
|
||||
{F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}
|
||||
{E727E8F6-935D-46FE-8B0E-37834748A0E3} = {E727E8F6-935D-46FE-8B0E-37834748A0E3}
|
||||
|
|
|
@ -716,6 +716,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ldns", "libs\win32\ldns\ldn
|
|||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_callcenter", "src\mod\applications\mod_callcenter\mod_callcenter.2010.vcxproj", "{47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_blacklist", "src\mod\applications\mod_blacklist\mod_blacklist.2010.vcxproj", "{50AAC2CE-BFC9-4912-87CC-C6381850D735}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
All|Win32 = All|Win32
|
||||
|
@ -3665,6 +3667,19 @@ Global
|
|||
{47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|x64.ActiveCfg = Release|x64
|
||||
{47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|x64 Setup.ActiveCfg = Release|x64
|
||||
{47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A}.Release|x86 Setup.ActiveCfg = Release|x64
|
||||
{50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|Win32.ActiveCfg = Release|x64
|
||||
{50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|x64.ActiveCfg = Release|x64
|
||||
{50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|x64.Build.0 = Release|x64
|
||||
{50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|x64 Setup.ActiveCfg = Release|x64
|
||||
{50AAC2CE-BFC9-4912-87CC-C6381850D735}.All|x86 Setup.ActiveCfg = Release|x64
|
||||
{50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|x64 Setup.ActiveCfg = Debug|x64
|
||||
{50AAC2CE-BFC9-4912-87CC-C6381850D735}.Debug|x86 Setup.ActiveCfg = Debug|x64
|
||||
{50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|x64.ActiveCfg = Release|x64
|
||||
{50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|x64 Setup.ActiveCfg = Release|x64
|
||||
{50AAC2CE-BFC9-4912-87CC-C6381850D735}.Release|x86 Setup.ActiveCfg = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@ -3714,6 +3729,7 @@ Global
|
|||
{B889A18E-70A7-44B5-B2C9-47798D4F43B3} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
|
||||
{5C2B4D88-3BEA-4FE0-90DF-FA9836099D5F} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
|
||||
{47886A6C-CCA6-4F9F-A7D4-F97D06FB2B1A} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
|
||||
{50AAC2CE-BFC9-4912-87CC-C6381850D735} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78}
|
||||
{07113B25-D3AF-4E04-BA77-4CD1171F022C} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}
|
||||
{A27CCA23-1541-4337-81A4-F0A6413078A0} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}
|
||||
{E7BC026C-7CC5-45A3-BC7C-3B88EEF01F24} = {C5F182F9-754A-4EC5-B50F-76ED02BE13F4}
|
||||
|
|
59
Makefile.am
59
Makefile.am
|
@ -1,6 +1,6 @@
|
|||
EXTRA_DIST =
|
||||
SUBDIRS = . src
|
||||
AUTOMAKE_OPTS = foreign
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
NAME = freeswitch
|
||||
|
||||
AM_CFLAGS = $(SWITCH_AM_CFLAGS) $(SWITCH_ANSI_CFLAGS)
|
||||
|
@ -106,6 +106,7 @@ CORE_CFLAGS += -I$(switch_srcdir)/libs/spandsp/src -I$(switch_srcdir)/libs/tiff-
|
|||
|
||||
CORE_LIBS = libs/apr-util/libaprutil-1.la libs/apr/libapr-1.la
|
||||
CORE_LIBS += libs/sqlite/libsqlite3.la libs/pcre/libpcre.la libs/speex/libspeex/libspeexdsp.la
|
||||
|
||||
if ENABLE_SRTP
|
||||
CORE_CFLAGS += -DENABLE_SRTP
|
||||
CORE_LIBS += libs/srtp/libsrtp.la
|
||||
|
@ -128,13 +129,17 @@ if ENABLE_TIMERFD_WRAPPER
|
|||
CORE_CFLAGS += -DTIMERFD_WRAP
|
||||
endif
|
||||
|
||||
if CURL_BUILTIN
|
||||
CORE_LIBS += libs/curl/lib/libcurl.la
|
||||
endif
|
||||
|
||||
##
|
||||
## libfreeswitch
|
||||
##
|
||||
lib_LTLIBRARIES = libfreeswitch.la
|
||||
libfreeswitch_la_CFLAGS = $(CORE_CFLAGS) $(AM_CFLAGS)
|
||||
libfreeswitch_la_LDFLAGS = -version-info 1:0:0 $(AM_LDFLAGS) $(PLATFORM_CORE_DEPLIBS)
|
||||
libfreeswitch_la_LIBADD = $(CORE_LIBS)
|
||||
libfreeswitch_la_LDFLAGS = -version-info 1:0:0 $(AM_LDFLAGS) $(PLATFORM_CORE_LDFLAGS)
|
||||
libfreeswitch_la_LIBADD = $(CORE_LIBS) $(PLATFORM_CORE_LIBS)
|
||||
libfreeswitch_la_DEPENDENCIES = $(BUILT_SOURCES)
|
||||
|
||||
if HAVE_ODBC
|
||||
|
@ -244,6 +249,7 @@ libfreeswitch_la_SOURCES = \
|
|||
src/switch_pcm.c \
|
||||
src/switch_profile.c \
|
||||
src/switch_json.c \
|
||||
src/switch_curl.c \
|
||||
libs/stfu/stfu.c \
|
||||
libs/libteletone/src/libteletone_detect.c \
|
||||
libs/libteletone/src/libteletone_generate.c \
|
||||
|
@ -294,21 +300,32 @@ fs_cli_CFLAGS += -DHAVE_EDITLINE -I$(switch_srcdir)/libs/libedit/src
|
|||
fs_cli_LDADD = libs/libedit/src/.libs/libedit.a
|
||||
endif
|
||||
|
||||
|
||||
##
|
||||
## fs_encode ()
|
||||
##
|
||||
fs_encode_SOURCES = src/fs_encode.c
|
||||
fs_encode_CFLAGS = $(AM_CFLAGS)
|
||||
fs_encode_LDFLAGS = $(AM_LDFLAGS) $(CORE_LIBS)
|
||||
fs_encode_LDADD = libfreeswitch.la -lcrypt -lrt
|
||||
fs_encode_CFLAGS = $(AM_CFLAGS)
|
||||
fs_encode_LDFLAGS = $(AM_LDFLAGS)
|
||||
fs_encode_LDADD = libfreeswitch.la $(CORE_LIBS)
|
||||
|
||||
if HAVE_ODBC
|
||||
fs_encode_LDADD += $(ODBC_LIB_FLAGS)
|
||||
endif
|
||||
|
||||
|
||||
##
|
||||
## tone2wav ()
|
||||
##
|
||||
tone2wav_SOURCES = src/tone2wav.c
|
||||
tone2wav_CFLAGS = $(AM_CFLAGS)
|
||||
tone2wav_LDFLAGS = $(AM_LDFLAGS) $(CORE_LIBS)
|
||||
tone2wav_LDADD = libfreeswitch.la -lcrypt -lrt
|
||||
tone2wav_LDFLAGS = $(AM_LDFLAGS)
|
||||
tone2wav_LDADD = libfreeswitch.la $(CORE_LIBS)
|
||||
|
||||
if HAVE_ODBC
|
||||
tone2wav_LDADD += $(ODBC_LIB_FLAGS)
|
||||
endif
|
||||
|
||||
|
||||
##
|
||||
## fs_ivrd ()
|
||||
|
@ -332,6 +349,10 @@ freeswitch_CFLAGS += -Ilibs/libedit/src -DSWITCH_HAVE_LIBEDIT
|
|||
freeswitch_LDADD += libs/libedit/src/.libs/libedit.a
|
||||
endif
|
||||
|
||||
if HAVE_ODBC
|
||||
freeswitch_LDADD += $(ODBC_LIB_FLAGS)
|
||||
endif
|
||||
|
||||
|
||||
##
|
||||
## Scripts
|
||||
|
@ -415,6 +436,13 @@ src/include/switch_version.h: src/include/switch_version.h.in .version $(libfree
|
|||
libs/libedit/src/.libs/libedit.a:
|
||||
cd libs/libedit && $(MAKE)
|
||||
|
||||
libs/curl/Makefile:
|
||||
cd libs/curl && sh ./configure.gnu --prefix=$(prefix)
|
||||
|
||||
libs/curl/lib/libcurl.la: libs/curl libs/curl/Makefile
|
||||
@cd libs/curl && $(MAKE)
|
||||
@$(TOUCH_TARGET)
|
||||
|
||||
libs/apr/libapr-1.la: libs/apr libs/apr/.update
|
||||
@cd libs/apr && $(MAKE)
|
||||
@$(TOUCH_TARGET)
|
||||
|
@ -560,7 +588,9 @@ libs/openzap/Makefile:
|
|||
cd libs/openzap && autoconf
|
||||
cd libs/openzap && ./configure
|
||||
|
||||
update-clean: clean modwipe uninstall libs/openzap/Makefile python-reconf
|
||||
reinstall: modwipe uninstall install
|
||||
|
||||
update-clean: clean libs/openzap/Makefile python-reconf
|
||||
cd libs/sofia-sip && $(MAKE) clean
|
||||
cd libs/openzap && $(MAKE) clean
|
||||
cd libs/portaudio && $(MAKE) clean
|
||||
|
@ -584,6 +614,11 @@ speex-reconf:
|
|||
cd libs/speex && ./config.status --recheck
|
||||
cd libs/speex && ./config.status
|
||||
|
||||
sndfile-reconf:
|
||||
cd libs/libsndfile && autoreconf
|
||||
cd libs/libsndfile && ./config.status --recheck
|
||||
cd libs/libsndfile && ./config.status
|
||||
|
||||
tiff-reconf:
|
||||
cd libs/tiff-3.8.2 && autoreconf -fi
|
||||
cd libs/tiff-3.8.2 && sh ./configure.gnu
|
||||
|
@ -633,14 +668,14 @@ cluecon:
|
|||
current: cluecon update-clean is-scm
|
||||
$(MAKE) update
|
||||
$(MAKE) all
|
||||
$(MAKE) install
|
||||
$(MAKE) reinstall
|
||||
|
||||
installall: current
|
||||
|
||||
speedy-current: update-clean is-scm
|
||||
$(MAKE) update
|
||||
$(MAKE) speedy-sure
|
||||
$(MAKE) install
|
||||
$(MAKE) reinstall
|
||||
|
||||
wayclean: clean
|
||||
|
||||
|
@ -661,7 +696,7 @@ modclean: $(switch_builddir)/modules.conf
|
|||
@cd src/mod && $(MAKE) $(AM_MAKEFLAGS) clean
|
||||
|
||||
modwipe:
|
||||
rm -f $(prefix)/$(modulesdir)/*.${DYNAMIC_LIB_EXTEN}
|
||||
rm -f $(modulesdir)/*.${DYNAMIC_LIB_EXTEN}
|
||||
|
||||
dox:
|
||||
cd docs && doxygen $(PWD)/docs/Doxygen.conf
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,58 +1,46 @@
|
|||
#!/bin/sh
|
||||
|
||||
bz="false"
|
||||
|
||||
BUNZIP=/usr/bin/bunzip2
|
||||
TAR=@TAR@
|
||||
ZCAT=@ZCAT@
|
||||
BZIP=@BZIP@
|
||||
XZ=@XZ@
|
||||
WGET=@WGET@
|
||||
CURL=@CURL@
|
||||
|
||||
if [ -f "$WGET" ] ; then
|
||||
if [ -f "$WGET" ]; then
|
||||
DOWNLOAD_CMD=$WGET
|
||||
else
|
||||
if [ -f "$CURL" ] ; then
|
||||
DOWNLOAD_CMD="$CURL -O"
|
||||
fi
|
||||
elif [ -f "$CURL" ]; then
|
||||
DOWNLOAD_CMD="$CURL -O"
|
||||
fi
|
||||
|
||||
base=http://files.freeswitch.org/downloads/libs/
|
||||
tarfile=$1
|
||||
url=`echo $tarfile | grep "://"`
|
||||
|
||||
if [ `echo $tarfile | grep bz2` ] ; then
|
||||
bz="true"
|
||||
UNZIPPER=$BUNZIP
|
||||
else
|
||||
UNZIPPER=$ZCAT
|
||||
fi
|
||||
|
||||
if [ ! -z $url ] ; then
|
||||
base=$tarfile/
|
||||
if [ -n "`echo $1 | grep '://'`" ]; then
|
||||
base=$1/
|
||||
tarfile=$2
|
||||
else
|
||||
base=http://files.freeswitch.org/downloads/libs/
|
||||
tarfile=$1
|
||||
fi
|
||||
|
||||
if [ ! -d $tarfile ] ; then
|
||||
uncompressed=`echo $tarfile | sed 's/\(\(\.tar\.gz\|\.tar\.bz2\|\.tar\.xz\)\|\(\.tgz\|\.tbz2\)\)$//'`
|
||||
|
||||
if [ $bz = "true" ] ; then
|
||||
uncompressed=`echo $tarfile | sed "s/\.tar\.bz2//g"`
|
||||
else
|
||||
uncompressed=`echo $tarfile | sed "s/\.tar\.gz//g"`
|
||||
uncompressed=`echo $uncompressed | sed "s/\.tgz//g"`
|
||||
fi
|
||||
case `echo $tarfile | sed 's/.*\.\([^.]\+\)$/\1/'` in
|
||||
bz2|tbz2) UNZIPPER=$BZIP ;;
|
||||
xz) UNZIPPER=$XZ ;;
|
||||
gz|tgz|*) UNZIPPER=$ZCAT ;;
|
||||
esac
|
||||
|
||||
if [ ! -f $tarfile ] ; then
|
||||
rm -fr $uncompressed
|
||||
$DOWNLOAD_CMD $base$tarfile
|
||||
if [ ! -f $tarfile ] ; then
|
||||
echo cannot find $tarfile
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -d $tarfile ]; then
|
||||
if [ ! -f $tarfile ]; then
|
||||
rm -fr $uncompressed
|
||||
$DOWNLOAD_CMD $base$tarfile
|
||||
if [ ! -f $tarfile ]; then
|
||||
echo cannot find $tarfile
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
if [ ! -d $uncompressed ] ; then
|
||||
$UNZIPPER -c -d $tarfile | $TAR xf -
|
||||
if [ ! -d $uncompressed ]; then
|
||||
$UNZIPPER -c -d $tarfile | $TAR -xf -
|
||||
fi
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
||||
|
|
|
@ -80,20 +80,18 @@ TOUCH_TARGET=@TOUCH_TARGET@
|
|||
MAKE_OPTS = `test -n "$(VERBOSE)" || echo -s`
|
||||
RECURSE_MODNAME=`pwd | sed -e 's|^.*/||'`
|
||||
RECURSE_SOURCEFILE=`if test -f "$$modname.cpp" -o -f "$(MODDIR)/$$modname.cpp"; then echo "$$modname.cpp"; else echo "$$modname.c"; fi`
|
||||
RECURSE_OUR_DEPS=`test -z "$(WANT_CURL)" || if test ! -z "$(LIBCURL_DEPS)"; then echo $(CURLLA); fi `
|
||||
RECURSE_OUR_CFLAGS=`test -z "$(WANT_CURL)" || echo $(LIBCURL_CPPFLAGS) ; $(LOCAL_INSERT_CFLAGS) `
|
||||
RECURSE_OUR_LDFLAGS=`test -z "$(WANT_CURL)" || echo $(LIBCURL) ; $(LOCAL_INSERT_LDFLAGS) `
|
||||
RECURSE_OUR_CFLAGS=` $(LOCAL_INSERT_CFLAGS) `
|
||||
RECURSE_OUR_LDFLAGS=` $(LOCAL_INSERT_LDFLAGS) `
|
||||
RECURSE_MODDIR=`if test -z $(MODDIR); then pwd | sed -e 's|$(switch_builddir)|$(switch_srcdir)|'; else echo $(MODDIR); fi`
|
||||
RECURSE_MAKE=+modname="$(RECURSE_MODNAME)" ; \
|
||||
sourcefile="$(RECURSE_SOURCEFILE)" ; \
|
||||
osarch=`uname -s` ; \
|
||||
ourdefs="$(RECURSE_OUR_DEPS)" ; \
|
||||
ourcflags="$(RECURSE_OUR_CFLAGS)" ; \
|
||||
ourldflags="$(RECURSE_OUR_LDFLAGS)" ; \
|
||||
insertobjs="`$(LOCAL_INSERT_OBJS)`" ; \
|
||||
moddir="$(RECURSE_MODDIR)" ; \
|
||||
$(MAKE) $(MAKE_OPTS) MODNAME="$$modname" SOURCEFILE="$$sourcefile" MODDIR="$$moddir" \
|
||||
OUR_DEPS="$$ourdefs" OUR_CFLAGS="$$ourcflags" OUR_LDFLAGS="$$ourldflags" OUR_OBJS="$$insertobjs"
|
||||
OUR_CFLAGS="$$ourcflags" OUR_LDFLAGS="$$ourldflags" OUR_OBJS="$$insertobjs"
|
||||
|
||||
all: Makefile
|
||||
@$(RECURSE_MAKE) all-modules || exit 1
|
||||
|
@ -136,7 +134,7 @@ LINK_OUTPUT_REDIR=> .libs/$(MODNAME).log || error="yes" ; \
|
|||
exit 1 ;\
|
||||
fi
|
||||
|
||||
$(MODNAME).$(LIBTOOL_LIB_EXTEN): $(LIBS) $(LOCAL_LIBADD) $(OUR_DEPS) $(LOCAL_OBJS) $(OUR_OBJS) $(MODDIR)/$(SOURCEFILE) $(MODNAME).lo
|
||||
$(MODNAME).$(LIBTOOL_LIB_EXTEN): $(LIBS) $(LOCAL_LIBADD) $(LOCAL_OBJS) $(OUR_OBJS) $(MODDIR)/$(SOURCEFILE) $(MODNAME).lo
|
||||
@echo Creating $@...
|
||||
@test -d .libs || mkdir .libs
|
||||
@error="";\
|
||||
|
|
|
@ -29,6 +29,13 @@
|
|||
<profiles>
|
||||
<!--If no profile is specified it will default to "default"-->
|
||||
<profile name="default">
|
||||
<!-- Directory to drop CDR's
|
||||
'auto' means $PREFIX/logs/conference_cdr/<confernece_uuid>.cdr.xml
|
||||
a non-absolute path means $PREFIX/logs/<value>/<confernece_uuid>.cdr.xml
|
||||
absolute path means <value>/<confernece_uuid>.cdr.xml
|
||||
-->
|
||||
<!-- <param name="cdr-log-dir" value="auto"/> -->
|
||||
|
||||
<!-- Domain (for presence) -->
|
||||
<param name="domain" value="$${domain}"/>
|
||||
<!-- Sample Rate-->
|
||||
|
@ -45,6 +52,8 @@
|
|||
|
||||
<!-- Name of the caller control group to use for this profile -->
|
||||
<!-- <param name="caller-controls" value="some name"/> -->
|
||||
<!-- Name of the caller control group to use for the moderator in this profile -->
|
||||
<!-- <param name="moderator-controls" value="some name"/> -->
|
||||
<!-- TTS Engine to use -->
|
||||
<!--<param name="tts-engine" value="cepstral"/>-->
|
||||
<!-- TTS Voice to use -->
|
||||
|
@ -87,6 +96,9 @@
|
|||
<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
|
||||
<!-- Conference pin -->
|
||||
<!--<param name="pin" value="12345"/>-->
|
||||
<!--<param name="moderator-pin" value="54321"/>-->
|
||||
<!-- Max number of times the user can be prompted for PIN -->
|
||||
<!--<param name="pin-retries" value="3"/>-->
|
||||
<!-- Default Caller ID Name for outbound calls -->
|
||||
<param name="caller-id-name" value="$${outbound_caller_name}"/>
|
||||
<!-- Default Caller ID Number for outbound calls -->
|
||||
|
@ -100,6 +112,12 @@
|
|||
<!--
|
||||
<param name="auto-record" value="$${recordings_dir}/${conference_name}_${strftime(%Y-%m-%d-%H-%M-%S)}.wav"/>
|
||||
-->
|
||||
|
||||
<!-- IVR digit machine timeouts -->
|
||||
<!-- How much to wait between DTMF digits to match caller-controls -->
|
||||
<!-- <param name="ivr-dtmf-timeout" value="500"/> -->
|
||||
<!-- How much to wait for the first DTMF, 0 forever -->
|
||||
<!-- <param name="ivr-input-timeout" value="0" /> -->
|
||||
</profile>
|
||||
|
||||
<profile name="wideband">
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
<configuration name="http_cache.conf" description="HTTP GET cache">
|
||||
<settings>
|
||||
<param name="max-urls" value="10000"/>
|
||||
<param name="location" value="$${base_dir}/http_cache"/>
|
||||
<param name="default-max-age" value="86400"/>
|
||||
</settings>
|
||||
</configuration>
|
||||
|
|
@ -97,6 +97,7 @@
|
|||
|
||||
<!-- Timers -->
|
||||
<!-- <load module="mod_timerfd"/> -->
|
||||
<!-- <load module="mod_posix_timer"/> -->
|
||||
|
||||
<!-- Languages -->
|
||||
<load module="mod_spidermonkey"/>
|
||||
|
|
|
@ -47,11 +47,7 @@
|
|||
<!-- OSP service type, voice or npquery -->
|
||||
<param name="service-type" value="voice"/>
|
||||
<!-- Max number of destinations -->
|
||||
<param name="max-destinations" value="5"/>
|
||||
|
||||
<!-- SIP features -->
|
||||
<!-- Add "user=phone" URI parameter in outbound SIP messages -->
|
||||
<param name="user-phone" value="disabled"/>
|
||||
<param name="max-destinations" value="12"/>
|
||||
</profile>
|
||||
</profiles>
|
||||
</configuration>
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
<configuration name="presence_map.conf" description="PRESENCE MAP">
|
||||
<domains>
|
||||
<domain name="$${domain}">
|
||||
<exten regex="3\d+" proto="conf"/>
|
||||
</domain>
|
||||
</domains>
|
||||
</configuration>
|
|
@ -1,5 +1,40 @@
|
|||
<configuration name="spandsp.conf" description="Tone detector descriptors">
|
||||
<descriptors>
|
||||
<configuration name="spandsp.conf" description="SpanDSP config">
|
||||
<modem-settings>
|
||||
<!--
|
||||
total-modems set to N will create that many soft-modems.
|
||||
If you use them with Hylafax you need the following for each one numbered 0..N:
|
||||
|
||||
1) A line like this in /etc/inittab:
|
||||
|
||||
f0:2345:respawn:/usr/lib/fax/faxgetty /dev/FS0
|
||||
|
||||
2) copy conf/config.FS0 to /var/spool/hylafax/etc (or wherver the appropriate dir is on your system)
|
||||
|
||||
Subsequent modem configs would incrment the 0 to 1 and so on.
|
||||
|
||||
-->
|
||||
<param name="total-modems" value="0"/>
|
||||
|
||||
<!-- Default context and dialplan to use on inbound calls from the modems -->
|
||||
<param name="context" value="default"/>
|
||||
<param name="dialplan" value="XML"/>
|
||||
|
||||
<!-- Extra tracing for debugging -->
|
||||
<param name="verbose" value="false"/>
|
||||
</modem-settings>
|
||||
|
||||
<fax-settings>
|
||||
<param name="use-ecm" value="true"/>
|
||||
<param name="verbose" value="false"/>
|
||||
<param name="disable-v17" value="false"/>
|
||||
<param name="ident" value="SpanDSP Fax Ident"/>
|
||||
<param name="header" value="SpanDSP Fax Header"/>
|
||||
|
||||
<param name="spool-dir" value="/tmp"/>
|
||||
<param name="file-prefix" value="faxrx"/>
|
||||
</fax-settings>
|
||||
|
||||
<descriptors>
|
||||
|
||||
<!-- These tones are defined in Annex to ITU Operational Bulletin No. 781 - 1.II.2003 -->
|
||||
<!-- Various Tones Used in National Networks (According to ITU-T Recommendation E.180)(03/1998) -->
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
<!-- true or false if a leg files are prefixed "a_" -->
|
||||
<param name="prefix-a-leg" value="true"/>
|
||||
|
||||
<!-- encode the post data may be 'true' for url encoding, 'false' for no encoding or 'base64' for base64 encoding -->
|
||||
<!-- encode the post data may be 'true' for url encoding, 'false' for no encoding, 'base64' for base64 encoding or 'textxml' for text/xml -->
|
||||
<param name="encode" value="true"/>
|
||||
|
||||
<!-- optional: set to true to disable Expect: 100-continue lighttpd requires this setting -->
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
CountryCode: 1
|
||||
AreaCode: 800
|
||||
FAXNumber: +1.800.555.1212
|
||||
LongDistancePrefix: 1
|
||||
InternationalPrefix: 011
|
||||
DialStringRules: etc/dialrules
|
||||
ServerTracing: 0xFFF
|
||||
SessionTracing: 0xFFF
|
||||
RecvFileMode: 0600
|
||||
LogFileMode: 0600
|
||||
DeviceMode: 0600
|
||||
RingsBeforeAnswer: 1
|
||||
SpeakerVolume: off
|
||||
GettyArgs: "-h %l dx_%s"
|
||||
LocalIdentifier: "FS"
|
||||
TagLineFont: etc/lutRS18.pcf
|
||||
TagLineFormat: "From %%l|%c|Page %%P of %%T"
|
||||
MaxRecvPages: 200
|
||||
#
|
||||
#
|
||||
# Modem-related stuff: should reflect modem command interface
|
||||
# and hardware connection/cabling (e.g. flow control).
|
||||
#
|
||||
ModemType: Class1 # use this to supply a hint
|
||||
|
||||
#
|
||||
# Enabling this will use the hfaxd-protocol to set Caller*ID
|
||||
#
|
||||
#ModemSetOriginCmd: AT+VSID="%s","%d"
|
||||
|
||||
#
|
||||
# If "glare" during initialization becomes a problem then take
|
||||
# the modem off-hook during initialization, and then place it
|
||||
# back on-hook when done.
|
||||
#
|
||||
#ModemResetCmds: "ATH1\nAT+VCID=1" # enables CallID display
|
||||
#ModemReadyCmds: ATH0
|
||||
|
||||
Class1AdaptRecvCmd: AT+FAR=1
|
||||
Class1TMConnectDelay: 400 # counteract quick CONNECT response
|
||||
|
||||
#
|
||||
# If you have trouble with V.17 receiving or sending,
|
||||
# you may want to enable one of these, respectively.
|
||||
#
|
||||
#Class1RMQueryCmd: "!24,48,72,96" # enable this to disable V.17 receiving
|
||||
#Class1TMQueryCmd: "!24,48,72,96" # enable this to disable V.17 sending
|
||||
|
||||
#
|
||||
# You'll likely want Caller*ID display (also displays DID) enabled.
|
||||
#
|
||||
ModemResetCmds: AT+VCID=1 # enables CallID display
|
||||
|
||||
#
|
||||
# The pty does not support changing parity.
|
||||
#
|
||||
PagerTTYParity: none
|
||||
|
||||
#
|
||||
# If you are "missing" Caller*ID data on some calls (but not all)
|
||||
# and if you do not have adequate glare protection you may want to
|
||||
# not answer based on RINGs, but rather enable the CallIDAnswerLength
|
||||
# for NDID, disable AT+VCID=1 and do this:
|
||||
#
|
||||
#RingsBeforeAnswer: 0
|
||||
#ModemRingResponse: AT+VRID=1
|
||||
|
||||
# Uncomment DATE and TIME if you really want them, but you probably don't.
|
||||
#CallIDPattern: "DATE="
|
||||
#CallIDPattern: "TIME="
|
||||
CallIDPattern: "NMBR="
|
||||
CallIDPattern: "NAME="
|
||||
CallIDPattern: "ANID="
|
||||
#CallIDPattern: "USER=" # username provided by call
|
||||
#CallIDPattern: "PASS=" # password provided by call
|
||||
#CallIDPattern: "CDID=" # DID context in call
|
||||
CallIDPattern: "NDID="
|
||||
#CallIDAnswerLength: 4
|
|
@ -181,7 +181,7 @@
|
|||
<extension name="eavesdrop">
|
||||
<condition field="destination_number" expression="^88(\d{4})$|^\*0(.*)$">
|
||||
<action application="answer"/>
|
||||
<action application="eavesdrop" data="${hash(select/${domain_name}-spymap/$1)}"/>
|
||||
<action application="eavesdrop" data="${hash(select/${domain_name}-spymap/$1$2)}"/>
|
||||
</condition>
|
||||
</extension>
|
||||
|
||||
|
@ -244,7 +244,6 @@
|
|||
-->
|
||||
<extension name="Local_Extension">
|
||||
<condition field="destination_number" expression="^(10[01][0-9])$">
|
||||
<action application="set" data="dialed_extension=$1"/>
|
||||
<action application="export" data="dialed_extension=$1"/>
|
||||
<!-- bind_meta_app can have these args <key> [a|b|ab] [a|b|o|s] <app> -->
|
||||
<action application="bind_meta_app" data="1 b s execute_extension::dx XML features"/>
|
||||
|
@ -260,9 +259,9 @@
|
|||
<action application="set" data="continue_on_fail=true"/>
|
||||
<action application="hash" data="insert/${domain_name}-call_return/${dialed_extension}/${caller_id_number}"/>
|
||||
<action application="hash" data="insert/${domain_name}-last_dial_ext/${dialed_extension}/${uuid}"/>
|
||||
<action application="set" data="called_party_callgroup=${user_data(${dialed_extension}@${domain_name} var callgroup)}"/>
|
||||
<action application="hash" data="insert/${domain_name}-last_dial_ext/${called_party_callgroup}/${uuid}"/>
|
||||
<action application="hash" data="insert/${domain_name}-last_dial_ext/global/${uuid}"/>
|
||||
<action application="set" data="called_party_callgroup=${user_data(${dialed_extension}@${domain_name} var callgroup)}"/>
|
||||
<!--<action application="export" data="nolocal:sip_secure_media=${user_data(${dialed_extension}@${domain_name} var sip_secure_media)}"/>-->
|
||||
<action application="hash" data="insert/${domain_name}-last_dial/${called_party_callgroup}/${uuid}"/>
|
||||
<action application="bridge" data="user/${dialed_extension}@${domain_name}"/>
|
||||
|
|
|
@ -82,4 +82,25 @@
|
|||
</input>
|
||||
</macro>
|
||||
|
||||
<macro name="screen_confirm">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="sleep" data="500"/>
|
||||
<action function="play-file" data="ivr/ivr-call_from.wav"/>
|
||||
<action function="sleep" data="250"/>
|
||||
<!-- Note, be sure to pass in the full path to the file or else!! -->
|
||||
<action function="play-file" data="$1"/>
|
||||
<action function="sleep" data="500"/>
|
||||
<action function="play-file" data="ivr/ivr-accept_reject_voicemail.wav"/>
|
||||
<action function="sleep" data="1500"/>
|
||||
<action function="play-file" data="ivr/ivr-call_from.wav"/>
|
||||
<action function="sleep" data="250"/>
|
||||
<action function="play-file" data="$1"/>
|
||||
<action function="sleep" data="500"/>
|
||||
<action function="play-file" data="ivr/ivr-accept_reject_voicemail.wav"/>
|
||||
<action function="sleep" data="1500"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
||||
</include>
|
||||
|
|
|
@ -365,7 +365,7 @@
|
|||
<macro name="voicemail_say_date">
|
||||
<input pattern="^(.*)$">
|
||||
<match>
|
||||
<action function="say" data="$1" method="pronounced" type="current_date_time"/>
|
||||
<action function="say" data="$1" method="pronounced" type="short_date_time"/>
|
||||
</match>
|
||||
</input>
|
||||
</macro>
|
||||
|
|
|
@ -23,6 +23,8 @@
|
|||
<param name="sip-trace" value="no"/>
|
||||
<param name="sip-capture" value="no"/>
|
||||
<param name="rfc2833-pt" value="101"/>
|
||||
<!-- RFC 5626 : Send reg-id and sip.instance -->
|
||||
<!--<param name="enable-rfc-5626" value="true"/> -->
|
||||
<param name="sip-port" value="$${external_sip_port}"/>
|
||||
<param name="dialplan" value="XML"/>
|
||||
<param name="context" value="public"/>
|
||||
|
|
|
@ -31,4 +31,8 @@
|
|||
<!--send an options ping every x seconds, failure will unregister and/or mark it down-->
|
||||
<!--<param name="ping" value="25"/>-->
|
||||
<!--</gateway>-->
|
||||
<!--rfc5626 : Abilitazione rfc5626 ///-->
|
||||
<!--<param name="rfc-5626" value="true"/>-->
|
||||
<!--rfc5626 : extra sip params to send in the contact-->
|
||||
<!--<param name="reg-id" value="1"/>-->
|
||||
</include>
|
||||
|
|
|
@ -43,6 +43,9 @@
|
|||
<!-- <param name="shutdown-on-fail" value="true"/> -->
|
||||
<param name="sip-trace" value="no"/>
|
||||
<param name="sip-capture" value="no"/>
|
||||
|
||||
<!-- Use presence_map.conf.xml to convert extension regex to presence protos for routing -->
|
||||
<!-- <param name="presence-proto-lookup" value="true"/> -->
|
||||
|
||||
|
||||
<!-- Don't be picky about negotiated DTMF just always offer 2833 and accept both 2833 and INFO -->
|
||||
|
@ -70,7 +73,7 @@
|
|||
<param name="watchdog-step-timeout" value="30000"/>
|
||||
<param name="watchdog-event-timeout" value="30000"/>
|
||||
|
||||
<param name="log-auth-failures" value="true"/>
|
||||
<param name="log-auth-failures" value="false"/>
|
||||
<param name="forward-unsolicited-mwi-notify" value="false"/>
|
||||
|
||||
<param name="context" value="public"/>
|
||||
|
@ -154,6 +157,7 @@
|
|||
<!-- Name of the db to use for this profile -->
|
||||
<!--<param name="dbname" value="share_presence"/>-->
|
||||
<param name="presence-hosts" value="$${domain},$${local_ip_v4}"/>
|
||||
<param name="presence-privacy" value="$${presence_privacy}"/>
|
||||
<!-- ************************************************* -->
|
||||
|
||||
<!-- This setting is for AAL2 bitpacking on G726 -->
|
||||
|
|
|
@ -199,6 +199,10 @@
|
|||
<X-PRE-PROCESS cmd="set" data="default_areacode=918"/>
|
||||
<X-PRE-PROCESS cmd="set" data="default_country=US"/>
|
||||
|
||||
<!-- if false or undefined, the destination number is included in presence NOTIFY dm:note.
|
||||
if true, the destination number is not included -->
|
||||
<X-PRE-PROCESS cmd="set" data="presence_privacy=false"/>
|
||||
|
||||
<X-PRE-PROCESS cmd="set" data="be-ring=%(1000,3000,425)"/>
|
||||
<X-PRE-PROCESS cmd="set" data="ca-ring=%(2000,4000,440,480)"/>
|
||||
<X-PRE-PROCESS cmd="set" data="cn-ring=%(1000,4000,450)"/>
|
||||
|
|
70
configure.in
70
configure.in
|
@ -40,10 +40,10 @@ AC_DEFINE_UNQUOTED([SWITCH_MOD_DIR],"${modulesdir}",[where to install the module
|
|||
|
||||
if test "$localstatedir" = "\${prefix}/var" ; then
|
||||
rundir="$prefix/run"
|
||||
logfiledir="${prefix}/log"
|
||||
logdir="${prefix}/log"
|
||||
else
|
||||
rundir="$localstatedir/run/freeswitch"
|
||||
logfiledir="$localstatedir/log/freeswitch"
|
||||
logdir="$localstatedir/log/freeswitch"
|
||||
fi
|
||||
# Where to put pidfile
|
||||
AC_ARG_WITH([rundir],
|
||||
|
@ -51,30 +51,38 @@ AC_ARG_WITH([rundir],
|
|||
AC_SUBST(runtimedir)
|
||||
AC_DEFINE_UNQUOTED([SWITCH_RUN_DIR],"${runtimedir}",[where to put pidfile to])
|
||||
|
||||
AC_ARG_WITH([logfiledir],
|
||||
[AS_HELP_STRING([--with-logfiledir=DIR], [Put logfiles into this location (default: $localstatedir/log)])], [logfiledir="$withval"], [logfiledir="$logdir"])
|
||||
AC_SUBST(logfiledir)
|
||||
AC_DEFINE_UNQUOTED([SWITCH_LOG_DIR],"${logfiledir}",[where to put log files])
|
||||
|
||||
dbdir="${prefix}/db"
|
||||
AC_ARG_WITH([dbdir],
|
||||
[AS_HELP_STRING([--with-dbdir=DIR], [Put database files into this location (default: $prefix/db)])], [dbdir="$withval"], [dbdir="$prefix/db"])
|
||||
AC_SUBST(dbdir)
|
||||
AC_DEFINE_UNQUOTED([SWITCH_DB_DIR],"${dbdir}",[where to put db files])
|
||||
|
||||
htdocsdir="${prefix}/htdocs"
|
||||
AC_ARG_WITH([htdocsdir],
|
||||
[AS_HELP_STRING([--with-htdocsdir=DIR], [Put html files into this location (default: $prefix/htdocs)])], [htdocsdir="$withval"], [htdocsdir="$prefix/htdocs"])
|
||||
AC_SUBST(htdocsdir)
|
||||
AC_DEFINE_UNQUOTED([SWITCH_HTDOCS_DIR],"${htdocsdir}",[where to put htdocs files])
|
||||
|
||||
soundsdir="${prefix}/sounds"
|
||||
AC_ARG_WITH([soundsdir],
|
||||
[AS_HELP_STRING([--with-soundsdir=DIR], [Put sound files into this location (default: $prefix/sounds)])], [soundsdir="$withval"], [soundsdir="$prefix/sounds"])
|
||||
AC_SUBST(soundsdir)
|
||||
AC_DEFINE_UNQUOTED([SWITCH_SOUNDS_DIR],"${soundsdir}",[where to put sounds files])
|
||||
|
||||
grammardir="${prefix}/grammar"
|
||||
AC_ARG_WITH([grammardir],
|
||||
[AS_HELP_STRING([--with-grammardir=DIR], [Put grammar files into this location (default: $prefix/grammar)])], [grammardir="$withval"], [grammardir="$prefix/grammar"])
|
||||
AC_SUBST(grammardir)
|
||||
AC_DEFINE_UNQUOTED([SWITCH_GRAMMAR_DIR],"${grammardir}",[where to put grammar files])
|
||||
|
||||
scriptdir="${prefix}/scripts"
|
||||
AC_ARG_WITH([scriptdir],
|
||||
[AS_HELP_STRING([--with-scriptdir=DIR], [Put script files into this location (default: $prefix/scripts)])], [scriptdir="$withval"], [scriptdir="$prefix/scripts"])
|
||||
AC_SUBST(scriptdir)
|
||||
AC_DEFINE_UNQUOTED([SWITCH_SCRIPT_DIR],"${scriptdir}",[where to put script files])
|
||||
|
||||
recordingsdir="${prefix}/recordings"
|
||||
AC_ARG_WITH([recordingsdir],
|
||||
[AS_HELP_STRING([--with-recordingsdir=DIR], [Put recordings files into this location (default: $prefix/recordings)])], [recordingsdir="$withval"], [recordingsdir="$prefix/recordings"])
|
||||
AC_SUBST(recordingsdir)
|
||||
AC_DEFINE_UNQUOTED([SWITCH_RECORDINGS_DIR],"${recordingsdir}",[where to put recording files])
|
||||
|
||||
|
@ -407,7 +415,8 @@ APR_ADDTO(SWITCH_AM_LDFLAGS, -lresolv)
|
|||
fi
|
||||
|
||||
ESL_LDFLAGS=
|
||||
PLATFORM_CORE_DEPLIBS=
|
||||
PLATFORM_CORE_LDFLAGS=
|
||||
PLATFORM_CORE_LIBS=
|
||||
# tweak platform specific flags
|
||||
case "$host" in
|
||||
*darwin10.*)
|
||||
|
@ -417,23 +426,30 @@ case "$host" in
|
|||
APR_ADDTO(CXXFLAGS, -pipe)
|
||||
APR_REMOVEFROM(SWITCH_AM_CFLAGS, -fPIC)
|
||||
if test "x$enable_core_odbc_support" != "xno"; then
|
||||
APR_ADDTO(PLATFORM_CORE_DEPLIBS, --framework CoreFoundation)
|
||||
APR_ADDTO([PLATFORM_CORE_LDFLAGS], [--framework CoreFoundation])
|
||||
fi
|
||||
APR_ADDTO([PLATFORM_CORE_LIBS], [-ldl])
|
||||
;;
|
||||
*darwin*)
|
||||
APR_ADDTO(SWITCH_AM_CFLAGS, -DMACOSX)
|
||||
APR_REMOVEFROM(SWITCH_AM_CFLAGS, -fPIC)
|
||||
if test "x$enable_core_odbc_support" != "xno"; then
|
||||
APR_ADDTO(PLATFORM_CORE_DEPLIBS, --framework CoreFoundation)
|
||||
APR_ADDTO([PLATFORM_CORE_LDFLAGS], [--framework CoreFoundation])
|
||||
fi
|
||||
APR_ADDTO([PLATFORM_CORE_LIBS], [-ldl])
|
||||
;;
|
||||
*-solaris2*)
|
||||
APR_ADDTO(SWITCH_AM_CFLAGS, -DPATH_MAX=2048 -D__EXTENSIONS__)
|
||||
APR_ADDTO(SWITCH_AM_LDFLAGS, -lsendfile -lresolv -lsocket -lnsl -luuid)
|
||||
APR_ADDTO(ESL_LDFLAGS, -lnsl -lsocket)
|
||||
APR_ADDTO([PLATFORM_CORE_LIBS], [-ldl -lcrypt -lrt -lsendfile -lresolv -lsocket -lnsl -luuid])
|
||||
;;
|
||||
*bsd*)
|
||||
APR_ADDTO(SWITCH_AM_CFLAGS, -I/usr/local/include)
|
||||
APR_ADDTO([PLATFORM_CORE_LIBS], [-lcrypt -lrt])
|
||||
;;
|
||||
*linux*)
|
||||
APR_ADDTO([PLATFORM_CORE_LIBS], [-ldl -lcrypt -lrt])
|
||||
;;
|
||||
esac
|
||||
|
||||
|
@ -444,7 +460,8 @@ AC_SUBST(SWITCH_ANSI_CFLAGS)
|
|||
AC_SUBST(SWITCH_AM_CXXFLAGS)
|
||||
AC_SUBST(SWITCH_AM_LDFLAGS)
|
||||
AC_SUBST(ESL_LDFLAGS)
|
||||
AC_SUBST(PLATFORM_CORE_DEPLIBS)
|
||||
AC_SUBST(PLATFORM_CORE_LDFLAGS)
|
||||
AC_SUBST(PLATFORM_CORE_LIBS)
|
||||
AC_SUBST(SOLINK)
|
||||
AC_SUBST(DYNAMIC_LIB_EXTEN)
|
||||
AC_SUBST(LIBTOOL_LIB_EXTEN)
|
||||
|
@ -474,7 +491,7 @@ AC_PROG_GCC_TRADITIONAL
|
|||
AC_FUNC_MALLOC
|
||||
AC_TYPE_SIGNAL
|
||||
AC_FUNC_STRFTIME
|
||||
AC_CHECK_FUNCS([gethostname vasprintf mmap mlock mlockall usleep getifaddrs timerfd_create getdtablesize])
|
||||
AC_CHECK_FUNCS([gethostname vasprintf mmap mlock mlockall usleep getifaddrs timerfd_create getdtablesize posix_openpt])
|
||||
AC_CHECK_FUNCS([sched_setscheduler setpriority setrlimit setgroups initgroups])
|
||||
AC_CHECK_FUNCS([wcsncmp setgroups asprintf setenv pselect gettimeofday localtime_r gmtime_r strcasecmp stricmp _stricmp])
|
||||
|
||||
|
@ -485,6 +502,9 @@ AC_CHECK_LIB(rt, clock_getres, [AC_DEFINE(HAVE_CLOCK_GETRES, 1, [Define if you h
|
|||
AC_CHECK_LIB(rt, clock_nanosleep, [AC_DEFINE(HAVE_CLOCK_NANOSLEEP, 1, [Define if you have clock_nanosleep()])])
|
||||
AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket))
|
||||
|
||||
AC_CHECK_FILE(/dev/ptmx, [AC_DEFINE(HAVE_DEV_PTMX, 1, [Define if you have /dev/ptmx])])
|
||||
AC_CHECK_LIB(util, openpty, [AC_DEFINE(HAVE_OPENPTY, 1, [Define if you have openpty()])])
|
||||
|
||||
AC_CHECK_MEMBERS([struct tm.tm_gmtoff],,,[
|
||||
#include <sys/types.h>
|
||||
#include <time.h>])
|
||||
|
@ -764,6 +784,8 @@ case $host in
|
|||
;;
|
||||
esac
|
||||
|
||||
AC_PATH_PROGS(BZIP, bzip2)
|
||||
AC_PATH_PROGS(XZ, xz)
|
||||
AC_PATH_PROGS(TAR, gtar tar)
|
||||
AC_PATH_PROGS(WGET, wget)
|
||||
AC_PATH_PROGS(CURL, curl)
|
||||
|
@ -792,12 +814,29 @@ if test "$_libcurl_with" = "yes" ; then
|
|||
ac_cv_use_system_curl=yes;
|
||||
fi
|
||||
|
||||
if test "$ac_cv_use_system_curl" = "yes" ; then
|
||||
AC_CACHE_CHECK([whether to use system libcurl library], [ac_cv_curl_usable], [
|
||||
AC_CHECK_LIB(curl, Curl_setopt, [ac_cv_curl_usable="yes"], [ac_cv_curl_usable="no"])
|
||||
])
|
||||
fi
|
||||
|
||||
if test "$ac_cv_curl_usable" != "yes" ; then
|
||||
ac_cv_use_system_curl=no;
|
||||
fi
|
||||
|
||||
if test "$ac_cv_use_system_curl" != "yes" ; then
|
||||
LIBCURL_DEPS='${switch_builddir}/libs/curl/lib/libcurl.la'
|
||||
LIBCURL='${switch_builddir}/libs/curl/lib/libcurl.la'
|
||||
LIBCURL_CPPFLAGS='-I${switch_srcdir}/libs/curl/include'
|
||||
else
|
||||
SWITCH_AM_LDFLAGS="$LIBCURL $SWITCH_AM_LDFLAGS"
|
||||
fi
|
||||
|
||||
SWITCH_AM_CFLAGS="$LIBCURL_CPPFLAGS $SWITCH_AM_CFLAGS"
|
||||
SWITCH_AM_CXXFLAGS="$LIBCURL_CPPFLAGS $SWITCH_AM_CXXFLAGS"
|
||||
|
||||
AM_CONDITIONAL([CURL_BUILTIN],[test "${ac_cv_use_system_curl}" != "yes"])
|
||||
|
||||
AC_SUBST(LIBCURL_DEPS)
|
||||
|
||||
|
||||
|
@ -1031,10 +1070,7 @@ AC_CONFIG_SUBDIRS([libs/pcre])
|
|||
AC_CONFIG_SUBDIRS([libs/apr])
|
||||
AC_CONFIG_SUBDIRS([libs/apr-util])
|
||||
AC_CONFIG_SUBDIRS([libs/ilbc])
|
||||
|
||||
if test "$ac_cv_use_system_curl" != "yes" ; then
|
||||
AC_CONFIG_SUBDIRS([libs/curl])
|
||||
fi
|
||||
AC_CONFIG_SUBDIRS([libs/curl])
|
||||
AC_CONFIG_SUBDIRS([libs/iksemel])
|
||||
AC_CONFIG_SUBDIRS([libs/js/nsprpub])
|
||||
AC_CONFIG_SUBDIRS([libs/js])
|
||||
|
|
106
docs/ChangeLog
106
docs/ChangeLog
|
@ -30,6 +30,7 @@ freeswitch (1.0.7)
|
|||
build: They no longer ship the wsj model in pocketsphinx... and seems the dictionary has moved a bit. (r:23571680)
|
||||
build: unimrcp vs2010 build fixes for new version (r:2dcca5f4)
|
||||
build: add sqlite to clean on make current or update-clean (r:2366f429)
|
||||
build: Update windows to use Lame 3.98.4 (r:4349ec00)
|
||||
codec2: working prototype, still for testing only (r:04ca0751)
|
||||
config: move limit.conf to db.conf
|
||||
config: Update VM phrase macros to voice option then action on main, config menus
|
||||
|
@ -55,6 +56,7 @@ freeswitch (1.0.7)
|
|||
config: Add ivr/ subdir to conf/lang/en/en.xml (r:42f10a48)
|
||||
config: Fix mod_directory phrase file references to 'dir-press.wav' (correct: vm-press) (r:3ef2692f)
|
||||
config: bump ru sounds version to 1.0.13 (r:2b1b19bf)
|
||||
config: Fix eavesdrop so that *0 works as well as 88 as the access code (r:cbfe83cc)
|
||||
core: Add RTCP support (FSRTP-14)
|
||||
core: handle some errors on missing db handle conditions
|
||||
core: add ... and shutdown as a fail-safe when no modules are loaded
|
||||
|
@ -309,6 +311,31 @@ freeswitch (1.0.7)
|
|||
core: fix event firing for CHANNEL_PROGRESS_MEDIA event (r:e2a4fb11/FS-3396)
|
||||
core: add emulation for asterisk DIALSTATUS magic var (r:9d98d49f)
|
||||
core: the new code requires accurate timestamps, we were incrementing it by the interval (20) instead of the samples (160) (r:f10566af/FS-3181)
|
||||
core: pass cancel_cause into enterprise_originate (r:2e9724d2)
|
||||
core: add support for global namespace in chat interface to bind to unhandled messages (r:6dd1264d)
|
||||
core: resolve Syntax Error when using MSSQL in core (r:40990c04/FS-3527)
|
||||
core: add RTP_BUG_ACCEPT_ANY_PACKETS to disable dropping invalid packets for interop with Oracle CCA (r:aea22cd4)
|
||||
core: yield when doing b64 encode to avoid stealing the cpu on single proc crappy hardware (r:7d612da4)
|
||||
core: DTMF stands for Devil Took My Fone (r:0c066f06)
|
||||
core: add callee_id name/number to xml_cdr (r:bcd1e147)
|
||||
core: add new flag to frames to denote pass thru frames that are not audio (r:cb9abe02)
|
||||
core: change -hp to -rp, add -lp and -np, no priority flags means auto which will do -rp if you have > 1 cpu (r:c1dd008b)
|
||||
core: only reap sigchld when in fork mode for system (r:1e712c7e)
|
||||
core: Add application flag zombie_exec so registered applications can apply to be executed on channels that are already hungup, like the inline exec this is only limited to a small family of apps that do not use the channel for audio. (r:637a5ed8)
|
||||
core: do not escape strings inside single quotes unless we can find a closing quote too (r:b4b99c41)
|
||||
core: convert chat interface to use events instead of a bunch of args (r:9125a96c)
|
||||
core: make app to turn on new zombie exec instead of always doing it (r:3a2f8183)
|
||||
core: fix inaccurate sample count in file handle, buffered samples were being double tallied (r:5fe3a22d)
|
||||
core: prevent sql injection by using sqlite formatter on various code that generates sql stmts with switch_snprintf (r:256a6264)
|
||||
core: add ivr_menu_terminator variable you can set to none or the dtmf chars you want to terminate input (r:0a3e5d2f)
|
||||
core: delay_echo was double the length in milliseconds from what it should be (r:3317f5d3)
|
||||
core: fix issue where clearing a single realm does not completely clear (r:d2710422)
|
||||
core: add manual_rtp_bug gen_one_gen_all to prevent rtp passthru to break the *S* word.. (r:9e094835)
|
||||
core: Add transfer_history to logs (r:1bf97fa7)
|
||||
core: add fsctl sync_clock_when_idle so you can sync the clock but have it not do it till there are 0 calls (r:2094f2d3)
|
||||
core: add getGlobalVariable and setGlobalVariable to swig stuff (r:2faaee0e)
|
||||
core: Fix erroneous "module busy" messages on module unload (r:bad5964b/FS-3589)
|
||||
core: move code from uuid_kill into core (r:3c9551ee)
|
||||
docs: Major clean up of doxygen generated core API documentation (r:794246e1)
|
||||
docs: Add libteletone back to core API documentation (r:c35c138d)
|
||||
embedded languages: Provide core level support for conditional Set Global Variable (r:c017c24b/FSCORE-612)
|
||||
|
@ -320,6 +347,10 @@ freeswitch (1.0.7)
|
|||
fs_cli: let ctl-c work until you are connected (r:986f258d)
|
||||
fs_cli: add -i --interrupt to fs_cli to allow control-c to exit the program (r:e7b3c3b1)
|
||||
fs_cli: add timeout option to fs_cli (r:5fad26b4)
|
||||
fs_cli: implement CLI prompt redrawing (r:a79f1f42) (many other minor changes by TC on 2011-09-22)
|
||||
fs_cli: implement configurable prompt, input, and output coloring (r:c7ec19d6)
|
||||
fs_cli: allow ;; seperated commands in fs_cli -x (r:cbc92936)
|
||||
fs_cli: only enable new features on supported terminals (r:26cd927c)
|
||||
lang: Improve French phrase files (FSCONFIG-23)
|
||||
lang: Update langs - Add pt_PT, update es to have es_ES and es_MX, update mod_say_es and add mod_say_pt (FS-2937) (r:c81a9448/FS-2937)
|
||||
libapr: Fix issue where after a bridge with a member, uuid of Agent is set to single quote character ' (r:3fee704d/FS-2738)
|
||||
|
@ -327,6 +358,7 @@ freeswitch (1.0.7)
|
|||
libdingaling: Fix crash in new GV interface when exceeding 24 calls (r:be00609a/FS-2171)
|
||||
libdingaling: fix crash when GV call ends (r:687140b5/FS-3139)
|
||||
libdingaling: fix small leak (r:d3ea42d8/FS-3334)
|
||||
libdingaling: send keep alive packets to prevent NAT from munging connection (thanks Federico Beffa) (r:4bd305e5/FS-3612)
|
||||
libesl: Fix potential race condition (ESL-36)
|
||||
libesl: Add /uuid command to fs_cli to filter logs by uuid
|
||||
libesl: Increase buffer in fs_cli for Win (r:d1d6be88/FSCORE-611)
|
||||
|
@ -358,11 +390,14 @@ freeswitch (1.0.7)
|
|||
libesl: Add digit_timeout to ESL::IVR's playAndGetDigits method (r:f564d383)
|
||||
libesl: add array manipulation to the wraper code (r:ffa0a071)
|
||||
libesl: fix mem leak - good catch, Jlenk! (r:e420e17f/FS-3386)
|
||||
libesl: add sendmsg function to esl (r:2ae688a3)
|
||||
libfreetdm: implemented freetdm config nodes and ss7 initial configuration
|
||||
libfreetdm: fix codec for CAS signaling (r:b76e7f18)
|
||||
libfreetdm: freetdm: ss7- added support for incoming group blocks, started adding support for ansi (r:c219a73c)
|
||||
libfreetdm: receive side, update libteletone to track duration so it is less likely to double detect and push api changes down to freetdm (r:a65794fb/FS-3570)
|
||||
libg7221: A bunch of tweaks to the G.722.1 codec (r:5d548570)
|
||||
libgnutls: link to libgcrypt as well, please report any platforms this breaks, but it should be portable (r:c569fb0f/FS-1248)
|
||||
libiksemel: making this the new default and patching libdingaling to use it exclusively with openssl, now we actually have single thread for gtalk an no gah noodlez (r:f506e19e/FS-3471)
|
||||
libjs: non-portable comment syntax in .s files
|
||||
libldns: select on FD > 1024 get this patch to ldns ppl (r:710fc7a7/FS-3110)
|
||||
libopenzap: Add CLI tracing
|
||||
|
@ -402,6 +437,11 @@ freeswitch (1.0.7)
|
|||
mod_avmd: Initial check in - Advanced Voicemail Detect (r:10c6a30a) (by Eric Des Courtis)
|
||||
mod_avmd: Add to windows build (r:df4bd935)
|
||||
mod_avmd: Fix mem leak (r:cd951384/FS-2839)
|
||||
mod_blacklist: Add mod_blacklist from contrib. (r:3a477c42)
|
||||
mod_blacklist: Add example configuration file (r:d00f7464)
|
||||
mod_blacklist: Resource leak fixes, config checks and add help output for api interface (r:41abb3e6)
|
||||
mod_blacklist: add ability to dump a list back to it's text file (r:1d5f5ec7)
|
||||
mod_blacklist: fix broken dump/save (r:abc5d7cd/FS-3617)
|
||||
mod_callcenter: Initial commit of the mod_callcenter application. This module is in it early state of developpement. You can see documentation on the wiki at : <a href="http://wiki.freeswitch.org/wiki/Mod_callcenter">http://wiki.freeswitch.org/wiki/Mod_callcenter</a> For support/comments, please use <a href="http://jira.freeswitch.org/">http://jira.freeswitch.org/</a> and select the MOD CALLCENTER module. (r:ba09b96d)
|
||||
mod_callcenter: Add ability to unload/reload/load a queue setting (You still need to reloadxml before). Note that joining a queue will check for it in the config and load it on the fly... I've used the same system as in mod_voicemail. Not sure if we should allow this, but just comment it out of the config before unload and it wont be available anymore (r:3eafca60)
|
||||
mod_callcenter: Try to fix the ring-all, also add cli auto complete done in previous commit (r:1666783c)
|
||||
|
@ -438,6 +478,7 @@ freeswitch (1.0.7)
|
|||
mod_callcenter: New strategies: round-robin, random, and 'top-down' (r:2b4b23aa,r:bee247ca)
|
||||
mod_callcenter: Display an warning when MOH is invalid and resume wait with silence. (r:37b14c9a/FS-2740)
|
||||
mod_callcenter: Fix member been switch as abandoned when he was pickup by an agent (r:9ff8f53f/FS-3281)
|
||||
mod_cdr_mongodb: add MongoDB CDR module (r:a9169199)
|
||||
mod_cdr_sqlite: initial commit (r:f625fe3b)
|
||||
mod_cdr_sqlite: config file for mod_cdr_sqlite (r:25bc8fe3)
|
||||
mod_cdr_sqlite: Drop transaction BEGIN/END around INSERT. We're only executing one command, and autocommit will automatically rollback if the INSERT fails. Sync state_handlers with mod_cdr_csv. Minor libpq fixups. (r:0f95b870)
|
||||
|
@ -473,6 +514,9 @@ freeswitch (1.0.7)
|
|||
mod_commands: fix crash when uuid_break all cannot find bonded uuid channel (r:69e61f76/FS-3468)
|
||||
mod_commands: fix uuid_dual_transfer for inline dialplan (r:5d84efc3/FS-3403)
|
||||
mod_commands: update show calls to show both 1 legged calls and bridged calls, also show bridged_calls for previous behaviour of show calls (r:c16c74d9)
|
||||
mod_commands: Add 'presence_data' field to 'show channels like xxx' list of fields. This makes anthm's trick mentioned on the mailing list even more handy. (r:4872e6ff)
|
||||
mod_commands: Update tab-complete for show cmd to include bridged_calls, detailed_calls, detailed_bridged_calls and removed distinct_channels (r:2fa8f110)
|
||||
mod_commands: add threaded-system-exec param and fsctl (set it to false to use fork) (r:910f5364)
|
||||
mod_conference: Fix reporting of volume up/down (MODAPP-419)
|
||||
mod_conference: add last talking time per member to conference xml list
|
||||
mod_conference: add terminate-on-silence conference param
|
||||
|
@ -514,6 +558,10 @@ freeswitch (1.0.7)
|
|||
mod_conference: add conference member flag nomoh (r:f35a6814)
|
||||
mod_conference: add hup command to conference (kick without the kick sound) (r:492db906)
|
||||
mod_conference: see H.264 iFrames (r:765be8c9/FS-3406)
|
||||
mod_conference: add moderator PIN controls (thanks Moy) (r:1936c2b0/FS-3493)
|
||||
mod_conference: remove waste flags from both conference and member and explicitly always send audio from conferences to avoid random interop issues and general discomfort these flags are now deprecated (r:5d77e789)
|
||||
mod_conference: add conference cdrs to mod_conference (r:127be02d)
|
||||
mod_conference: add custom kick sound to conference (r:8fde25cc)
|
||||
mod_curl: use method=post when post requested (r:c6a4ddd0/FSMOD-69)
|
||||
mod_db: fix stack corruption (MODAPP-407)
|
||||
mod_dialplan_xml: Add in the INFO log the caller id number when processing a request (Currenly only show the caller name) (r:e1df5e13)
|
||||
|
@ -525,6 +573,9 @@ freeswitch (1.0.7)
|
|||
mod_dingaling: use the login as message source when not in component mode. (chat_send) (r:58c28aab)
|
||||
mod_dingaling: fix mod_dingaling/iksemel/gnutls link error when using newer autotools (r:294b0779/FS-3182)
|
||||
mod_dingaling: fix segmentation fault on mod_dingaling when receiving a discovery from the server (r:2e651c8f/FS-3391)
|
||||
mod_dingaling: Remove unused but set variables GCC-4.6 -Wunused-but-set-variable (r:0f45b8ba/GCC-4)
|
||||
mod_dingaling: Add from_jid (r:f0b52ef7/FS-3611)
|
||||
mod_dingaling: autoflush durning bridge in dingaling (r:bd9317f2)
|
||||
mod_directory: Add variable directory_search_order to allow to search by first name by default is set to "first_name" (r:163ca31f)
|
||||
mod_directory: let mod_directory use non-XML dialplans (r:8895de1b)
|
||||
mod_distributor: Add mod_distributor to VS2010 - not built by default (r:bac79ba1)
|
||||
|
@ -549,6 +600,8 @@ freeswitch (1.0.7)
|
|||
mod_dptools: fix small leak in strftime (r:bbbd67ba)
|
||||
mod_dptools: resolve Heap corruption in strftime_api_function -thanks (r:707bd05b/FS-3417)
|
||||
mod_dptools: fix seg on user_recurse_variables reported on the mailing list (r:01b2bd04)
|
||||
mod_dptools: add digit_action_set_target app that can set the target (direction of the dtmf flow and subsequent channel who gets the events) to self or peer (bridged channel when possible) (r:cf9859ea)
|
||||
mod_dptools: get rid of digit_action_set target and add target,bind_target params to bind_digit_action (r:42b64ccd)
|
||||
mod_easyroute: Fix possible segfaults and memory leak during unload, and add new setting odbc-retries (r:7fbc47f8/FS-2973)
|
||||
mod_enum: switch mod_enum to use new portable in-tree version (r:2bbc37e3)
|
||||
mod_enum: fix race condition between ldns configure creating ldns/util.h and mod_enum (r:87884c5c)
|
||||
|
@ -562,6 +615,7 @@ freeswitch (1.0.7)
|
|||
mod_erlang_event: Rewrite XML fetch conditional wait to be more sane (Reported by James Aimonetti) (r:6941c6eb/FS-2775)
|
||||
mod_erlang_event: Don't urlencode events (and destroy an event after use) (r:4eccdfef)
|
||||
mod_erlang_event Add proper locking for the list of XML bindings (r:9fe440b2)
|
||||
mod_erlang_event: Fixed a memory leak, too short of connect times across data centers, a deadlock condition with the globals.bindings_rwlock not being released, a buffer overrun possibility or 4, and added the ability to send a body when injecting an event (r:994f9a8c)
|
||||
mod_event_multicast: make multicast loopback configurable (r:97a7668c/FS-3416)
|
||||
mod_event_socket: fix up other users of switch_event_xmlize() to use SWITCH_EVENT_NONE (r:d6eb7562)
|
||||
mod_event_socket: Fix small mem leaks (r:e4f90584/MODEVENT-68)
|
||||
|
@ -569,8 +623,12 @@ freeswitch (1.0.7)
|
|||
mod_event_socket: clear unique headers on event_socket filters (r:436413e0)
|
||||
mod_event_socket: Unlock mutex to prevent mortuus obfirmo (r:64bc1938/FS-3156/FS-3157)
|
||||
mod_event_socket: (and mod_erlang_event) make empty apply-inbound-acl config line not deny all (r:8ae9ab5d/FS-3034)
|
||||
mod_event_socket: allow duplicate headers to be parsed into events received on the wire (r:2b7a830d)
|
||||
mod_event_socket: add optional format string after myevent (r:7ed7f539)
|
||||
mod_event_socket: Allow ridiculously long commands over event socket (r:6bbde4e2/FS-3621)
|
||||
mod_event_zmq: Intitial mod_event_zmq code (r:4d554067)
|
||||
mod_event_zmq: Update download file from 2.1.3 to 2.1.4 (2.1.3 tar file is gone from zmq server) (r:0b780702)
|
||||
mod_event_zmq: Bump to zeromq-2.1.9 (r:3a352e67)
|
||||
mod_fifo: allow multiple dtmf to exit fifo, set fifo_caller_exit_key to specify which (MODAPP-420)
|
||||
mod_fifo: cancel outbound call if customer hangs up (r:cadb4d94)
|
||||
mod_fifo: add taking_calls param to fifo member add and config file (r:821488bf)
|
||||
|
@ -584,7 +642,10 @@ freeswitch (1.0.7)
|
|||
mod_fifo: don't seg in edge case error conditions (r:9ee13b72)
|
||||
mod_fifo: set tracking data before enabling hooks (r:34267869)
|
||||
mod_fifo: Fix fifo orbit timeout when not using a chime tested with and without chime (r:7fee1fd1)
|
||||
mod_fifo: Fix URI (r:26039c57/FS-3548)
|
||||
mod_fifo: add _continue_ value for fifo orbit exten that just means exit back to the next dp instruction (r:4d6ee827)
|
||||
mod_file_string: Fix segfault when using file string in conference (r:9c40e8e9/FS-3122)
|
||||
mod_flite: Update to flite 1.5.1 it should sound better now too (r:ecbd1db8)
|
||||
mod_freetdm: Fix for TON and NPI not passed through to channel variables on incoming calls
|
||||
mod_freetdm: add pvt data to freetdm channels fix fxs features (r:9d456900)
|
||||
mod_freetdm: export and import boost custom data (r:edb2d582)
|
||||
|
@ -647,6 +708,8 @@ freeswitch (1.0.7)
|
|||
mod_h323: move PTrace level set to FSH323EndPoint::Initialise. partially apply patch from from Peter Olsson, Remove UnLock() when TryLock() failed and DEBUG_RTP_PACKETS directiv e. (r:7b5803f7)
|
||||
mod_h323: set network_addr of caller profile to signaling ip address. (requested by Steven Ayre) (r:072bf5ad)
|
||||
mod_h323: fix race condition on destroying signaling thread in h323 library (r:c22aac0e)
|
||||
mod_h323: move the switch_rtp_request_port() call from the contructor to FSH323Connection::CreateRealTimeLogicalChannel() - fix rtp port leak. tnx to Peter Olsson. (r:6f4c4ea0)
|
||||
mod_http_cache: Initial commit of new module (thanks crienzo) (r:c51acfcc/FS-3597)
|
||||
mod_java: fix eventConsumer issue and add flush() method (r:7fd3aff6)
|
||||
mod_java: Allow user defined java methods to be called at startup and shutdown of JVM (r:1339e218/MODLANG-117)
|
||||
mod_json_cdr: Fix segfault in mod_json_cdr.c (r:f347698a/MODEVENT-66)
|
||||
|
@ -687,6 +750,7 @@ freeswitch (1.0.7)
|
|||
mod_managed: add additional support (r:5be58aac)
|
||||
mod_managed: add mono 2.8 patch file see FS-2774 (r:6a948bd9/FS-2774)
|
||||
mod_managed: resolve Memory leak in mod_managed by EventBinding and swig delete_switch_event (r:c6048134/FS-3381)
|
||||
mod_managed: upgrade mono to support 2.8 - MichaelGG (r:1dcac642/FS-2774)
|
||||
mod_mongo: New mod, initial commit; module for MongoDB (http://www.mongodb.org/) (r:dc6ca6f8/FS-3278)
|
||||
mod_mongo: add mapreduce API (r:7c5b5797/FS-3357)
|
||||
mod_mp4v: MP4V-ES passthru for washibechi on IRC
|
||||
|
@ -706,6 +770,7 @@ freeswitch (1.0.7)
|
|||
mod_opus: Use libtool archives for linking, add dependencies to fix parallel builds (r:74bbd4be)
|
||||
mod_osp: initial check (Open Settlement Protocol)
|
||||
mod_osp:Changed OSP TCP port from 1080 to 5045. (r:03abefdf)
|
||||
mod_perl: add chat app to perl (r:18897f9e)
|
||||
mod_pocketsphinx: Update PocketSphinx to the latest builds... only had to make two changes (r:1a39d7fb)
|
||||
mod_pocketsphinx: They no longer ship the wsj model in pocketsphinx... and seems the dictionary has moved a bit. (r:23571680)
|
||||
mod_portaudio: Fix inbound state (CS_ROUTING not CS_INIT) (MODENDP-302)
|
||||
|
@ -716,6 +781,7 @@ freeswitch (1.0.7)
|
|||
mod_portaudio: Fix Windows crash (r:94c9cbf6/FS-3498)
|
||||
mod_portaudio_stream: update to specify the channel index (r:d1169d6e)
|
||||
mod_protovm: This is a very early new prototype voicemail ivr system. You need to copy the sounds.xml and make it loadale in the language folder and protovm.conf.xml inside the autoload_configs folder. Configs file will most definitly change. Once stabilized, we make it install those file by default. (r:fb549777)
|
||||
mod_python: add chat app to python (r:08917021)
|
||||
mod_radius_cdr: Add 'Freeswitch-Direction' av pair (r:a5170df0)
|
||||
mod_radius_cdr: Add 'Freeswitch-Other-Leg-Id' av pair (r:18d29b46)
|
||||
mod_radius_cdr: log errors with the call's uuid (r:fee49b16)
|
||||
|
@ -732,6 +798,8 @@ freeswitch (1.0.7)
|
|||
mod_rtmp: CNG frames need to have codec set too (r:36f812d9)
|
||||
mod_rtmp: remove superfluous hangup (r:50817655)
|
||||
mod_rtmp: fix crash when call made from user not in domain (r:a5452174/FS-3353)
|
||||
mod_rtmp: add params so xml curl can know who's calling the directory request (r:91b73d1f)
|
||||
mod_rtmp: New feature: param disallow-multiple-registration on user directory logs out all other users on other sessions with the same user:domain pair. (r:624a2921)
|
||||
mod_sangoma_codec: Add sample config file
|
||||
mod_sangoma_codec: added load/noload options for the supported codecs
|
||||
mod_sangoma_codec: rename load/noload to register/noregister
|
||||
|
@ -792,6 +860,10 @@ freeswitch (1.0.7)
|
|||
mod_skypopen: refining oss driver, removing audio sync during call (was each 20 secs), audio sync at the tcp interfacing with the skype client (reading more than 20ms worth) (r:891015e6)
|
||||
mod_skypopen: fixed a demented bug (incrementing a variable zeroed in the same loop) maybe responsible for moh sputtering under load on virtual machines (r:43eeeb82)
|
||||
mod_skypopen: avoid accumulating delay on VMs, better debug logging (r:1b4c78bf)
|
||||
mod_sms: add new chatplan concept and mod_sms. Apps for chat messages: copy new base freeswitch.xml and chatplan dir if you are upgrading on existing config base (r:7333d46d)
|
||||
mod_sms: fix "format literal and no arguments" warning (r:a0e91001)
|
||||
mod_sms: allow chatplan apps to have null args (r:4feb26d3)
|
||||
mod_sms: only ignore events if you matched something on a cp (r:a14b20af)
|
||||
mod_snapshot: fix bad codepaths in mod_snapshot (r:844ac220)
|
||||
mod_sndfile: Add support for .alaw and .ulaw to mod_sndfile (r:facf09b8/MODFORM-41)
|
||||
mod_sndfile: return break in mod_sndfile when seek returns failure (r:564dc7e4)
|
||||
|
@ -999,7 +1071,30 @@ freeswitch (1.0.7)
|
|||
mod_sofia: Fix RTP handling bug to allow goofy & undefined behavior (r:77413ba9/FS-3451)
|
||||
mod_sofia: don't allow auto answer on an non-outbound call (r:61ee7fdc)
|
||||
mod_sofia: use the call_id of the original register in the unsolicited notify for MWI (r:53b0ecce)
|
||||
mod_sofia: Fix caller ID name on bridged appearance (r:7efa4fb2/FS-3532)
|
||||
mod_sofia: speed up restart speed of profiles (r:fb5f29c2)
|
||||
mod_sofia: this is actually compliant when mixing ptimes in the same sdp but since iLBC uses its own fmtp for ptime I will add this patch to make it beleive its 20 for the sake of arguement. If you have any other problems with this, set the channel or global variable sdp_m_per_ptime=false to completely disable the default correct behaviour (r:247537a9/FS-3545)
|
||||
mod_sofia: I missed a few more spots to hack in the exception for iLBC, (thanks for marring my code iLBC ppl) it should work as expected now even with the m_per_ptime on (r:83a78fbf/FS-3545)
|
||||
mod_sofia: don't turn X-FS- headers into variables, they are reserved for FS specific communication and should not be passed on (r:7d399cce)
|
||||
mod_sofia: This patch will probably make it work but the bug is actually in the phone, the patch is simply tolerating the bad behaviour. You are correct about the a=sendonly missing, this was fixed in a later revision of the polycom firmware. I suggest that even if this patch works, that you update your phones to a newer firmware, preferably the most recent. (r:7acddfac/FS-3549)
|
||||
mod_sofia: add auth username to unreg event (r:1b9b3456)
|
||||
mod_sofia: fix wrong media ip in recover data issue (r:5154b881)
|
||||
mod_sofia: fix missing ACK that causes Polycom failure (r:408adb8d/FS-3558)
|
||||
mod_sofia: use bridge_to instead of signal_bond for recovering bridge (r:f4794620)
|
||||
mod_sofia: save telephony event data for recovery (r:4d1a76ee)
|
||||
mod_sofia: tighten up the parsing of these boolean vals issue in t38 sdp (r:626b5cb2/FS-3571,FS-3442,FS-957)
|
||||
mod_sofia: resolve race condition caused by unresponsive host when unregistering the gateway. (r:607c112f/FS-3583)
|
||||
mod_sofia: only require user and pass in gateway when register is true (r:9e4ca2c2)
|
||||
mod_sofia: Remove arbitrary 100 ACL limit (r:dd5188f3/FS-3605)
|
||||
mod_sofia: add t38_pass_broken_boolean to pass the broken boolean behaviour over to the other side of the call when detected (r:afd0e1fc)
|
||||
mod_sofia: Update handling of sub/notify (fixes broken Snom BLF) (r:51c22811/FS-2877)
|
||||
mod_sofia: Don't add Contact header to MESSAGE requests, per RFC3428 (libsofia still does it a bit) (r:1f6670e7/FS-3628)
|
||||
mod_sofia: add presence_map (r:4ee1722f)
|
||||
mod_sofia: add presence_map config (r:48416707)
|
||||
mod_sofia: add lookup params to presence_map (r:ea7f6a18)
|
||||
mod_sofia: add missing mod_sofia indexes (r:40df8d65)
|
||||
mod_soundtouch: updated soundtouch to library 1.5.0 to fix gcc > 4.3 incompatibilities (r:dfb5c629)
|
||||
mod_soundtouch: Update soundtouch to 1.6.0 to fix FS-3634 (r:d8ae59fd/FS-3634)
|
||||
mod_spandsp: initial checkin of mod_fax/mod_voipcodecs merge into mod_spandsp (r:fa9a59a8)
|
||||
mod_spandsp: rework of new mod_spandsp to have functions broken up into different c files (r:65400642)
|
||||
mod_spandsp: improve duplicate digit detection and add 'min_dup_digit_spacing_ms' channel variable for use with the dtmf detector (r:eab4f246/FSMOD-45)
|
||||
|
@ -1021,6 +1116,9 @@ freeswitch (1.0.7)
|
|||
mod_spandsp: add proper tone detect stop (r:8beb10d2/FS-3367)
|
||||
mod_spandsp: add more fax event information (r:0555b702/FS-3345)
|
||||
mod_spandsp: fix memory issue in spandsp_tone_detect (r:8793c2ed)
|
||||
mod_spandsp: Tweak link order of some libs to fix build on gcc platforms that have ld flag "--as-needed" as default. (r:0db88b59/FS-2873/FS-2874)
|
||||
mod_spandsp: Fix spandsp_start_fax_detect timeout issue (r:90a6e78d/FS-3619)
|
||||
mod_spandsp: Add tone_type param to start_fax_detect to handle outbound fax detection (r:d6d18748/FS-3624)
|
||||
mod_spidermonkey: allow vars to be set containing vars from languages (r:5cd072a3)
|
||||
mod_spidermonkey: fix seg in js hangup (r:7d554c11)
|
||||
mod_spidermonkey: Fix mod_spidermonkey build on FreeBSD, (Undefined symbol PR_LocalTimeParameters). (r:3edb8419)
|
||||
|
@ -1041,6 +1139,10 @@ freeswitch (1.0.7)
|
|||
mod_valet_parking: pass hold class on transfer (r:76a065ec)
|
||||
mod_valet_parking: add valet_announce_slot variable (r:293d7254)
|
||||
mod_valet_parking: make valet parking reserve a space for 10 seconds to allow time for an attended transfer switcharoo (r:308f44af)
|
||||
mod_valet_parking: refactor timeout tracker for valet (r:3514c780)
|
||||
mod_valet_parking: valet_info now returns uuid properly (r:34ddeb75/FS-3613)
|
||||
mod_valet_parking: add presence to mod_valet_parking subscribe to the lot name for general stats or individual slots to monitor with park+ prefix *note* this used to be used in mod_fifo which now will use queue+ going forward (r:9daa42c1)
|
||||
mod_valet_parking: lower token freq to 5, put it in a define and have more obvious warning about full lots (r:2f786a07)
|
||||
mod_voicemail: Fix vm_prefs profile lock (MODAPP-417)
|
||||
mod_voicemail: add 'vm-enabled' param (default true)
|
||||
mod_voicemail: fix vm msg being deleted when pressing key to forward to email (MODAPP-403)
|
||||
|
@ -1062,12 +1164,16 @@ freeswitch (1.0.7)
|
|||
mod_voicemail: Add 2 new profile settings, db-password-override and allow-empty-password-auth. By default, they have value of their previous behavior. If db-password-override=true, the db password will only be used if present, if not present fallback to the xml config file vm-password. If allow-empty-password-auth=false, it will disable login via a authentication method if there is no password set in the user account (This wont affect voicemail_authorize=true login). (r:a9db642a)
|
||||
mod_voicemail: remove pointless update_mwi() in vm_list api command (r:b952b2b2)
|
||||
mod_voicemail: add message_len to output of vm_list api command (r:77c5000d)
|
||||
mod_voicemail: use vm_email as notification address if vm_notify_email isn't set (that behavior was in voicemail_leave_main but not in deliver_vm) (r:8974f9d6)
|
||||
mod_voicemail: better fix for voicemail email key match (r:aff4bcbe/FS-3080)
|
||||
mod_voicemail: Prevent rewind key from breaking out of message playback (r:923a104b/FS-3637)
|
||||
mod_xml_cdr: add force_process_cdr var to process b leg cdr on a case by case basis when b leg cdr is disabled (XML-17)
|
||||
mod_xml_cdr: add leg param to query string (XML-24)
|
||||
mod_xml_cdr: fix locked sessions (XML-26)
|
||||
mod_xml_cdr: fix minor memory leaks and config bug (r:19253d83/MODEVENT-62)
|
||||
mod_xml_cdr: Fix prefix-a-leg not respected for url submission (r:ea9021a2/FS-2998)
|
||||
mod_xml_cdr: Fix delay to 5 sec from 5000 sec (r:34a38009/FS-2815)
|
||||
mod_xml_cdr: Accept all 2xx messages, not just "200" (r:d39b7c6b/FS-3593)
|
||||
mod_xml_rpc: Fix crash if unauthorized XML RPC is attempted (r:9835395c/FS-184)
|
||||
scripts: added honeypot.pl and blacklist.pl which add extra SIP security options (r:b6a81ba7)
|
||||
scripts: do simple verification to make sure we are getting IP addresses from VoIP abuse blacklist (r:b0049160)
|
||||
|
|
|
@ -493,7 +493,7 @@
|
|||
<prompt phrase="This conference is full. Please contact the conference moderator." filename="conf-conference_is_full.wav"/>
|
||||
<prompt phrase="You do not have permission to perform this action." filename="ivr-not_have_permission.wav"/>
|
||||
<prompt phrase="You're doing it wrong, but I'll try to connect you anyway. (Douchebag!)" filename="ivr-youre_doing_it_wrong.wav"/>
|
||||
<prompt phrase="" filename=""/>
|
||||
<prompt phrase="3... 2... 1... WE'RE ASTERISK FREE!!!" filename="ivr-were_asterisk_free"/>
|
||||
<prompt phrase="" filename=""/>
|
||||
<prompt phrase="" filename=""/>
|
||||
</ivr>
|
||||
|
|
|
@ -434,7 +434,7 @@ APPLICATION_MODULES_AE="applications/mod_avmd applications/mod_callcenter applic
|
|||
applications/mod_distributor applications/mod_dptools applications/mod_easyroute applications/mod_enum \
|
||||
applications/mod_esf applications/mod_expr applications/mod_blacklist"
|
||||
APPLICATION_MODULES_FM="applications/mod_fifo applications/mod_fsv applications/mod_hash applications/mod_lcr applications/mod_limit \
|
||||
applications/mod_memcache"
|
||||
applications/mod_memcache applications/mod_http_cache"
|
||||
APPLICATION_MODULES_NY="applications/mod_nibblebill applications/mod_redis applications/mod_rss applications/mod_snom \
|
||||
applications/mod_soundtouch applications/mod_spandsp applications/mod_spy applications/mod_stress \
|
||||
applications/mod_valet_parking applications/mod_vmd applications/mod_voicemail applications/mod_sms"
|
||||
|
@ -774,6 +774,7 @@ fi
|
|||
%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/fax.conf.xml
|
||||
%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/fifo.conf.xml
|
||||
%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/hash.conf.xml
|
||||
%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/http_cache.conf.xml
|
||||
%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/ivr.conf.xml
|
||||
%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/java.conf.xml
|
||||
%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/lcr.conf.xml
|
||||
|
@ -788,6 +789,7 @@ fi
|
|||
%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/pocketsphinx.conf.xml
|
||||
%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/portaudio.conf.xml
|
||||
%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/post_load_modules.conf.xml
|
||||
%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/presence_map.conf.xml
|
||||
%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/redis.conf.xml
|
||||
%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/rss.conf.xml
|
||||
%config(noreplace) %attr(0640, freeswitch, daemon) %{prefix}/conf/autoload_configs/rtmp.conf.xml
|
||||
|
@ -919,6 +921,7 @@ fi
|
|||
%{prefix}/mod/mod_flite.so*
|
||||
%{prefix}/mod/mod_fsv.so*
|
||||
%{prefix}/mod/mod_hash.so*
|
||||
%{prefix}/mod/mod_http_cache.so*
|
||||
%{prefix}/mod/mod_h26x.so*
|
||||
%{prefix}/mod/mod_ilbc.so*
|
||||
%{prefix}/mod/mod_lcr.so*
|
||||
|
@ -1142,6 +1145,8 @@ fi
|
|||
######################################################################################################################
|
||||
%changelog
|
||||
* Tue Jun 14 2011 - michal.bielicki@seventhsignal.de
|
||||
- added mod_http_cache
|
||||
* Tue Jun 14 2011 - michal.bielicki@seventhsignal.de
|
||||
- added mod_rtmp
|
||||
* Fri Apr 01 2011 - michal.bielicki@seventhsignal.de
|
||||
- added hebrew language stuff
|
||||
|
|
|
@ -70,8 +70,7 @@ missing
|
|||
/broadvoice/src/Makefile.in
|
||||
/broadvoice/src/stamp-h1
|
||||
/broadvoice/tests/regression_tests.sh
|
||||
/celt-0.10.0/
|
||||
/celt-0.7.1/
|
||||
/celt-*/
|
||||
/Communicator_semi_40.cd_semi_6000/
|
||||
/curl/curl-config
|
||||
/curl/include/curl/Makefile
|
||||
|
@ -116,8 +115,8 @@ missing
|
|||
/curl/src/stamp-h2
|
||||
/esl/Debug/
|
||||
/esl/Release/
|
||||
/flite-1.3.99/
|
||||
/freeradius-client-1.1.6/
|
||||
/flite-*/
|
||||
/freeradius-client-*/
|
||||
/freetdm/build/compile
|
||||
/freetdm/COPYING
|
||||
/freetdm/INSTALL
|
||||
|
@ -218,11 +217,11 @@ missing
|
|||
/js/nsprpub/pr/src/threads/Makefile
|
||||
/js/nsprpub/pr/tests/dll/Makefile
|
||||
/js/nsprpub/pr/tests/Makefile
|
||||
/json-c-0.9/
|
||||
/json-c-*/
|
||||
/js/src/jsautocfg.h
|
||||
/js/src/perlconnect/Makefile.PL
|
||||
/lame-3.97/
|
||||
/ldns-1.6.9/
|
||||
/lame-*/
|
||||
/ldns-*/
|
||||
/ldns/doc/ldns_manpages
|
||||
/ldns/include/
|
||||
/ldns/ldns/config.h
|
||||
|
@ -294,9 +293,9 @@ missing
|
|||
/libg722_1/tests/regression_tests.sh
|
||||
/libg723_1/
|
||||
/libg729/
|
||||
/libmemcached-0.32/
|
||||
/libogg-1.1.3/
|
||||
/libshout-2.2.2/
|
||||
/libmemcached-*/
|
||||
/libogg-*/
|
||||
/libshout-*/
|
||||
/libsndfile/Cfg/compile
|
||||
/libsndfile/doc/Makefile
|
||||
/libsndfile/doc/Makefile.in
|
||||
|
@ -336,15 +335,15 @@ missing
|
|||
/libsndfile/tests/test_wrapper.sh
|
||||
/libsndfile/Win32/Makefile
|
||||
/libsndfile/Win32/Makefile.in
|
||||
/mongo-cxx-driver-v1.8/
|
||||
/mongo-cxx-driver-v*/
|
||||
/mpg123/
|
||||
/openldap-2.4.19/
|
||||
/openssl-1.0.0a/
|
||||
/openldap-*/
|
||||
/openssl-*/
|
||||
/openzap/build/compile
|
||||
/openzap/COPYING
|
||||
/openzap/INSTALL
|
||||
/openzap/Makefile.in
|
||||
/opus-0.9.0/
|
||||
/opus-*/
|
||||
/pcre/config.h
|
||||
/pcre/Makefile
|
||||
/pcre/Makefile.in
|
||||
|
@ -358,7 +357,7 @@ missing
|
|||
/pcre/pcre_stringpiece_unittest
|
||||
/pcre/pcretest
|
||||
/pcre/stamp-h1
|
||||
/pocketsphinx-0.7/
|
||||
/pocketsphinx-*/
|
||||
/portaudio/bin/
|
||||
/portaudio/bin-stamp
|
||||
/portaudio/lib-stamp
|
||||
|
@ -501,7 +500,7 @@ missing
|
|||
/sofia-sip/open_c/Makefile.in
|
||||
/sofia-sip/packages/Makefile
|
||||
/sofia-sip/packages/Makefile.in
|
||||
/sofia-sip/packages/sofia-sip-1.12.10devel.spec
|
||||
/sofia-sip/packages/sofia-sip-*devel.spec
|
||||
/sofia-sip/s2check/Makefile
|
||||
/sofia-sip/s2check/Makefile.in
|
||||
/sofia-sip/stamp-h1
|
||||
|
@ -516,7 +515,7 @@ missing
|
|||
/sofia-sip/win32/Makefile.in
|
||||
/sounds/
|
||||
/soundtouch/
|
||||
/soundtouch-1.3.1/
|
||||
/soundtouch-*/
|
||||
/spandsp/config-h.in
|
||||
/spandsp/doc/doxygen
|
||||
/spandsp/doc/Makefile
|
||||
|
@ -642,7 +641,7 @@ missing
|
|||
/speex/win32/VS2008/speexenc/Makefile.in
|
||||
/speex/win32/VS2008/tests/Makefile
|
||||
/speex/win32/VS2008/tests/Makefile.in
|
||||
/sphinxbase-0.7/
|
||||
/sphinxbase-*/
|
||||
/sqlite/keywordhash.h
|
||||
/sqlite/lemon
|
||||
/sqlite/lempar.c
|
||||
|
@ -667,95 +666,95 @@ missing
|
|||
/srtp/Makefile.in
|
||||
/srtp/test/Makefile
|
||||
/srtp/test/Makefile.in
|
||||
/tiff-3.8.2/contrib/acorn/Makefile
|
||||
/tiff-3.8.2/contrib/acorn/Makefile.in
|
||||
/tiff-3.8.2/contrib/addtiffo/addtiffo
|
||||
/tiff-3.8.2/contrib/addtiffo/Makefile
|
||||
/tiff-3.8.2/contrib/addtiffo/Makefile.in
|
||||
/tiff-3.8.2/contrib/dbs/Makefile
|
||||
/tiff-3.8.2/contrib/dbs/Makefile.in
|
||||
/tiff-3.8.2/contrib/dbs/tiff-bi
|
||||
/tiff-3.8.2/contrib/dbs/tiff-grayscale
|
||||
/tiff-3.8.2/contrib/dbs/tiff-palette
|
||||
/tiff-3.8.2/contrib/dbs/tiff-rgb
|
||||
/tiff-3.8.2/contrib/dbs/xtiff/Makefile
|
||||
/tiff-3.8.2/contrib/dbs/xtiff/Makefile.in
|
||||
/tiff-3.8.2/contrib/iptcutil/iptcutil
|
||||
/tiff-3.8.2/contrib/iptcutil/Makefile
|
||||
/tiff-3.8.2/contrib/iptcutil/Makefile.in
|
||||
/tiff-3.8.2/contrib/mac-cw/Makefile
|
||||
/tiff-3.8.2/contrib/mac-cw/Makefile.in
|
||||
/tiff-3.8.2/contrib/mac-mpw/Makefile
|
||||
/tiff-3.8.2/contrib/mac-mpw/Makefile.in
|
||||
/tiff-3.8.2/contrib/Makefile
|
||||
/tiff-3.8.2/contrib/Makefile.in
|
||||
/tiff-3.8.2/contrib/mfs/Makefile
|
||||
/tiff-3.8.2/contrib/mfs/Makefile.in
|
||||
/tiff-3.8.2/contrib/ojpeg/Makefile
|
||||
/tiff-3.8.2/contrib/ojpeg/Makefile.in
|
||||
/tiff-3.8.2/contrib/pds/Makefile
|
||||
/tiff-3.8.2/contrib/pds/Makefile.in
|
||||
/tiff-3.8.2/contrib/ras/Makefile
|
||||
/tiff-3.8.2/contrib/ras/Makefile.in
|
||||
/tiff-3.8.2/contrib/stream/Makefile
|
||||
/tiff-3.8.2/contrib/stream/Makefile.in
|
||||
/tiff-3.8.2/contrib/tags/Makefile
|
||||
/tiff-3.8.2/contrib/tags/Makefile.in
|
||||
/tiff-3.8.2/contrib/win_dib/Makefile
|
||||
/tiff-3.8.2/contrib/win_dib/Makefile.in
|
||||
/tiff-3.8.2/html/images/Makefile
|
||||
/tiff-3.8.2/html/images/Makefile.in
|
||||
/tiff-3.8.2/html/Makefile
|
||||
/tiff-3.8.2/html/Makefile.in
|
||||
/tiff-3.8.2/html/man/Makefile
|
||||
/tiff-3.8.2/html/man/Makefile.in
|
||||
/tiff-3.8.2/libtiff/Makefile
|
||||
/tiff-3.8.2/libtiff/Makefile.in
|
||||
/tiff-3.8.2/libtiff/mkg3states
|
||||
/tiff-3.8.2/libtiff/stamp-h1
|
||||
/tiff-3.8.2/libtiff/stamp-h2
|
||||
/tiff-3.8.2/libtiff/tif_config.h
|
||||
/tiff-3.8.2/libtiff/tif_config.h.in
|
||||
/tiff-3.8.2/libtiff/tiffconf.h
|
||||
/tiff-3.8.2/m4/libtool.m4
|
||||
/tiff-3.8.2/m4/lt~obsolete.m4
|
||||
/tiff-3.8.2/m4/ltoptions.m4
|
||||
/tiff-3.8.2/m4/ltsugar.m4
|
||||
/tiff-3.8.2/m4/ltversion.m4
|
||||
/tiff-3.8.2/Makefile
|
||||
/tiff-3.8.2/Makefile.in
|
||||
/tiff-3.8.2/man/Makefile
|
||||
/tiff-3.8.2/man/Makefile.in
|
||||
/tiff-3.8.2/port/Makefile
|
||||
/tiff-3.8.2/port/Makefile.in
|
||||
/tiff-3.8.2/test/Makefile
|
||||
/tiff-3.8.2/test/Makefile.in
|
||||
/tiff-3.8.2/tiff-Makefile.tgz
|
||||
/tiff-3.8.2/tools/bmp2tiff
|
||||
/tiff-3.8.2/tools/fax2ps
|
||||
/tiff-3.8.2/tools/fax2tiff
|
||||
/tiff-3.8.2/tools/gif2tiff
|
||||
/tiff-3.8.2/tools/Makefile
|
||||
/tiff-3.8.2/tools/Makefile.in
|
||||
/tiff-3.8.2/tools/pal2rgb
|
||||
/tiff-3.8.2/tools/ppm2tiff
|
||||
/tiff-3.8.2/tools/ras2tiff
|
||||
/tiff-3.8.2/tools/raw2tiff
|
||||
/tiff-3.8.2/tools/rgb2ycbcr
|
||||
/tiff-3.8.2/tools/thumbnail
|
||||
/tiff-3.8.2/tools/tiff2bw
|
||||
/tiff-3.8.2/tools/tiff2pdf
|
||||
/tiff-3.8.2/tools/tiff2ps
|
||||
/tiff-3.8.2/tools/tiff2rgba
|
||||
/tiff-3.8.2/tools/tiffcmp
|
||||
/tiff-3.8.2/tools/tiffcp
|
||||
/tiff-3.8.2/tools/tiffdither
|
||||
/tiff-3.8.2/tools/tiffdump
|
||||
/tiff-3.8.2/tools/tiffgt
|
||||
/tiff-3.8.2/tools/tiffinfo
|
||||
/tiff-3.8.2/tools/tiffmedian
|
||||
/tiff-3.8.2/tools/tiffset
|
||||
/tiff-3.8.2/tools/tiffsplit
|
||||
/tiff-*/contrib/acorn/Makefile
|
||||
/tiff-*/contrib/acorn/Makefile.in
|
||||
/tiff-*/contrib/addtiffo/addtiffo
|
||||
/tiff-*/contrib/addtiffo/Makefile
|
||||
/tiff-*/contrib/addtiffo/Makefile.in
|
||||
/tiff-*/contrib/dbs/Makefile
|
||||
/tiff-*/contrib/dbs/Makefile.in
|
||||
/tiff-*/contrib/dbs/tiff-bi
|
||||
/tiff-*/contrib/dbs/tiff-grayscale
|
||||
/tiff-*/contrib/dbs/tiff-palette
|
||||
/tiff-*/contrib/dbs/tiff-rgb
|
||||
/tiff-*/contrib/dbs/xtiff/Makefile
|
||||
/tiff-*/contrib/dbs/xtiff/Makefile.in
|
||||
/tiff-*/contrib/iptcutil/iptcutil
|
||||
/tiff-*/contrib/iptcutil/Makefile
|
||||
/tiff-*/contrib/iptcutil/Makefile.in
|
||||
/tiff-*/contrib/mac-cw/Makefile
|
||||
/tiff-*/contrib/mac-cw/Makefile.in
|
||||
/tiff-*/contrib/mac-mpw/Makefile
|
||||
/tiff-*/contrib/mac-mpw/Makefile.in
|
||||
/tiff-*/contrib/Makefile
|
||||
/tiff-*/contrib/Makefile.in
|
||||
/tiff-*/contrib/mfs/Makefile
|
||||
/tiff-*/contrib/mfs/Makefile.in
|
||||
/tiff-*/contrib/ojpeg/Makefile
|
||||
/tiff-*/contrib/ojpeg/Makefile.in
|
||||
/tiff-*/contrib/pds/Makefile
|
||||
/tiff-*/contrib/pds/Makefile.in
|
||||
/tiff-*/contrib/ras/Makefile
|
||||
/tiff-*/contrib/ras/Makefile.in
|
||||
/tiff-*/contrib/stream/Makefile
|
||||
/tiff-*/contrib/stream/Makefile.in
|
||||
/tiff-*/contrib/tags/Makefile
|
||||
/tiff-*/contrib/tags/Makefile.in
|
||||
/tiff-*/contrib/win_dib/Makefile
|
||||
/tiff-*/contrib/win_dib/Makefile.in
|
||||
/tiff-*/html/images/Makefile
|
||||
/tiff-*/html/images/Makefile.in
|
||||
/tiff-*/html/Makefile
|
||||
/tiff-*/html/Makefile.in
|
||||
/tiff-*/html/man/Makefile
|
||||
/tiff-*/html/man/Makefile.in
|
||||
/tiff-*/libtiff/Makefile
|
||||
/tiff-*/libtiff/Makefile.in
|
||||
/tiff-*/libtiff/mkg3states
|
||||
/tiff-*/libtiff/stamp-h1
|
||||
/tiff-*/libtiff/stamp-h2
|
||||
/tiff-*/libtiff/tif_config.h
|
||||
/tiff-*/libtiff/tif_config.h.in
|
||||
/tiff-*/libtiff/tiffconf.h
|
||||
/tiff-*/m4/libtool.m4
|
||||
/tiff-*/m4/lt~obsolete.m4
|
||||
/tiff-*/m4/ltoptions.m4
|
||||
/tiff-*/m4/ltsugar.m4
|
||||
/tiff-*/m4/ltversion.m4
|
||||
/tiff-*/Makefile
|
||||
/tiff-*/Makefile.in
|
||||
/tiff-*/man/Makefile
|
||||
/tiff-*/man/Makefile.in
|
||||
/tiff-*/port/Makefile
|
||||
/tiff-*/port/Makefile.in
|
||||
/tiff-*/test/Makefile
|
||||
/tiff-*/test/Makefile.in
|
||||
/tiff-*/tiff-Makefile.tgz
|
||||
/tiff-*/tools/bmp2tiff
|
||||
/tiff-*/tools/fax2ps
|
||||
/tiff-*/tools/fax2tiff
|
||||
/tiff-*/tools/gif2tiff
|
||||
/tiff-*/tools/Makefile
|
||||
/tiff-*/tools/Makefile.in
|
||||
/tiff-*/tools/pal2rgb
|
||||
/tiff-*/tools/ppm2tiff
|
||||
/tiff-*/tools/ras2tiff
|
||||
/tiff-*/tools/raw2tiff
|
||||
/tiff-*/tools/rgb2ycbcr
|
||||
/tiff-*/tools/thumbnail
|
||||
/tiff-*/tools/tiff2bw
|
||||
/tiff-*/tools/tiff2pdf
|
||||
/tiff-*/tools/tiff2ps
|
||||
/tiff-*/tools/tiff2rgba
|
||||
/tiff-*/tools/tiffcmp
|
||||
/tiff-*/tools/tiffcp
|
||||
/tiff-*/tools/tiffdither
|
||||
/tiff-*/tools/tiffdump
|
||||
/tiff-*/tools/tiffgt
|
||||
/tiff-*/tools/tiffinfo
|
||||
/tiff-*/tools/tiffmedian
|
||||
/tiff-*/tools/tiffset
|
||||
/tiff-*/tools/tiffsplit
|
||||
/unimrcp/build/acmacros/libtool.m4
|
||||
/unimrcp/build/acmacros/lt~obsolete.m4
|
||||
/unimrcp/build/acmacros/ltoptions.m4
|
||||
|
@ -904,8 +903,8 @@ missing
|
|||
!/portaudio/bindings/cpp/build/gnu/config.sub
|
||||
!/portaudio/bindings/cpp/build/gnu/configure
|
||||
!/portaudio/bindings/cpp/build/gnu/install-sh
|
||||
!/tiff-3.8.2/config/depcomp
|
||||
!/tiff-3.8.2/config/missing
|
||||
!/tiff-*/config/depcomp
|
||||
!/tiff-*/config/missing
|
||||
!/xmlrpc-c/install-sh
|
||||
!/xmlrpc-c/missing
|
||||
!/yaml/aclocal.m4
|
||||
|
|
|
@ -304,7 +304,8 @@ typedef enum {
|
|||
CURLE_UNSUPPORTED_PROTOCOL, /* 1 */
|
||||
CURLE_FAILED_INIT, /* 2 */
|
||||
CURLE_URL_MALFORMAT, /* 3 */
|
||||
CURLE_URL_MALFORMAT_USER, /* 4 - NOT USED */
|
||||
CURLE_NOT_BUILT_IN, /* 4 - [was obsoleted in August 2007 for
|
||||
7.17.0, reused in April 2011 for 7.21.5] */
|
||||
CURLE_COULDNT_RESOLVE_PROXY, /* 5 */
|
||||
CURLE_COULDNT_RESOLVE_HOST, /* 6 */
|
||||
CURLE_COULDNT_CONNECT, /* 7 */
|
||||
|
|
|
@ -1190,8 +1190,13 @@ Curl_ossl_connect_step1(struct connectdata *conn,
|
|||
req_method = TLSv1_client_method();
|
||||
break;
|
||||
case CURL_SSLVERSION_SSLv2:
|
||||
#ifdef OPENSSL_NO_SSL2
|
||||
failf(data, "OpenSSL was built without SSLv2 support");
|
||||
return CURLE_NOT_BUILT_IN;
|
||||
#else
|
||||
req_method = SSLv2_client_method();
|
||||
break;
|
||||
#endif
|
||||
case CURL_SSLVERSION_SSLv3:
|
||||
req_method = SSLv3_client_method();
|
||||
break;
|
||||
|
|
|
@ -69,6 +69,10 @@ curl_easy_strerror(CURLcode error)
|
|||
case CURLE_URL_MALFORMAT:
|
||||
return "URL using bad/illegal format or missing URL";
|
||||
|
||||
case CURLE_NOT_BUILT_IN:
|
||||
return "A requested feature, protocol or option was not found built-in in"
|
||||
" this libcurl due to a build-time decision.";
|
||||
|
||||
case CURLE_COULDNT_RESOLVE_PROXY:
|
||||
return "couldn't resolve proxy name";
|
||||
|
||||
|
@ -278,7 +282,6 @@ curl_easy_strerror(CURLcode error)
|
|||
return "caller must register CURLOPT_CONV_ callback options";
|
||||
|
||||
/* error codes not used by current libcurl */
|
||||
case CURLE_URL_MALFORMAT_USER:
|
||||
case CURLE_FTP_USER_PASSWORD_INCORRECT:
|
||||
case CURLE_MALFORMAT_USER:
|
||||
case CURLE_BAD_CALLING_ORDER:
|
||||
|
|
|
@ -72,6 +72,7 @@ static char prompt_str[512] = "";
|
|||
static char prompt_color[12] = {ESL_SEQ_DEFAULT_COLOR};
|
||||
static char input_text_color[12] = {ESL_SEQ_DEFAULT_COLOR};
|
||||
static char output_text_color[12] = {ESL_SEQ_DEFAULT_COLOR};
|
||||
static int feature_level = 0;
|
||||
static cli_profile_t profiles[128] = {{{0}}};
|
||||
static cli_profile_t internal_profile = {{ 0 }};
|
||||
static int pcount = 0;
|
||||
|
@ -237,7 +238,7 @@ static int console_bufferInput (char *addchars, int len, char *cmd, int key)
|
|||
return 0;
|
||||
}
|
||||
if (key == KEY_TAB) {
|
||||
esl_console_complete(cmd, cmd+iCmdBuffer, &cmd[iCmdBuffer-1]);
|
||||
esl_console_complete(cmd, cmd+iCmdBuffer, cmd+iCmdBuffer);
|
||||
return 0;
|
||||
}
|
||||
if (key == KEY_UP || key == KEY_DOWN || key == CLEAR_OP) {
|
||||
|
@ -680,9 +681,10 @@ static void *msg_thread_run(esl_thread_t *me, void *obj)
|
|||
}
|
||||
#ifndef WIN32
|
||||
if (aok) {
|
||||
clear_line();
|
||||
if (feature_level) clear_line();
|
||||
printf("%s%s", colors[level], handle->last_event->body);
|
||||
redisplay();
|
||||
if (!feature_level) printf("%s", ESL_SEQ_DEFAULT_COLOR);
|
||||
if (feature_level) redisplay();
|
||||
}
|
||||
#else
|
||||
if (aok) {
|
||||
|
@ -1112,6 +1114,7 @@ int main(int argc, char *argv[])
|
|||
char dft_cfile[512] = "nbess7_cli.conf";
|
||||
#endif
|
||||
char *home = getenv("HOME");
|
||||
char *term = getenv("TERM");
|
||||
/* Vars for optargs */
|
||||
int opt;
|
||||
static struct option options[] = {
|
||||
|
@ -1146,6 +1149,17 @@ int main(int argc, char *argv[])
|
|||
int argv_quiet = 0;
|
||||
int loops = 2, reconnect = 0, timeout = 0;
|
||||
|
||||
if (term && (!strncasecmp("screen", term, 6) ||
|
||||
!strncasecmp("vt100", term, 5))) {
|
||||
feature_level = 1;
|
||||
} else {
|
||||
feature_level = 0;
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
feature_level = 0;
|
||||
#endif
|
||||
|
||||
strncpy(internal_profile.host, "127.0.0.1", sizeof(internal_profile.host));
|
||||
strncpy(internal_profile.pass, "ClueCon", sizeof(internal_profile.pass));
|
||||
strncpy(internal_profile.name, "internal", sizeof(internal_profile.name));
|
||||
|
@ -1279,11 +1293,11 @@ int main(int argc, char *argv[])
|
|||
snprintf(prompt_str, sizeof(prompt_str), PROMPT_PREFIX "@%s> ", profile->name);
|
||||
}
|
||||
bare_prompt_str_len = (int)strlen(bare_prompt_str);
|
||||
#ifdef WIN32
|
||||
snprintf(prompt_str, sizeof(prompt_str), "%s", bare_prompt_str); /* Not supporting this for now */
|
||||
#else
|
||||
snprintf(prompt_str, sizeof(prompt_str), "%s%s%s", prompt_color, bare_prompt_str, input_text_color);
|
||||
#endif
|
||||
if (feature_level) {
|
||||
snprintf(prompt_str, sizeof(prompt_str), "%s%s%s", prompt_color, bare_prompt_str, input_text_color);
|
||||
} else {
|
||||
snprintf(prompt_str, sizeof(prompt_str), "%s", bare_prompt_str);
|
||||
}
|
||||
connect:
|
||||
connected = 0;
|
||||
while (--loops > 0) {
|
||||
|
@ -1310,7 +1324,7 @@ int main(int argc, char *argv[])
|
|||
}
|
||||
if (argv_exec) {
|
||||
const char *err = NULL;
|
||||
snprintf(cmd_str, sizeof(cmd_str), "api %s\n\n", argv_command);
|
||||
snprintf(cmd_str, sizeof(cmd_str), "api %s\nconsole_execute: true\n\n", argv_command);
|
||||
if (timeout) {
|
||||
esl_status_t status = esl_send_recv_timed(&handle, cmd_str, timeout);
|
||||
if (status != ESL_SUCCESS) {
|
||||
|
|
|
@ -42,11 +42,6 @@ static void mycallback(esl_socket_t server_sock, esl_socket_t client_sock, struc
|
|||
char path_buffer[1024] = { 0 };
|
||||
const char *path;
|
||||
|
||||
if (fork()) {
|
||||
close(client_sock);
|
||||
return;
|
||||
}
|
||||
|
||||
if (esl_attach_handle(&handle, client_sock, addr) != ESL_SUCCESS || !handle.info_event) {
|
||||
esl_log(ESL_LOG_ERROR, "Socket Error\n");
|
||||
exit(0);
|
||||
|
@ -95,9 +90,7 @@ int main(int argc, char *argv[])
|
|||
return -1;
|
||||
}
|
||||
|
||||
signal(SIGCHLD, SIG_IGN);
|
||||
|
||||
esl_listen(ip, port, mycallback);
|
||||
esl_listen(ip, port, mycallback, 100000);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -53,10 +53,18 @@
|
|||
#ifndef WIN32
|
||||
#define closesocket(x) close(x)
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
#else
|
||||
#pragma warning (disable:6386)
|
||||
/* These warnings need to be ignored warning in sdk header */
|
||||
#include <Ws2tcpip.h>
|
||||
#include <windows.h>
|
||||
#ifndef errno
|
||||
#define errno WSAGetLastError()
|
||||
#endif
|
||||
#ifndef EINTR
|
||||
#define EINTR WSAEINTR
|
||||
#endif
|
||||
#pragma warning (default:6386)
|
||||
#endif
|
||||
|
||||
|
@ -612,12 +620,31 @@ static int esl_socket_reuseaddr(esl_socket_t socket)
|
|||
#endif
|
||||
}
|
||||
|
||||
ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback)
|
||||
struct thread_handler {
|
||||
esl_listen_callback_t callback;
|
||||
esl_socket_t server_sock;
|
||||
esl_socket_t client_sock;
|
||||
struct sockaddr_in addr;
|
||||
};
|
||||
|
||||
static void *client_thread(esl_thread_t *me, void *obj)
|
||||
{
|
||||
struct thread_handler *handler = (struct thread_handler *) obj;
|
||||
|
||||
handler->callback(handler->server_sock, handler->client_sock, &handler->addr);
|
||||
free(handler);
|
||||
|
||||
return NULL;
|
||||
|
||||
}
|
||||
|
||||
ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback, int max)
|
||||
{
|
||||
esl_socket_t server_sock = ESL_SOCK_INVALID;
|
||||
struct sockaddr_in addr;
|
||||
esl_status_t status = ESL_SUCCESS;
|
||||
|
||||
struct thread_handler *handler = NULL;
|
||||
|
||||
if ((server_sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) {
|
||||
return ESL_FAIL;
|
||||
}
|
||||
|
@ -634,7 +661,7 @@ ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_list
|
|||
goto end;
|
||||
}
|
||||
|
||||
if (listen(server_sock, 10000) < 0) {
|
||||
if (listen(server_sock, max) < 0) {
|
||||
status = ESL_FAIL;
|
||||
goto end;
|
||||
}
|
||||
|
@ -655,7 +682,16 @@ ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_list
|
|||
goto end;
|
||||
}
|
||||
|
||||
callback(server_sock, client_sock, &echoClntAddr);
|
||||
handler = malloc(sizeof(*handler));
|
||||
esl_assert(handler);
|
||||
|
||||
memset(handler, 0, sizeof(*handler));
|
||||
handler->callback = callback;
|
||||
handler->server_sock = server_sock;
|
||||
handler->client_sock = client_sock;
|
||||
handler->addr = echoClntAddr;
|
||||
|
||||
esl_thread_create_detached(client_thread, handler);
|
||||
}
|
||||
|
||||
end:
|
||||
|
@ -1055,7 +1091,21 @@ ESL_DECLARE(esl_status_t) esl_recv_event_timed(esl_handle_t *handle, uint32_t ms
|
|||
|
||||
static esl_ssize_t handle_recv(esl_handle_t *handle, void *data, esl_size_t datalen)
|
||||
{
|
||||
return recv(handle->sock, data, datalen, 0);
|
||||
int activity;
|
||||
|
||||
while (handle->connected) {
|
||||
activity = esl_wait_sock(handle->sock, 1000, ESL_POLL_READ|ESL_POLL_ERROR);
|
||||
|
||||
if (activity > 0 && (activity & ESL_POLL_READ)) {
|
||||
return recv(handle->sock, data, datalen, 0);
|
||||
}
|
||||
|
||||
if (activity < 0) {
|
||||
return errno == EINTR ? 0 : -1;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
ESL_DECLARE(esl_status_t) esl_recv_event(esl_handle_t *handle, int check_q, esl_event_t **save_event)
|
||||
|
|
|
@ -391,7 +391,7 @@ ESL_DECLARE(esl_status_t) esl_attach_handle(esl_handle_t *handle, esl_socket_t s
|
|||
\param port Port to bind to
|
||||
\param callback Callback that will be called upon data received
|
||||
*/
|
||||
ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback);
|
||||
ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_listen_callback_t callback, int max);
|
||||
/*!
|
||||
\brief Executes application with sendmsg to a specific UUID. Used for outbound socket.
|
||||
\param handle Handle that the msg will be sent
|
||||
|
|
|
@ -9,11 +9,6 @@ static void mycallback(esl_socket_t server_sock, esl_socket_t client_sock, struc
|
|||
esl_status_t status;
|
||||
time_t exp = 0;
|
||||
|
||||
if (fork()) {
|
||||
close(client_sock);
|
||||
return;
|
||||
}
|
||||
|
||||
esl_attach_handle(&handle, client_sock, addr);
|
||||
|
||||
esl_log(ESL_LOG_INFO, "Connected! %d\n", handle.sock);
|
||||
|
@ -53,7 +48,7 @@ static void mycallback(esl_socket_t server_sock, esl_socket_t client_sock, struc
|
|||
int main(void)
|
||||
{
|
||||
esl_global_set_default_logger(7);
|
||||
esl_listen("localhost", 8084, mycallback);
|
||||
esl_listen("localhost", 8084, mycallback, 100000);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -184,9 +184,9 @@ endif
|
|||
if HAVE_LIBPRI
|
||||
mod_LTLIBRARIES += ftmod_libpri.la
|
||||
ftmod_libpri_la_SOURCES = $(SRC)/ftmod/ftmod_libpri/ftmod_libpri.c $(SRC)/ftmod/ftmod_libpri/lpwrap_pri.c
|
||||
ftmod_libpri_la_CFLAGS = $(FTDM_CFLAGS) $(AM_CFLAGS)
|
||||
ftmod_libpri_la_LDFLAGS = -shared -module -avoid-version -lpri
|
||||
ftmod_libpri_la_LIBADD = libfreetdm.la
|
||||
ftmod_libpri_la_CFLAGS = $(FTDM_CFLAGS) $(AM_CFLAGS) $(LIBPRI_CPPFLAGS)
|
||||
ftmod_libpri_la_LDFLAGS = -shared -module -avoid-version $(LIBPRI_LDFLAGS)
|
||||
ftmod_libpri_la_LIBADD = libfreetdm.la $(LIBPRI_LIBS)
|
||||
endif
|
||||
|
||||
if HAVE_PRITAP
|
||||
|
@ -251,7 +251,7 @@ endif
|
|||
if HAVE_MISDN
|
||||
mod_LTLIBRARIES += ftmod_misdn.la
|
||||
ftmod_misdn_la_SOURCES = $(SRC)/ftmod/ftmod_misdn/ftmod_misdn.c
|
||||
ftmod_misdn_la_CFLAGS = $(FTDM_CFLAGS) $(AM_CFLAGS) $(MISDN_CFLAGS)
|
||||
ftmod_misdn_la_CFLAGS = $(FTDM_CFLAGS) $(AM_CFLAGS) $(MISDN_CFLAGS) -D_GNU_SOURCE
|
||||
ftmod_misdn_la_LDFLAGS = -shared -module -avoid-version
|
||||
ftmod_misdn_la_LIBADD = libfreetdm.la
|
||||
endif
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
m4_include([build/ax_compiler_vendor.m4])
|
||||
m4_include([build/libpcap.m4])
|
||||
|
|
|
@ -54,7 +54,7 @@ fi
|
|||
|
||||
AC_SUBST([confdir])
|
||||
|
||||
DEFAULT_INCLUDES="-I. -I./src/include -I$(srcdir)"
|
||||
DEFAULT_INCLUDES="-I. -I./src/include -I\$(srcdir)"
|
||||
AC_SUBST([DEFAULT_INCLUDES])
|
||||
|
||||
# Where to install the modules
|
||||
|
@ -194,28 +194,46 @@ AM_CONDITIONAL([HAVE_OPENR2], [test "${HAVE_OPENR2}" = "yes"])
|
|||
#
|
||||
HAVE_LIBPRI="no"
|
||||
AC_ARG_WITH([libpri],
|
||||
[AS_HELP_STRING([--with-libpri], [Install ftmod_libpri])],
|
||||
[AS_HELP_STRING([--with-libpri@<:@=PREFIX@:>@], [Install ftmod_libpri])],
|
||||
[case "${withval}" in
|
||||
no) enable_libpri="no" ;;
|
||||
*) enable_libpri="yes" ;;
|
||||
no|yes) with_libpri="${withval}" ;;
|
||||
*) AS_IF([test -d "${withval}"],
|
||||
[with_libpri="${withval}"],
|
||||
[AC_MSG_ERROR([Invalid argument for --with-libpri, \"${withval}\" is not a directory])]
|
||||
) ;;
|
||||
esac],
|
||||
[enable_libpri="no"]
|
||||
[with_libpri="no"]
|
||||
)
|
||||
if test "${enable_libpri}" != "no"
|
||||
if test "x${with_libpri}" != "xno"
|
||||
then
|
||||
save_LIBS="${LIBS}"
|
||||
save_CPPFLAGS="${CPPFLAGS}"
|
||||
save_LDFLAGS="${LDFLAGS}"
|
||||
|
||||
LIBPRI_CPPFLAGS=""
|
||||
LIBPRI_LDFLAGS=""
|
||||
|
||||
AC_MSG_RESULT([${as_nl}<<>> Digium libpri])
|
||||
|
||||
save_LIBS="${LIBS}"
|
||||
AS_IF([test "x${with_libpri}" != "xyes"],
|
||||
[LIBPRI_CPPFLAGS="-I${with_libpri}/include"
|
||||
LIBPRI_LDFLAGS="-L${with_libpri}/lib"],
|
||||
)
|
||||
|
||||
LDFLAGS="${save_LDFLAGS} ${LIBPRI_LDFLAGS}"
|
||||
CPPFLAGS="${save_CPPFLAGS} ${LIBPRI_CPPFLAGS}"
|
||||
LIBS="${LIBS} -lpri"
|
||||
|
||||
AC_MSG_CHECKING([whether libpri is usable])
|
||||
AC_LINK_IFELSE(
|
||||
[AC_LANG_PROGRAM(
|
||||
[#include <libpri.h>],
|
||||
[const char *version = pri_get_version();]
|
||||
)],
|
||||
[AC_MSG_RESULT([yes])],
|
||||
[AC_MSG_RESULT([yes])
|
||||
HAVE_LIBPRI="yes"],
|
||||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_ERROR([libpri is not installed or unusable (see config.log for details)])]
|
||||
AC_MSG_ERROR([libpri not found or unusable (see config.log for details)])]
|
||||
)
|
||||
|
||||
AC_MSG_CHECKING([whether libpri has BRI support])
|
||||
|
@ -241,10 +259,17 @@ then
|
|||
[AC_MSG_RESULT([no])
|
||||
AC_MSG_NOTICE([You will need libpri-1.4.12_beta1 or newer for AOC event support])]
|
||||
)
|
||||
|
||||
# libpri is available, set variables for Makefile(.am)
|
||||
AC_SUBST([LIBPRI_LIBS], [-lpri])
|
||||
AC_SUBST([LIBPRI_LDFLAGS])
|
||||
AC_SUBST([LIBPRI_CPPFLAGS])
|
||||
|
||||
LIBS="${save_LIBS}"
|
||||
LDFLAGS="${save_LDFLAGS}"
|
||||
CPPFLAGS="${save_CPPFLAGS}"
|
||||
fi
|
||||
HAVE_LIBPRI="${enable_libpri}"
|
||||
AM_CONDITIONAL([HAVE_LIBPRI],[test "${enable_libpri}" = "yes"])
|
||||
AM_CONDITIONAL([HAVE_LIBPRI],[test "x${HAVE_LIBPRI}" = "xyes"])
|
||||
|
||||
##
|
||||
# Sangoma Wanpipe
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../src/include;../src/include;../src/isdn/include"
|
||||
AdditionalIncludeDirectories="../../../src/include;../src/include;../../curl/include;../src/isdn/include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
|
@ -126,7 +126,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../src/include;../src/include;../src/isdn/include"
|
||||
AdditionalIncludeDirectories="../../../src/include;../src/include;../../curl/include;../src/isdn/include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
|
@ -210,7 +210,7 @@
|
|||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="../../../src/include;../src/include;../src/isdn/include"
|
||||
AdditionalIncludeDirectories="../../../src/include;../src/include;../../curl/include;../src/isdn/include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
|
@ -292,7 +292,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
AdditionalIncludeDirectories="../../../src/include;../src/include;../src/isdn/include"
|
||||
AdditionalIncludeDirectories="../../../src/include;../src/include;../../curl/include;../src/isdn/include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS"
|
||||
RuntimeLibrary="2"
|
||||
UsePrecompiledHeader="0"
|
||||
|
|
|
@ -91,7 +91,7 @@
|
|||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../src/include;../src/include;../src/isdn/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../src/include;../src/include;../../curl/include;../src/isdn/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
|
@ -117,7 +117,7 @@
|
|||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../../src/include;../src/include;../src/isdn/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../src/include;../src/include;../../curl/include;../src/isdn/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
|
@ -148,7 +148,7 @@
|
|||
</Midl>
|
||||
<ClCompile>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>../../../src/include;../src/include;../src/isdn/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../src/include;../src/include;../../curl/include;../src/isdn/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<MinimalRebuild>true</MinimalRebuild>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
|
@ -177,7 +177,7 @@
|
|||
<TargetEnvironment>X64</TargetEnvironment>
|
||||
</Midl>
|
||||
<ClCompile>
|
||||
<AdditionalIncludeDirectories>../../../src/include;../src/include;../src/isdn/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<AdditionalIncludeDirectories>../../../src/include;../src/include;../../curl/include;../src/isdn/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;MOD_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
|
|
|
@ -507,7 +507,7 @@ static switch_status_t channel_on_hangup(switch_core_session_t *session)
|
|||
const char *name = NULL;
|
||||
int span_id = 0;
|
||||
int chan_id = 0;
|
||||
int t = 0;
|
||||
uint32_t t = 0;
|
||||
uint32_t tokencnt;
|
||||
char *uuid = NULL;
|
||||
const char *token = NULL;
|
||||
|
@ -2317,7 +2317,6 @@ static FIO_SIGNAL_CB_FUNCTION(on_r2_signal)
|
|||
switch_set_flag_locked(tech_pvt, TFLAG_DEAD);
|
||||
channel = switch_core_session_get_channel(session);
|
||||
switch_channel_hangup(channel, caller_data->hangup_cause);
|
||||
ftdm_channel_clear_token(sigmsg->channel, switch_core_session_get_uuid(session));
|
||||
switch_core_session_rwunlock(session);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3969,7 +3969,9 @@ FT_DECLARE(ftdm_status_t) ftdm_channel_process_media(ftdm_channel_t *ftdmchan, v
|
|||
if (ftdmchan->state == FTDM_CHANNEL_STATE_CALLWAITING && (digit_char == 'D' || digit_char == 'A')) {
|
||||
ftdmchan->detected_tones[FTDM_TONEMAP_CALLWAITING_ACK]++;
|
||||
} else {
|
||||
char digit_str[2] = { digit_char, 0};
|
||||
char digit_str[2] = { 0 };
|
||||
|
||||
digit_str[0] = digit_char;
|
||||
|
||||
if (!ftdmchan->span->sig_dtmf || (ftdmchan->span->sig_dtmf(ftdmchan, (const char*)digit_str) != FTDM_BREAK)) {
|
||||
ftdm_channel_queue_dtmf(ftdmchan, digit_str);
|
||||
|
|
|
@ -310,9 +310,7 @@ static FIO_API_FUNCTION(ftdm_libpri_api)
|
|||
stream->write_function(stream, ftdm_libpri_usage);
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
if (argc == 2) {
|
||||
} else if (argc == 2) {
|
||||
if (!strcasecmp(argv[0], "kill")) {
|
||||
int span_id = atoi(argv[1]);
|
||||
ftdm_span_t *span = NULL;
|
||||
|
@ -321,7 +319,8 @@ static FIO_API_FUNCTION(ftdm_libpri_api)
|
|||
ftdm_libpri_data_t *isdn_data = span->signal_data;
|
||||
|
||||
if (span->start != ftdm_libpri_start) {
|
||||
stream->write_function(stream, "%s: -ERR invalid span.\n", __FILE__);
|
||||
stream->write_function(stream, "%s: -ERR '%s' is not a libpri span.\n",
|
||||
__FILE__, ftdm_span_get_name(span));
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
@ -329,13 +328,12 @@ static FIO_API_FUNCTION(ftdm_libpri_api)
|
|||
stream->write_function(stream, "%s: +OK killed.\n", __FILE__);
|
||||
goto done;
|
||||
} else {
|
||||
stream->write_function(stream, "%s: -ERR invalid span.\n", __FILE__);
|
||||
stream->write_function(stream, "%s: -ERR span '%s' not found.\n",
|
||||
__FILE__, argv[0]);
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (argc >= 2) {
|
||||
} else if (argc >= 2) {
|
||||
if (!strcasecmp(argv[0], "debug")) {
|
||||
ftdm_span_t *span = NULL;
|
||||
|
||||
|
@ -344,7 +342,8 @@ static FIO_API_FUNCTION(ftdm_libpri_api)
|
|||
uint32_t flags = 0;
|
||||
|
||||
if (span->start != ftdm_libpri_start) {
|
||||
stream->write_function(stream, "%s: -ERR invalid span.\n", __FILE__);
|
||||
stream->write_function(stream, "%s: -ERR '%s' is not a libpri span.\n",
|
||||
__FILE__, ftdm_span_get_name(span));
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
@ -364,7 +363,8 @@ static FIO_API_FUNCTION(ftdm_libpri_api)
|
|||
stream->write_function(stream, "%s: +OK debug %s.\n", __FILE__, (flags) ? "enabled" : "disabled");
|
||||
goto done;
|
||||
} else {
|
||||
stream->write_function(stream, "%s: -ERR invalid span.\n", __FILE__);
|
||||
stream->write_function(stream, "%s: -ERR span '%s' not found.\n",
|
||||
__FILE__, argv[0]);
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
@ -372,8 +372,10 @@ static FIO_API_FUNCTION(ftdm_libpri_api)
|
|||
ftdm_span_t *span = NULL;
|
||||
if (ftdm_span_find_by_name(argv[1], &span) == FTDM_SUCCESS) {
|
||||
ftdm_libpri_data_t *isdn_data = span->signal_data;
|
||||
|
||||
if (span->start != ftdm_libpri_start) {
|
||||
stream->write_function(stream, "%s: -ERR invalid span.\n", __FILE__);
|
||||
stream->write_function(stream, "%s: -ERR '%s' is not a libpri span.\n",
|
||||
__FILE__, ftdm_span_get_name(span));
|
||||
goto done;
|
||||
}
|
||||
|
||||
|
@ -381,7 +383,8 @@ static FIO_API_FUNCTION(ftdm_libpri_api)
|
|||
stream->write_function(stream, "%s: +OK reset.\n", __FILE__);
|
||||
goto done;
|
||||
} else {
|
||||
stream->write_function(stream, "%s: -ERR invalid span.\n", __FILE__);
|
||||
stream->write_function(stream, "%s: -ERR span '%s' not found.\n",
|
||||
__FILE__, argv[0]);
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
@ -389,8 +392,10 @@ static FIO_API_FUNCTION(ftdm_libpri_api)
|
|||
ftdm_span_t *span = NULL;
|
||||
if (ftdm_span_find_by_name(argv[1], &span) == FTDM_SUCCESS) {
|
||||
ftdm_libpri_data_t *isdn_data = span->signal_data;
|
||||
|
||||
if (span->start != ftdm_libpri_start) {
|
||||
stream->write_function(stream, "%s: -ERR invalid span.\n", __FILE__);
|
||||
stream->write_function(stream, "%s: -ERR '%s' is not a libpri span.\n",
|
||||
__FILE__, ftdm_span_get_name(span));
|
||||
goto done;
|
||||
}
|
||||
if (!strcasecmp(argv[2], "all")) {
|
||||
|
@ -405,7 +410,8 @@ static FIO_API_FUNCTION(ftdm_libpri_api)
|
|||
stream->write_function(stream, "%s: +OK restart set.\n", __FILE__);
|
||||
goto done;
|
||||
} else {
|
||||
stream->write_function(stream, "%s: -ERR invalid span.\n", __FILE__);
|
||||
stream->write_function(stream, "%s: -ERR span '%s' not found.\n",
|
||||
__FILE__, argv[0]);
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
@ -413,8 +419,10 @@ static FIO_API_FUNCTION(ftdm_libpri_api)
|
|||
ftdm_span_t *span = NULL;
|
||||
if (ftdm_span_find_by_name(argv[1], &span) == FTDM_SUCCESS) {
|
||||
ftdm_libpri_data_t *isdn_data = span->signal_data;
|
||||
|
||||
if (span->start != ftdm_libpri_start) {
|
||||
stream->write_function(stream, "%s: -ERR invalid span.\n", __FILE__);
|
||||
stream->write_function(stream, "%s: -ERR '%s' is not a libpri span.\n",
|
||||
__FILE__, ftdm_span_get_name(span));
|
||||
goto done;
|
||||
}
|
||||
if (!isdn_data->service_message_support) {
|
||||
|
@ -433,11 +441,15 @@ static FIO_API_FUNCTION(ftdm_libpri_api)
|
|||
stream->write_function(stream, "%s: +OK change status set.\n", __FILE__);
|
||||
goto done;
|
||||
} else {
|
||||
stream->write_function(stream, "%s: -ERR invalid span.\n", __FILE__);
|
||||
stream->write_function(stream, "%s: -ERR span '%s' not found.\n",
|
||||
__FILE__, argv[0]);
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
} else {
|
||||
/* zero args print usage */
|
||||
stream->write_function(stream, ftdm_libpri_usage);
|
||||
goto done;
|
||||
}
|
||||
|
||||
stream->write_function(stream, "%s: -ERR invalid command.\n", __FILE__);
|
||||
|
@ -1165,7 +1177,7 @@ static int on_proceeding(lpwrap_pri_t *spri, lpwrap_pri_event_t event_type, pri_
|
|||
|
||||
if (chan) {
|
||||
/* Open channel if inband information is available */
|
||||
if (pevent->proceeding.progressmask & PRI_PROG_INBAND_AVAILABLE) {
|
||||
if (pevent->proceeding.progressmask & PRI_PROG_INBAND_AVAILABLE || pevent->proceeding.progressmask & PRI_PROG_CALL_NOT_E2E_ISDN) {
|
||||
ftdm_log(FTDM_LOG_DEBUG, "-- In-band information available, B-Channel %d:%d\n",
|
||||
ftdm_channel_get_span_id(chan),
|
||||
ftdm_channel_get_id(chan));
|
||||
|
@ -1207,7 +1219,7 @@ static int on_progress(lpwrap_pri_t *spri, lpwrap_pri_event_t event_type, pri_ev
|
|||
|
||||
if (chan) {
|
||||
/* Open channel if inband information is available */
|
||||
if (pevent->proceeding.progressmask & PRI_PROG_INBAND_AVAILABLE) {
|
||||
if (pevent->proceeding.progressmask & PRI_PROG_INBAND_AVAILABLE || pevent->proceeding.progressmask & PRI_PROG_CALL_NOT_E2E_ISDN) {
|
||||
ftdm_log(FTDM_LOG_DEBUG, "-- In-band information available, B-Channel %d:%d\n",
|
||||
ftdm_channel_get_span_id(chan),
|
||||
ftdm_channel_get_id(chan));
|
||||
|
|
|
@ -547,7 +547,7 @@ static void handle_pri_passive_event(pritap_t *pritap, pri_event *e)
|
|||
break;
|
||||
|
||||
case PRI_EVENT_PROGRESS:
|
||||
crv = tap_pri_get_crv(pritap->pri, e->ring.call);
|
||||
crv = tap_pri_get_crv(pritap->pri, e->proceeding.call);
|
||||
ftdm_log(FTDM_LOG_DEBUG, "Progress on channel %s:%d:%d with callref %d\n",
|
||||
pritap->span->name, PRI_SPAN(e->proceeding.channel), PRI_CHANNEL(e->proceeding.channel), crv);
|
||||
break;
|
||||
|
|
|
@ -1155,6 +1155,77 @@ static FIO_CONFIGURE_SPAN_SIGNALING_FUNCTION(ftdm_sangoma_isdn_span_config)
|
|||
return FTDM_FAIL;
|
||||
}
|
||||
|
||||
if (span_data->cid_name_method == SNGISDN_CID_NAME_AUTO) {
|
||||
switch (span_data->switchtype) {
|
||||
case SNGISDN_SWITCH_EUROISDN:
|
||||
if (FTDM_SPAN_IS_BRI(span)) {
|
||||
span_data->cid_name_method = SNGISDN_CID_NAME_USR_USR_IE;
|
||||
} else {
|
||||
span_data->cid_name_method = SNGISDN_CID_NAME_DISPLAY_IE;
|
||||
}
|
||||
break;
|
||||
case SNGISDN_SWITCH_DMS100:
|
||||
span_data->cid_name_method = SNGISDN_CID_NAME_DISPLAY_IE;
|
||||
break;
|
||||
case SNGISDN_SWITCH_NI2:
|
||||
case SNGISDN_SWITCH_5ESS:
|
||||
case SNGISDN_SWITCH_4ESS:
|
||||
span_data->cid_name_method = SNGISDN_CID_NAME_FACILITY_IE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (span_data->send_cid_name == SNGISDN_OPT_DEFAULT) {
|
||||
switch (span_data->switchtype) {
|
||||
case SNGISDN_SWITCH_EUROISDN:
|
||||
#ifdef SNGISDN_SUPPORT_CALLING_NAME_IN_FACILITY
|
||||
case SNGISDN_SWITCH_NI2:
|
||||
case SNGISDN_SWITCH_5ESS:
|
||||
case SNGISDN_SWITCH_4ESS:
|
||||
#endif
|
||||
if (span_data->signalling == SNGISDN_SIGNALING_NET) {
|
||||
span_data->send_cid_name = SNGISDN_OPT_TRUE;
|
||||
} else {
|
||||
span_data->send_cid_name = SNGISDN_OPT_FALSE;
|
||||
}
|
||||
break;
|
||||
case SNGISDN_SWITCH_DMS100:
|
||||
span_data->send_cid_name = SNGISDN_OPT_TRUE;
|
||||
break;
|
||||
#ifndef SNGISDN_SUPPORT_CALLING_NAME_IN_FACILITY
|
||||
case SNGISDN_SWITCH_NI2:
|
||||
case SNGISDN_SWITCH_5ESS:
|
||||
case SNGISDN_SWITCH_4ESS:
|
||||
span_data->send_cid_name = SNGISDN_OPT_FALSE;
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
span_data->send_cid_name = SNGISDN_OPT_FALSE;
|
||||
break;
|
||||
}
|
||||
} else if (span_data->send_cid_name == SNGISDN_OPT_TRUE) {
|
||||
switch (span_data->switchtype) {
|
||||
case SNGISDN_SWITCH_NI2:
|
||||
case SNGISDN_SWITCH_5ESS:
|
||||
case SNGISDN_SWITCH_4ESS:
|
||||
#ifndef SNGISDN_SUPPORT_CALLING_NAME_IN_FACILITY
|
||||
ftdm_log(FTDM_LOG_WARNING, "Sending Calling Name in Facility IE not supported, please update your libsng_isdn library\n");
|
||||
span_data->send_cid_name = SNGISDN_OPT_FALSE;
|
||||
#endif
|
||||
break;
|
||||
case SNGISDN_SWITCH_INSNET: /* Don't know how to transmit caller ID name on INSNET */
|
||||
case SNGISDN_SWITCH_QSIG: /* It seems like QSIG does not support Caller ID */
|
||||
span_data->send_cid_name = SNGISDN_OPT_FALSE;
|
||||
break;
|
||||
case SNGISDN_SWITCH_EUROISDN:
|
||||
break;
|
||||
default:
|
||||
span_data->send_cid_name = SNGISDN_OPT_FALSE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
span->start = ftdm_sangoma_isdn_start;
|
||||
span->stop = ftdm_sangoma_isdn_stop;
|
||||
|
|
|
@ -132,6 +132,13 @@ typedef enum {
|
|||
SNGISDN_AVAIL_UP = 10,
|
||||
} sngisdn_avail_t;
|
||||
|
||||
typedef enum {
|
||||
SNGISDN_CID_NAME_AUTO,
|
||||
SNGISDN_CID_NAME_DISPLAY_IE,
|
||||
SNGISDN_CID_NAME_USR_USR_IE,
|
||||
SNGISDN_CID_NAME_FACILITY_IE,
|
||||
} sngisdn_cid_name_t;
|
||||
|
||||
typedef enum {
|
||||
SNGISDN_EVENT_CON_IND = 1,
|
||||
SNGISDN_EVENT_CON_CFM,
|
||||
|
@ -262,10 +269,10 @@ typedef struct sngisdn_span_data {
|
|||
uint8_t raw_trace_q921; /* TODO: combine with trace_flags */
|
||||
uint8_t timer_t3;
|
||||
uint8_t restart_opt;
|
||||
uint8_t dynamic_tei;
|
||||
uint8_t restart_timeout;
|
||||
uint8_t force_sending_complete;
|
||||
uint8_t cid_name_in_display_ie; /* In BRI, send the CID-name inside Display IE instead of Usr-usr */
|
||||
uint8_t cid_name_method;
|
||||
uint8_t send_cid_name;
|
||||
char* local_numbers[SNGISDN_NUM_LOCAL_NUMBERS];
|
||||
ftdm_timer_id_t timers[SNGISDN_NUM_SPAN_TIMERS];
|
||||
ftdm_sched_t *sched;
|
||||
|
|
|
@ -284,12 +284,14 @@ ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_
|
|||
signal_data->ignore_cause_value = SNGISDN_OPT_DEFAULT;
|
||||
signal_data->timer_t3 = 8;
|
||||
signal_data->restart_opt = SNGISDN_OPT_DEFAULT;
|
||||
signal_data->dynamic_tei = SNGISDN_OPT_DEFAULT;
|
||||
signal_data->link_id = span->span_id;
|
||||
signal_data->transfer_timeout = 20000;
|
||||
signal_data->att_remove_dtmf = SNGISDN_OPT_DEFAULT;
|
||||
signal_data->force_sending_complete = SNGISDN_OPT_DEFAULT;
|
||||
|
||||
signal_data->cid_name_method = SNGISDN_CID_NAME_AUTO;
|
||||
signal_data->send_cid_name = SNGISDN_OPT_DEFAULT;
|
||||
|
||||
span->default_caller_data.dnis.plan = FTDM_NPI_INVALID;
|
||||
span->default_caller_data.dnis.type = FTDM_TON_INVALID;
|
||||
span->default_caller_data.cid_num.plan = FTDM_NPI_INVALID;
|
||||
|
@ -362,8 +364,6 @@ ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_
|
|||
parse_yesno(var, val, &signal_data->restart_opt);
|
||||
} else if (!strcasecmp(var, "channel-restart-timeout")) {
|
||||
signal_data->restart_timeout = atoi(val);
|
||||
} else if (!strcasecmp(var, "dynamic-tei")) {
|
||||
parse_yesno(var, val, &signal_data->dynamic_tei);
|
||||
} else if (!strcasecmp(var, "local-number")) {
|
||||
if (add_local_number(val, span) != FTDM_SUCCESS) {
|
||||
return FTDM_FAIL;
|
||||
|
@ -404,8 +404,30 @@ ftdm_status_t ftmod_isdn_parse_cfg(ftdm_conf_parameter_t *ftdm_parameters, ftdm_
|
|||
#else
|
||||
ftdm_log(FTDM_LOG_WARNING, "chan-id-invert-extend-bit is not supported in your version of libsng_isdn\n");
|
||||
#endif
|
||||
} else if (!strcasecmp(var, "cid-name-in-display-ie")) {
|
||||
parse_yesno(var, val, &signal_data->cid_name_in_display_ie);
|
||||
} else if (!strcasecmp(var, "cid-name-transmit-method")) {
|
||||
if (!strcasecmp(val, "display-ie")) {
|
||||
signal_data->cid_name_method = SNGISDN_CID_NAME_DISPLAY_IE;
|
||||
} else if (!strcasecmp(val, "user-user-ie")) {
|
||||
signal_data->cid_name_method = SNGISDN_CID_NAME_USR_USR_IE;
|
||||
} else if (!strcasecmp(val, "facility-ie")) {
|
||||
signal_data->cid_name_method = SNGISDN_CID_NAME_FACILITY_IE;
|
||||
} else if (!strcasecmp(val, "auto") || !strcasecmp(val, "automatic") || !strcasecmp(val, "default")) {
|
||||
signal_data->cid_name_method = SNGISDN_CID_NAME_AUTO;
|
||||
} else {
|
||||
ftdm_log(FTDM_LOG_WARNING, "Invalid option %s for parameter %s\n", val, var);
|
||||
signal_data->cid_name_method = SNGISDN_CID_NAME_AUTO;
|
||||
}
|
||||
} else if (!strcasecmp(var, "send-cid-name")) {
|
||||
if (!strcasecmp(val, "yes")) {
|
||||
signal_data->send_cid_name = SNGISDN_OPT_TRUE;
|
||||
} else if (!strcasecmp(val, "no")) {
|
||||
signal_data->send_cid_name = SNGISDN_OPT_FALSE;
|
||||
} else if (!strcasecmp(val, "auto") || !strcasecmp(val, "automatic") || !strcasecmp(val, "default")) {
|
||||
signal_data->send_cid_name = SNGISDN_OPT_DEFAULT;
|
||||
} else {
|
||||
ftdm_log(FTDM_LOG_WARNING, "Invalid option %s for parameter %s\n", val, var);
|
||||
signal_data->send_cid_name = SNGISDN_OPT_DEFAULT;
|
||||
}
|
||||
} else {
|
||||
ftdm_log(FTDM_LOG_WARNING, "Ignoring unknown parameter %s\n", ftdm_parameters[paramindex].var);
|
||||
}
|
||||
|
|
|
@ -865,12 +865,6 @@ ftdm_status_t sngisdn_stack_cfg_q931_dlsap(ftdm_span_t *span)
|
|||
return FTDM_FAIL;
|
||||
}
|
||||
|
||||
/* Override TEI teiAlloc Option if user specified it */
|
||||
if (signal_data->dynamic_tei != SNGISDN_OPT_DEFAULT ) {
|
||||
ftdm_log(FTDM_LOG_DEBUG, "%s: TEI allocation set to %s\n", span->name, (signal_data->dynamic_tei == SNGISDN_OPT_TRUE)? "dynamic": "static");
|
||||
cfg.t.cfg.s.inDLSAP.teiAlloc = (signal_data->dynamic_tei==SNGISDN_OPT_TRUE)?IN_DYNAMIC:IN_STATIC;
|
||||
}
|
||||
|
||||
if (sng_isdn_q931_config(&pst, &cfg)) {
|
||||
return FTDM_FAIL;
|
||||
}
|
||||
|
|
|
@ -897,12 +897,19 @@ int16_t sngisdn_rcv_l1_data_req(uint16_t spId, sng_l1_frame_t *l1_frame)
|
|||
do {
|
||||
flags = FTDM_WRITE;
|
||||
status = signal_data->dchan->fio->wait(signal_data->dchan, &flags, 1000);
|
||||
if (status != FTDM_SUCCESS) {
|
||||
ftdm_log_chan_msg(signal_data->dchan, FTDM_LOG_WARNING, "transmit timed-out\n");
|
||||
return -1;
|
||||
switch(status) {
|
||||
case FTDM_SUCCESS:
|
||||
break;
|
||||
case FTDM_TIMEOUT:
|
||||
continue;
|
||||
case FTDM_FAIL:
|
||||
default:
|
||||
ftdm_log_chan_msg(signal_data->dchan, FTDM_LOG_WARNING, "failed to poll for channel\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/* status = FTDM_SUCCESS */
|
||||
if ((flags & FTDM_WRITE)) {
|
||||
#if 0
|
||||
int i;
|
||||
|
@ -993,7 +1000,9 @@ void sngisdn_rcv_sng_log(uint8_t level, char *fmt,...)
|
|||
ftdm_log(FTDM_LOG_DEBUG, "sng_isdn->%s\n", data);
|
||||
break;
|
||||
case SNG_LOGLEVEL_WARN:
|
||||
ftdm_log(FTDM_LOG_INFO, "sng_isdn->%s\n", data);
|
||||
if ( strncmp(data, "Invalid Q.921/Q.931 frame", 25) ) {
|
||||
ftdm_log(FTDM_LOG_INFO, "sng_isdn->%s", data);
|
||||
}
|
||||
break;
|
||||
case SNG_LOGLEVEL_INFO:
|
||||
ftdm_log(FTDM_LOG_INFO, "sng_isdn->%s\n", data);
|
||||
|
|
|
@ -567,7 +567,7 @@ ftdm_status_t set_calling_num2(ftdm_channel_t *ftdmchan, CgPtyNmb *cgPtyNmb)
|
|||
ftdm_caller_data_t *caller_data = &ftdmchan->caller_data;
|
||||
|
||||
string = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "isdn.cg_pty2.digits");
|
||||
if ((string == NULL) || !(*string)) {
|
||||
if (ftdm_strlen_zero(string)) {
|
||||
return FTDM_FAIL;
|
||||
}
|
||||
|
||||
|
@ -696,70 +696,71 @@ ftdm_status_t set_redir_num(ftdm_channel_t *ftdmchan, RedirNmb *redirNmb)
|
|||
ftdm_status_t set_calling_name(ftdm_channel_t *ftdmchan, ConEvnt *conEvnt)
|
||||
{
|
||||
uint8_t len;
|
||||
ftdm_caller_data_t *caller_data = &ftdmchan->caller_data;
|
||||
/* sngisdn_chan_data_t *sngisdn_info = ftdmchan->call_data; */
|
||||
const char *string = NULL;
|
||||
ftdm_caller_data_t *caller_data = &ftdmchan->caller_data;
|
||||
sngisdn_span_data_t *signal_data = (sngisdn_span_data_t*) ftdmchan->span->signal_data;
|
||||
|
||||
ftdm_bool_t force_send_cid_name = FTDM_FALSE;
|
||||
|
||||
len = strlen(caller_data->cid_name);
|
||||
if (!len) {
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
if (FTDM_SPAN_IS_BRI(ftdmchan->span) &&
|
||||
signal_data->cid_name_in_display_ie != SNGISDN_OPT_TRUE) {
|
||||
|
||||
conEvnt->usrUsr.eh.pres = PRSNT_NODEF;
|
||||
conEvnt->usrUsr.protocolDisc.pres = PRSNT_NODEF;
|
||||
conEvnt->usrUsr.protocolDisc.val = PD_IA5; /* IA5 chars */
|
||||
conEvnt->usrUsr.usrInfo.pres = PRSNT_NODEF;
|
||||
conEvnt->usrUsr.usrInfo.len = len;
|
||||
/* in sangoma_brid we used to send usr-usr info as <cid_name>!<calling_number>,
|
||||
change to previous style if current one does not work */
|
||||
memcpy(conEvnt->usrUsr.usrInfo.val, caller_data->cid_name, len);
|
||||
} else {
|
||||
switch (signal_data->switchtype) {
|
||||
case SNGISDN_SWITCH_NI2:
|
||||
#ifdef SNGISDN_SUPPORT_CALLING_NAME_IN_FACILITY
|
||||
{
|
||||
if (signal_data->signalling == SNGISDN_SIGNALING_NET) {
|
||||
sng_isdn_encode_facility_caller_name(caller_data->cid_name, conEvnt->facilityStr.facilityStr.val, &conEvnt->facilityStr.facilityStr.len);
|
||||
conEvnt->facilityStr.eh.pres = PRSNT_NODEF;
|
||||
conEvnt->facilityStr.facilityStr.pres = PRSNT_NODEF;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case SNGISDN_SWITCH_EUROISDN:
|
||||
if (signal_data->signalling != SNGISDN_SIGNALING_NET) {
|
||||
break;
|
||||
}
|
||||
/* follow through */
|
||||
case SNGISDN_SWITCH_5ESS:
|
||||
case SNGISDN_SWITCH_4ESS:
|
||||
conEvnt->display.dispInfo.pres = PRSNT_NODEF;
|
||||
conEvnt->display.dispInfo.len = len;
|
||||
memcpy(conEvnt->display.dispInfo.val, caller_data->cid_name, len);
|
||||
break;
|
||||
case SNGISDN_SWITCH_DMS100:
|
||||
conEvnt->ntDisplay[0].eh.pres = PRSNT_NODEF;
|
||||
conEvnt->ntDisplay[0].dispTypeNt.pres = PRSNT_NODEF;
|
||||
conEvnt->ntDisplay[0].dispTypeNt.val = 0x01; /* Calling Party Name */
|
||||
conEvnt->ntDisplay[0].assocInfo.pres = PRSNT_NODEF;
|
||||
conEvnt->ntDisplay[0].assocInfo.val = 0x03; /* Included */
|
||||
conEvnt->ntDisplay[0].eh.pres = PRSNT_NODEF;
|
||||
conEvnt->ntDisplay[0].eh.pres = PRSNT_NODEF;
|
||||
conEvnt->ntDisplay[0].dispInfo.pres = PRSNT_NODEF;
|
||||
conEvnt->ntDisplay[0].dispInfo.len = len;
|
||||
memcpy(conEvnt->ntDisplay[0].dispInfo.val, caller_data->cid_name, len);
|
||||
break;
|
||||
case SNGISDN_SWITCH_QSIG:
|
||||
/* It seems like QSIG does not support Caller ID Name */
|
||||
break;
|
||||
case SNGISDN_SWITCH_INSNET:
|
||||
/* Don't know how to transmit caller ID name on INSNET */
|
||||
break;
|
||||
string = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "isdn.send_cid_name");
|
||||
if (!ftdm_strlen_zero(string)) {
|
||||
if (!strcasecmp(string, "no")) {
|
||||
return FTDM_SUCCESS;
|
||||
} else if (!strcasecmp(string, "yes")) {
|
||||
force_send_cid_name = FTDM_TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
if (force_send_cid_name == FTDM_FALSE && signal_data->send_cid_name == SNGISDN_OPT_FALSE) {
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
switch(signal_data->cid_name_method) {
|
||||
case SNGISDN_CID_NAME_FACILITY_IE:
|
||||
#ifdef SNGISDN_SUPPORT_CALLING_NAME_IN_FACILITY
|
||||
/* Note: The Facility IE will be overwritten if user chose to transmit a Raw Facility IE */
|
||||
sng_isdn_encode_facility_caller_name(caller_data->cid_name, conEvnt->facilityStr.facilityStr.val, &conEvnt->facilityStr.facilityStr.len);
|
||||
conEvnt->facilityStr.eh.pres = PRSNT_NODEF;
|
||||
conEvnt->facilityStr.facilityStr.pres = PRSNT_NODEF;
|
||||
#endif
|
||||
break;
|
||||
case SNGISDN_CID_NAME_USR_USR_IE:
|
||||
conEvnt->usrUsr.eh.pres = PRSNT_NODEF;
|
||||
conEvnt->usrUsr.protocolDisc.pres = PRSNT_NODEF;
|
||||
conEvnt->usrUsr.protocolDisc.val = PD_IA5; /* IA5 chars */
|
||||
conEvnt->usrUsr.usrInfo.pres = PRSNT_NODEF;
|
||||
conEvnt->usrUsr.usrInfo.len = len;
|
||||
/* in sangoma_brid we used to send usr-usr info as <cid_name>!<calling_number>,
|
||||
change to previous style if current one does not work */
|
||||
memcpy(conEvnt->usrUsr.usrInfo.val, caller_data->cid_name, len);
|
||||
break;
|
||||
case SNGISDN_CID_NAME_DISPLAY_IE:
|
||||
if (signal_data->switchtype == SNGISDN_SWITCH_DMS100) {
|
||||
conEvnt->ntDisplay[0].eh.pres = PRSNT_NODEF;
|
||||
conEvnt->ntDisplay[0].dispTypeNt.pres = PRSNT_NODEF;
|
||||
conEvnt->ntDisplay[0].dispTypeNt.val = 0x01; /* Calling Party Name */
|
||||
conEvnt->ntDisplay[0].assocInfo.pres = PRSNT_NODEF;
|
||||
conEvnt->ntDisplay[0].assocInfo.val = 0x03; /* Included */
|
||||
conEvnt->ntDisplay[0].eh.pres = PRSNT_NODEF;
|
||||
conEvnt->ntDisplay[0].eh.pres = PRSNT_NODEF;
|
||||
conEvnt->ntDisplay[0].dispInfo.pres = PRSNT_NODEF;
|
||||
conEvnt->ntDisplay[0].dispInfo.len = len;
|
||||
memcpy(conEvnt->ntDisplay[0].dispInfo.val, caller_data->cid_name, len);
|
||||
} else {
|
||||
conEvnt->display.eh.pres = PRSNT_NODEF;
|
||||
conEvnt->display.dispInfo.pres = PRSNT_NODEF;
|
||||
conEvnt->display.dispInfo.len = len;
|
||||
memcpy(conEvnt->display.dispInfo.val, caller_data->cid_name, len);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return FTDM_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -767,7 +768,7 @@ ftdm_status_t set_calling_subaddr(ftdm_channel_t *ftdmchan, CgPtySad *cgPtySad)
|
|||
{
|
||||
const char* clg_subaddr = NULL;
|
||||
clg_subaddr = ftdm_usrmsg_get_var(ftdmchan->usrmsg, "isdn.calling_subaddr");
|
||||
if ((clg_subaddr != NULL) && (*clg_subaddr)) {
|
||||
if (!ftdm_strlen_zero(clg_subaddr)) {
|
||||
unsigned len = strlen (clg_subaddr);
|
||||
cgPtySad->eh.pres = PRSNT_NODEF;
|
||||
cgPtySad->typeSad.pres = 1;
|
||||
|
|
|
@ -62,6 +62,7 @@ sng_switch_type_t sng_switch_type_map[] =
|
|||
{ 1, "india" , LSI_SW_INDIA , LSI_SW_INDIA },
|
||||
{ 1, "uk" , LSI_SW_UK , LSI_SW_UK },
|
||||
{ 1, "russia" , LSI_SW_RUSSIA , LSI_SW_RUSSIA },
|
||||
{ 1, "china" , LSI_SW_CHINA , LSI_SW_CHINA },
|
||||
{ 0, "", 0, 0 },
|
||||
};
|
||||
|
||||
|
|
|
@ -256,7 +256,7 @@ static void zt_build_gains(struct zt_gains *g, float rxgain, float txgain, int c
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief Initialises a range of ftdmtel channels
|
||||
* \brief Initialises a range of Zaptel/DAHDI channels
|
||||
* \param span FreeTDM span
|
||||
* \param start Initial wanpipe channel number
|
||||
* \param end Final wanpipe channel number
|
||||
|
@ -349,7 +349,7 @@ static unsigned zt_open_range(ftdm_span_t *span, unsigned start, unsigned end, f
|
|||
}
|
||||
|
||||
if (ioctl(CONTROL_FD, codes.CHANCONFIG, &cc)) {
|
||||
ftdm_log(FTDM_LOG_WARNING, "this ioctl fails on older ftdmtel but is harmless if you used ztcfg\n[device %s chan %d fd %d (%s)]\n", chanpath, x, CONTROL_FD, strerror(errno));
|
||||
ftdm_log(FTDM_LOG_WARNING, "this ioctl fails in older zaptel but is harmless if you used ztcfg\n[device %s chan %d fd %d (%s)]\n", chanpath, x, CONTROL_FD, strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -453,7 +453,7 @@ static unsigned zt_open_range(ftdm_span_t *span, unsigned start, unsigned end, f
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief Initialises an freetdm ftdmtel span from a configuration string
|
||||
* \brief Initialises a freetdm Zaptel/DAHDI span from a configuration string
|
||||
* \param span FreeTDM span
|
||||
* \param str Configuration string
|
||||
* \param type FreeTDM span type
|
||||
|
@ -523,7 +523,7 @@ static FIO_CONFIGURE_SPAN_FUNCTION(zt_configure_span)
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief Process configuration variable for a ftdmtel profile
|
||||
* \brief Process configuration variable for a Zaptel/DAHDI profile
|
||||
* \param category Wanpipe profile name
|
||||
* \param var Variable name
|
||||
* \param val Variable value
|
||||
|
@ -601,7 +601,7 @@ static FIO_CONFIGURE_FUNCTION(zt_configure)
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief Opens a ftdmtel channel
|
||||
* \brief Opens a Zaptel/DAHDI channel
|
||||
* \param ftdmchan Channel to open
|
||||
* \return Success or failure
|
||||
*/
|
||||
|
@ -671,7 +671,7 @@ static FIO_OPEN_FUNCTION(zt_open)
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief Closes ftdmtel channel
|
||||
* \brief Closes Zaptel/DAHDI channel
|
||||
* \param ftdmchan Channel to close
|
||||
* \return Success
|
||||
*/
|
||||
|
@ -689,7 +689,7 @@ static FIO_CLOSE_FUNCTION(zt_close)
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief Executes an FreeTDM command on a ftdmtel channel
|
||||
* \brief Executes a FreeTDM command on a Zaptel/DAHDI channel
|
||||
* \param ftdmchan Channel to execute command on
|
||||
* \param command FreeTDM command to execute
|
||||
* \param obj Object (unused)
|
||||
|
@ -870,7 +870,7 @@ static FIO_COMMAND_FUNCTION(zt_command)
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief Gets alarms from a ftdmtel Channel
|
||||
* \brief Gets alarms from a Zaptel/DAHDI channel
|
||||
* \param ftdmchan Channel to get alarms from
|
||||
* \return Success or failure
|
||||
*/
|
||||
|
@ -893,7 +893,7 @@ static FIO_GET_ALARMS_FUNCTION(zt_get_alarms)
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief Waits for an event on a ftdmtel channel
|
||||
* \brief Waits for an event on a Zaptel/DAHDI channel
|
||||
* \param ftdmchan Channel to open
|
||||
* \param flags Type of event to wait for
|
||||
* \param to Time to wait (in ms)
|
||||
|
@ -967,7 +967,7 @@ pollagain:
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief Checks for events on a ftdmtel span
|
||||
* \brief Checks for events on a Zaptel/DAHDI span
|
||||
* \param span Span to check for events
|
||||
* \param ms Time to wait for event
|
||||
* \return Success if event is waiting or failure if not
|
||||
|
@ -1164,7 +1164,7 @@ FIO_CHANNEL_NEXT_EVENT_FUNCTION(zt_channel_next_event)
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief Retrieves an event from a ftdmtel span
|
||||
* \brief Retrieves an event from a Zaptel/DAHDI span
|
||||
* \param span Span to retrieve event from
|
||||
* \param event FreeTDM event to return
|
||||
* \return Success or failure
|
||||
|
@ -1204,7 +1204,7 @@ FIO_SPAN_NEXT_EVENT_FUNCTION(zt_next_event)
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief Reads data from a ftdmtel channel
|
||||
* \brief Reads data from a Zaptel/DAHDI channel
|
||||
* \param ftdmchan Channel to read from
|
||||
* \param data Data buffer
|
||||
* \param datalen Size of data buffer
|
||||
|
@ -1246,7 +1246,7 @@ static FIO_READ_FUNCTION(zt_read)
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief Writes data to a ftdmtel channel
|
||||
* \brief Writes data to a Zaptel/DAHDI channel
|
||||
* \param ftdmchan Channel to write to
|
||||
* \param data Data buffer
|
||||
* \param datalen Size of data buffer
|
||||
|
@ -1285,7 +1285,7 @@ tryagain:
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief Destroys a ftdmtel Channel
|
||||
* \brief Destroys a Zaptel/DAHDI Channel
|
||||
* \param ftdmchan Channel to destroy
|
||||
* \return Success
|
||||
*/
|
||||
|
@ -1298,12 +1298,12 @@ static FIO_CHANNEL_DESTROY_FUNCTION(zt_channel_destroy)
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief Global FreeTDM IO interface for ftdmtel
|
||||
* \brief Global FreeTDM IO interface for Zaptel/DAHDI
|
||||
*/
|
||||
static ftdm_io_interface_t zt_interface;
|
||||
|
||||
/**
|
||||
* \brief Loads ftdmtel IO module
|
||||
* \brief Loads Zaptel/DAHDI IO module
|
||||
* \param fio FreeTDM IO interface
|
||||
* \return Success or failure
|
||||
*/
|
||||
|
@ -1358,7 +1358,7 @@ static FIO_IO_LOAD_FUNCTION(zt_init)
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief Unloads ftdmtel IO module
|
||||
* \brief Unloads Zaptel/DAHDI IO module
|
||||
* \return Success
|
||||
*/
|
||||
static FIO_IO_UNLOAD_FUNCTION(zt_destroy)
|
||||
|
@ -1369,7 +1369,7 @@ static FIO_IO_UNLOAD_FUNCTION(zt_destroy)
|
|||
}
|
||||
|
||||
/**
|
||||
* \brief FreeTDM ftdmtel IO module definition
|
||||
* \brief FreeTDM Zaptel/DAHDI IO module definition
|
||||
*/
|
||||
ftdm_module_t ftdm_module = {
|
||||
"zt",
|
||||
|
|
|
@ -104,6 +104,10 @@
|
|||
#include <sys/time.h>
|
||||
#endif
|
||||
|
||||
#ifdef __linux__
|
||||
#include <execinfo.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
@ -220,6 +224,27 @@ extern "C" {
|
|||
|
||||
#define ftdm_is_dtmf(key) ((key > 47 && key < 58) || (key > 64 && key < 69) || (key > 96 && key < 101) || key == 35 || key == 42 || key == 87 || key == 119)
|
||||
|
||||
#ifdef __linux__
|
||||
#define ftdm_print_stack(level) \
|
||||
do { \
|
||||
void *__stacktrace[100] = { 0 }; \
|
||||
char **__symbols = NULL; \
|
||||
int __size = 0; \
|
||||
int __i = 0; \
|
||||
__size = backtrace(__stacktrace, ftdm_array_len(__stacktrace)); \
|
||||
__symbols = backtrace_symbols(__stacktrace, __size); \
|
||||
if (__symbols) { \
|
||||
for (__i = 0; __i < __size; __i++) { \
|
||||
ftdm_log(__level, "%s\n", __symbols[i]); \
|
||||
} \
|
||||
free(__symbols); \
|
||||
} \
|
||||
} while (0);
|
||||
#else
|
||||
#define ftdm_print_stack(level) ftdm_log(level, "FTDM_PRINT_STACK is not implemented in this operating system!\n");
|
||||
#endif
|
||||
|
||||
|
||||
#define FTDM_SPAN_IS_BRI(x) ((x)->trunk_type == FTDM_TRUNK_BRI || (x)->trunk_type == FTDM_TRUNK_BRI_PTMP)
|
||||
/*!
|
||||
\brief Copy flags from one arbitrary object to another
|
||||
|
|
|
@ -1,16 +1,25 @@
|
|||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
|
||||
Software Foundation, Inc.
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
|
||||
2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. This file is offered as-is,
|
||||
without warranty of any kind.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
Briefly, the shell commands `./configure; make; make install' should
|
||||
configure, build, and install this package. The following
|
||||
more-detailed instructions are generic; see the `README' file for
|
||||
instructions specific to this package. Some packages provide this
|
||||
`INSTALL' file but do not implement all of the features documented
|
||||
below. The lack of an optional feature in a given package is not
|
||||
necessarily a bug. More recommendations for GNU packages can be found
|
||||
in *note Makefile Conventions: (standards)Makefile Conventions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
|
@ -23,9 +32,9 @@ debugging `configure').
|
|||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. (Caching is
|
||||
the results of its tests to speed up reconfiguring. Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.)
|
||||
cache files.
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
|
@ -35,30 +44,37 @@ some point `config.cache' contains results you don't want to keep, you
|
|||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You only need
|
||||
`configure.ac' if you want to change it or regenerate `configure' using
|
||||
a newer version of `autoconf'.
|
||||
`configure' by a program called `autoconf'. You need `configure.ac' if
|
||||
you want to change it or regenerate `configure' using a newer version
|
||||
of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
`./configure' to configure the package for your system.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
Running `configure' might take a while. While running, it prints
|
||||
some messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
the package, generally using the just-built uninstalled binaries.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
documentation. When installing into a prefix owned by root, it is
|
||||
recommended that the package be configured and built as a regular
|
||||
user, and only the `make install' phase executed with root
|
||||
privileges.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
5. Optionally, type `make installcheck' to repeat any self-tests, but
|
||||
this time using the binaries in their final installed location.
|
||||
This target does not install anything. Running this target as a
|
||||
regular user, particularly if the prior `make install' required
|
||||
root privileges, verifies that the installation completed
|
||||
correctly.
|
||||
|
||||
6. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
|
@ -67,45 +83,69 @@ The simplest way to compile this package is:
|
|||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
7. Often, you can also type `make uninstall' to remove the installed
|
||||
files again. In practice, not all packages have tested that
|
||||
uninstallation works correctly, even though it is required by the
|
||||
GNU Coding Standards.
|
||||
|
||||
8. Some packages, particularly those that use Automake, provide `make
|
||||
distcheck', which can by used by developers to test that all other
|
||||
targets like `make install' and `make uninstall' work correctly.
|
||||
This target is generally not run by end users.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that the
|
||||
`configure' script does not know about. Run `./configure --help' for
|
||||
details on some of the pertinent environment variables.
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. Run `./configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
||||
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
own directory. To do this, you can use GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
source code in the directory that `configure' is in and in `..'. This
|
||||
is known as a "VPATH" build.
|
||||
|
||||
If you have to use a `make' that does not support the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a
|
||||
time in the source code directory. After you have installed the
|
||||
package for one architecture, use `make distclean' before reconfiguring
|
||||
for another architecture.
|
||||
With a non-GNU `make', it is safer to compile the package for one
|
||||
architecture at a time in the source code directory. After you have
|
||||
installed the package for one architecture, use `make distclean' before
|
||||
reconfiguring for another architecture.
|
||||
|
||||
On MacOS X 10.5 and later systems, you can create libraries and
|
||||
executables that work on multiple system types--known as "fat" or
|
||||
"universal" binaries--by specifying multiple `-arch' options to the
|
||||
compiler but only a single `-arch' option to the preprocessor. Like
|
||||
this:
|
||||
|
||||
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CPP="gcc -E" CXXCPP="g++ -E"
|
||||
|
||||
This is not guaranteed to produce working output in all cases, you
|
||||
may have to build one architecture at a time and combine the results
|
||||
using the `lipo' tool if you have problems.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' installs the package's commands under
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX'.
|
||||
`configure' the option `--prefix=PREFIX', where PREFIX must be an
|
||||
absolute file name.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
|
@ -116,16 +156,47 @@ Documentation and other data files still use the regular prefix.
|
|||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
you can set and what kinds of files go in them. In general, the
|
||||
default for these options is expressed in terms of `${prefix}', so that
|
||||
specifying just `--prefix' will affect all of the other directory
|
||||
specifications that were not explicitly provided.
|
||||
|
||||
The most portable way to affect installation locations is to pass the
|
||||
correct locations to `configure'; however, many packages provide one or
|
||||
both of the following shortcuts of passing variable assignments to the
|
||||
`make install' command line to change installation locations without
|
||||
having to reconfigure or recompile.
|
||||
|
||||
The first method involves providing an override variable for each
|
||||
affected directory. For example, `make install
|
||||
prefix=/alternate/directory' will choose an alternate location for all
|
||||
directory configuration variables that were expressed in terms of
|
||||
`${prefix}'. Any directories that were specified during `configure',
|
||||
but not in terms of `${prefix}', must each be overridden at install
|
||||
time for the entire installation to be relocated. The approach of
|
||||
makefile variable overrides for each directory variable is required by
|
||||
the GNU Coding Standards, and ideally causes no recompilation.
|
||||
However, some platforms have known limitations with the semantics of
|
||||
shared libraries that end up requiring recompilation when using this
|
||||
method, particularly noticeable in packages that use GNU Libtool.
|
||||
|
||||
The second method involves providing the `DESTDIR' variable. For
|
||||
example, `make install DESTDIR=/alternate/directory' will prepend
|
||||
`/alternate/directory' before all installation names. The approach of
|
||||
`DESTDIR' overrides is not required by the GNU Coding Standards, and
|
||||
does not work on platforms that have drive letters. On the other hand,
|
||||
it does better at avoiding recompilation issues, and works well even
|
||||
when some directory options were not specified in terms of `${prefix}'
|
||||
at `configure' time.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
|
@ -137,14 +208,53 @@ find the X include and library files automatically, but if it doesn't,
|
|||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Some packages offer the ability to configure how verbose the
|
||||
execution of `make' will be. For these packages, running `./configure
|
||||
--enable-silent-rules' sets the default to minimal output, which can be
|
||||
overridden with `make V=1'; while running `./configure
|
||||
--disable-silent-rules' sets the default to verbose, which can be
|
||||
overridden with `make V=0'.
|
||||
|
||||
Particular systems
|
||||
==================
|
||||
|
||||
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
|
||||
CC is not installed, it is recommended to use the following options in
|
||||
order to use an ANSI C compiler:
|
||||
|
||||
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
|
||||
|
||||
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||
|
||||
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
|
||||
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
|
||||
a workaround. If GNU CC is not installed, it is therefore recommended
|
||||
to try
|
||||
|
||||
./configure CC="cc"
|
||||
|
||||
and if that doesn't work, try
|
||||
|
||||
./configure CC="cc -nodtk"
|
||||
|
||||
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
|
||||
directory contains several dysfunctional programs; working variants of
|
||||
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
|
||||
in your `PATH', put it _after_ `/usr/bin'.
|
||||
|
||||
On Haiku, software installed for all users goes in `/boot/common',
|
||||
not `/usr/local'. It is recommended to use the following options:
|
||||
|
||||
./configure --prefix=/boot/common
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out automatically,
|
||||
but needs to determine by the type of machine the package will run on.
|
||||
Usually, assuming the package is built to be run on the _same_
|
||||
architectures, `configure' can figure that out, but if it prints a
|
||||
message saying it cannot guess the machine type, give it the
|
||||
There may be some features `configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, `configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
|
@ -152,7 +262,8 @@ type, such as `sun4', or a canonical name which has the form:
|
|||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS KERNEL-OS
|
||||
OS
|
||||
KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
|
@ -170,9 +281,9 @@ eventually be run) with `--host=TYPE'.
|
|||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share, you
|
||||
can create a site shell script called `config.site' that gives default
|
||||
values for variables like `CC', `cache_file', and `prefix'.
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
|
@ -181,7 +292,7 @@ A warning: not all `configure' scripts look for a site script.
|
|||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
|
@ -190,21 +301,29 @@ them in the `configure' command line, using `VAR=value'. For example:
|
|||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script). Here is a another example:
|
||||
overridden in the site shell script).
|
||||
|
||||
/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
||||
an Autoconf bug. Until the bug is fixed you can use this workaround:
|
||||
|
||||
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
|
||||
configuration-related scripts to be executed by `/bin/bash'.
|
||||
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it operates.
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
Print a summary of all of the options to `configure', and exit.
|
||||
|
||||
`--help=short'
|
||||
`--help=recursive'
|
||||
Print a summary of the options unique to this package's
|
||||
`configure', and exit. The `short' variant lists options used
|
||||
only in the top level, while the `recursive' variant lists options
|
||||
also present in any nested packages.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
|
@ -231,6 +350,16 @@ configuration-related scripts to be executed by `/bin/bash'.
|
|||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--prefix=DIR'
|
||||
Use DIR as the installation prefix. *note Installation Names::
|
||||
for more details, including other options available for fine-tuning
|
||||
the installation locations.
|
||||
|
||||
`--no-create'
|
||||
`-n'
|
||||
Run the configure checks, but stop before creating any output
|
||||
files.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
||||
|
|
|
@ -50,7 +50,10 @@ AC_SEARCH_LIBS(recv,socket)
|
|||
AC_CHECK_FUNCS(getopt_long)
|
||||
AC_CHECK_FUNCS(getaddrinfo)
|
||||
|
||||
AX_PATH_LIBGNUTLS(,AC_DEFINE(HAVE_GNUTLS,,"Use libgnutls"))
|
||||
#AX_PATH_LIBGNUTLS(,AC_DEFINE(HAVE_GNUTLS,,"Use libgnutls"))
|
||||
|
||||
m4_include([openssl.m4])
|
||||
SAC_OPENSSL
|
||||
|
||||
dnl Check -Wall flag of GCC
|
||||
if test "x$GCC" = "xyes"; then
|
||||
|
|
|
@ -0,0 +1,49 @@
|
|||
dnl ======================================================================
|
||||
dnl SAC_OPENSSL
|
||||
dnl ======================================================================
|
||||
AC_DEFUN([SAC_OPENSSL], [
|
||||
|
||||
AC_ARG_WITH(openssl,
|
||||
[ --with-openssl use OpenSSL [[enabled]]],, with_openssl=pkg-config)
|
||||
|
||||
dnl SOSXXX:SAC_ASSERT_DEF([openssl libraries])
|
||||
|
||||
|
||||
if test "$with_openssl" = no ;then
|
||||
: # No openssl
|
||||
else
|
||||
|
||||
if test "$with_openssl" = "pkg-config" ; then
|
||||
PKG_CHECK_MODULES(openssl, openssl,
|
||||
[HAVE_TLS=1 HAVE_SSL=1 LIBS="$openssl_LIBS $LIBS"],
|
||||
[HAVE_SSL=0])
|
||||
fi
|
||||
|
||||
if test x$HAVE_SSL = x1 ; then
|
||||
AC_DEFINE([HAVE_LIBCRYPTO], 1, [Define to 1 if you have the `crypto' library (-lcrypto).])
|
||||
AC_DEFINE([HAVE_LIBSSL], 1, [Define to 1 if you have the `ssl' library (-lssl).])
|
||||
else
|
||||
AC_CHECK_HEADERS([openssl/tls1.h], [
|
||||
HAVE_SSL=1 HAVE_TLS=1
|
||||
|
||||
AC_CHECK_LIB(crypto, BIO_new,,
|
||||
HAVE_SSL=0
|
||||
AC_MSG_WARN(OpenSSL crypto library was not found))
|
||||
|
||||
AC_CHECK_LIB(ssl, TLSv1_method,,
|
||||
HAVE_TLS=0
|
||||
AC_MSG_WARN(OpenSSL protocol library was not found))
|
||||
],[AC_MSG_WARN(OpenSSL include files were not found)])
|
||||
fi
|
||||
|
||||
if test x$HAVE_SSL = x1; then
|
||||
AC_DEFINE([HAVE_SSL], 1, [Define to 1 if you have OpenSSL])
|
||||
fi
|
||||
|
||||
if test x$HAVE_TLS = x1; then
|
||||
AC_DEFINE([HAVE_TLS], 1, [Define to 1 if you have TLS])
|
||||
fi
|
||||
fi
|
||||
|
||||
AM_CONDITIONAL(HAVE_TLS, test x$HAVE_TLS = x1)
|
||||
])
|
|
@ -19,6 +19,19 @@
|
|||
#include <gnutls/gnutls.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SSL
|
||||
#include <openssl/ssl.h>
|
||||
#include <openssl/err.h>
|
||||
#ifdef WIN32
|
||||
typedef unsigned __int32 uint32_t;
|
||||
#else
|
||||
#ifdef HAVE_SYS_SELECT_H
|
||||
#include <sys/select.h>
|
||||
#endif
|
||||
#include <poll.h>
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#define SF_FOREIGN 1
|
||||
#define SF_TRY_SECURE 2
|
||||
#define SF_SECURE 4
|
||||
|
@ -41,9 +54,63 @@ struct stream_data {
|
|||
#ifdef HAVE_GNUTLS
|
||||
gnutls_session sess;
|
||||
gnutls_certificate_credentials cred;
|
||||
#elif HAVE_SSL
|
||||
SSL* ssl;
|
||||
SSL_CTX* ssl_ctx;
|
||||
#endif
|
||||
};
|
||||
|
||||
#ifdef HAVE_SSL
|
||||
#ifdef WIN32
|
||||
static int sock_read_ready(struct stream_data *data, uint32_t ms)
|
||||
{
|
||||
int r = 0;
|
||||
fd_set fds;
|
||||
struct timeval tv;
|
||||
|
||||
FD_ZERO(&fds);
|
||||
|
||||
#ifdef WIN32
|
||||
#pragma warning( push )
|
||||
#pragma warning( disable : 4127 )
|
||||
FD_SET(SSL_get_fd(data->ssl), &fds);
|
||||
#pragma warning( pop )
|
||||
#else
|
||||
FD_SET(SSL_get_fd(data->ssl), &fds);
|
||||
#endif
|
||||
|
||||
tv.tv_sec = ms / 1000;
|
||||
tv.tv_usec = (ms % 1000) * ms;
|
||||
|
||||
r = select (SSL_get_fd(data->ssl) + 1, &fds, NULL, NULL, &tv);
|
||||
|
||||
return r;
|
||||
}
|
||||
#else
|
||||
static int sock_read_ready(struct stream_data *data, int ms)
|
||||
{
|
||||
struct pollfd pfds[2] = { { 0 } };
|
||||
int s = 0, r = 0;
|
||||
|
||||
pfds[0].fd = SSL_get_fd(data->ssl);
|
||||
pfds[0].events |= POLLIN;
|
||||
|
||||
s = poll(pfds, 1, ms);
|
||||
|
||||
|
||||
if (s < 0) {
|
||||
r = s;
|
||||
} else if (s > 0) {
|
||||
if ((pfds[0].revents & POLLIN)) {
|
||||
r = 1;
|
||||
}
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_GNUTLS
|
||||
#ifndef WIN32
|
||||
#include <gcrypt.h>
|
||||
|
@ -120,6 +187,86 @@ handshake (struct stream_data *data)
|
|||
iks_send_header (data->prs, data->server);
|
||||
|
||||
return IKS_OK;
|
||||
} // HAVE_GNUTLS
|
||||
#elif HAVE_SSL
|
||||
static int wait_for_data(struct stream_data *data, int ret, int timeout)
|
||||
{
|
||||
struct timeval tv;
|
||||
fd_set fds;
|
||||
int err;
|
||||
int retval = IKS_OK;
|
||||
|
||||
err = SSL_get_error(data->ssl, ret);
|
||||
|
||||
switch(err)
|
||||
{
|
||||
case SSL_ERROR_WANT_READ:
|
||||
case SSL_ERROR_WANT_WRITE:
|
||||
ret = sock_read_ready(data, timeout*1000);
|
||||
|
||||
if (ret == -1) {
|
||||
retval = IKS_NET_TLSFAIL;
|
||||
}
|
||||
|
||||
break;
|
||||
default:
|
||||
if(data->logHook)
|
||||
data->logHook(data->user_data, ERR_error_string(err, NULL), strlen(ERR_error_string(err, NULL)), 1);
|
||||
retval = IKS_NET_TLSFAIL;
|
||||
break;
|
||||
}
|
||||
|
||||
ERR_clear_error();
|
||||
|
||||
return retval;
|
||||
}
|
||||
|
||||
static int
|
||||
handshake (struct stream_data *data)
|
||||
{
|
||||
int ret;
|
||||
int finished;
|
||||
|
||||
SSL_library_init();
|
||||
SSL_load_error_strings();
|
||||
|
||||
data->ssl_ctx = SSL_CTX_new(TLSv1_method());
|
||||
if(!data->ssl_ctx) return IKS_NOMEM;
|
||||
|
||||
data->ssl = SSL_new(data->ssl_ctx);
|
||||
if(!data->ssl) return IKS_NOMEM;
|
||||
|
||||
if( SSL_set_fd(data->ssl, (int)data->sock) != 1 ) return IKS_NOMEM;
|
||||
|
||||
/* Set both the read and write BIO's to non-blocking mode */
|
||||
BIO_set_nbio(SSL_get_rbio(data->ssl), 1);
|
||||
BIO_set_nbio(SSL_get_wbio(data->ssl), 1);
|
||||
|
||||
finished = 0;
|
||||
|
||||
do
|
||||
{
|
||||
ret = SSL_connect(data->ssl);
|
||||
|
||||
if( ret != 1 )
|
||||
{
|
||||
if( wait_for_data(data, ret, 1) != IKS_OK )
|
||||
{
|
||||
finished = 1;
|
||||
SSL_free(data->ssl);
|
||||
}
|
||||
}
|
||||
} while( ret != 1 && finished != 1 );
|
||||
|
||||
if( ret == 1 )
|
||||
{
|
||||
data->flags &= (~SF_TRY_SECURE);
|
||||
data->flags |= SF_SECURE;
|
||||
|
||||
iks_send_header (data->prs, data->server);
|
||||
}
|
||||
|
||||
return ret == 1 ? IKS_OK : IKS_NET_TLSFAIL;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -295,6 +442,15 @@ tagHook (struct stream_data *data, char *name, char **atts, int type)
|
|||
return IKS_NET_TLSFAIL;
|
||||
}
|
||||
}
|
||||
#elif HAVE_SSL
|
||||
if (data->flags & SF_TRY_SECURE) {
|
||||
if (strcmp (name, "proceed") == 0) {
|
||||
err = handshake (data);
|
||||
return err;
|
||||
} else if (strcmp (name, "failure") == 0){
|
||||
return IKS_NET_TLSFAIL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (data->current) {
|
||||
x = iks_insert (data->current, name);
|
||||
|
@ -351,6 +507,11 @@ deleteHook (struct stream_data *data)
|
|||
gnutls_deinit (data->sess);
|
||||
gnutls_certificate_free_credentials (data->cred);
|
||||
}
|
||||
#elif HAVE_SSL
|
||||
if (data->flags & SF_SECURE) {
|
||||
if( SSL_shutdown(data->ssl) == 0 ) SSL_shutdown(data->ssl);
|
||||
SSL_free(data->ssl);
|
||||
}
|
||||
#endif
|
||||
if (data->trans) data->trans->close (data->sock);
|
||||
data->trans = NULL;
|
||||
|
@ -507,6 +668,12 @@ iks_recv (iksparser *prs, int timeout)
|
|||
{
|
||||
struct stream_data *data = iks_user_data (prs);
|
||||
int len, ret;
|
||||
|
||||
#ifdef HAVE_SSL
|
||||
int err;
|
||||
struct timeval tv;
|
||||
fd_set fds;
|
||||
#endif
|
||||
|
||||
while (1) {
|
||||
#ifdef HAVE_GNUTLS
|
||||
|
@ -514,6 +681,34 @@ iks_recv (iksparser *prs, int timeout)
|
|||
len = gnutls_record_recv (data->sess, data->buf, NET_IO_BUF_SIZE - 1);
|
||||
if (len == 0) len = -1;
|
||||
} else
|
||||
#elif HAVE_SSL
|
||||
if (data->flags & SF_SECURE) {
|
||||
ret = sock_read_ready(data, timeout*1000);
|
||||
|
||||
if (ret == -1) {
|
||||
return IKS_NET_TLSFAIL;
|
||||
} else if( ret == 0 ) {
|
||||
return IKS_OK;
|
||||
} else {
|
||||
len = SSL_read(data->ssl, data->buf, NET_IO_BUF_SIZE - 1);
|
||||
}
|
||||
|
||||
if( len <= 0 )
|
||||
{
|
||||
switch( err = SSL_get_error(data->ssl, len) )
|
||||
{
|
||||
case SSL_ERROR_WANT_READ:
|
||||
case SSL_ERROR_WANT_WRITE:
|
||||
return IKS_OK;
|
||||
break;
|
||||
default:
|
||||
if(data->logHook)
|
||||
data->logHook(data->user_data, ERR_error_string(err, NULL), strlen(ERR_error_string(err, NULL)), 1);
|
||||
return IKS_NET_TLSFAIL;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
len = data->trans->recv (data->sock, data->buf, NET_IO_BUF_SIZE - 1, timeout);
|
||||
|
@ -523,6 +718,7 @@ iks_recv (iksparser *prs, int timeout)
|
|||
data->buf[len] = '\0';
|
||||
if (data->logHook) data->logHook (data->user_data, data->buf, len, 1);
|
||||
ret = iks_parse (prs, data->buf, len, 0);
|
||||
|
||||
if (ret != IKS_OK) return ret;
|
||||
if (!data->trans) {
|
||||
/* stream hook called iks_disconnect */
|
||||
|
@ -569,6 +765,10 @@ iks_send_raw (iksparser *prs, const char *xmlstr)
|
|||
if (data->flags & SF_SECURE) {
|
||||
if (gnutls_record_send (data->sess, xmlstr, strlen (xmlstr)) < 0) return IKS_NET_RWERR;
|
||||
} else
|
||||
#elif HAVE_SSL
|
||||
if (data->flags & SF_SECURE) {
|
||||
if (SSL_write(data->ssl, xmlstr, strlen (xmlstr)) < 0) return IKS_NET_RWERR;
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
ret = data->trans->send (data->sock, xmlstr, strlen (xmlstr));
|
||||
|
@ -591,6 +791,8 @@ iks_has_tls (void)
|
|||
{
|
||||
#ifdef HAVE_GNUTLS
|
||||
return 1;
|
||||
#elif HAVE_SSL
|
||||
return 1;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
|
@ -602,6 +804,10 @@ iks_is_secure (iksparser *prs)
|
|||
#ifdef HAVE_GNUTLS
|
||||
struct stream_data *data = iks_user_data (prs);
|
||||
|
||||
return data->flags & SF_SECURE;
|
||||
#elif HAVE_SSL
|
||||
struct stream_data *data = iks_user_data (prs);
|
||||
|
||||
return data->flags & SF_SECURE;
|
||||
#else
|
||||
return 0;
|
||||
|
@ -641,6 +847,14 @@ iks_start_tls (iksparser *prs)
|
|||
int ret;
|
||||
struct stream_data *data = iks_user_data (prs);
|
||||
|
||||
ret = iks_send_raw (prs, "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>");
|
||||
if (ret) return ret;
|
||||
data->flags |= SF_TRY_SECURE;
|
||||
return IKS_OK;
|
||||
#elif HAVE_SSL
|
||||
int ret;
|
||||
struct stream_data *data = iks_user_data (prs);
|
||||
|
||||
ret = iks_send_raw (prs, "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>");
|
||||
if (ret) return ret;
|
||||
data->flags |= SF_TRY_SECURE;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/bin/sh
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2010-02-06.18; # UTC
|
||||
scriptversion=2009-04-28.21; # UTC
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
|
@ -200,11 +200,7 @@ if test $# -eq 0; then
|
|||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
do_exit='(exit $ret); exit $ret'
|
||||
trap "ret=129; $do_exit" 1
|
||||
trap "ret=130; $do_exit" 2
|
||||
trap "ret=141; $do_exit" 13
|
||||
trap "ret=143; $do_exit" 15
|
||||
trap '(exit $?); exit' 1 2 13 15
|
||||
|
||||
# Set umask so as not to create temps with too-generous modes.
|
||||
# However, 'strip' requires both read and write access to temps.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
AM_CFLAGS = -Isrc -Wall -lm
|
||||
AUTOMAKE_OPTS = gnu
|
||||
AUTOMAKE_OPTIONS = gnu
|
||||
NAME = libcodec2
|
||||
AM_CPPFLAGS = $(AM_CFLAGS)
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
AM_CFLAGS = -I../src -Wall -DFLOATING_POINT -DVAR_ARRAYS
|
||||
AUTOMAKE_OPTS = gnu
|
||||
AUTOMAKE_OPTIONS = gnu
|
||||
NAME = libcodec2
|
||||
AM_CPPFLAGS = $(AM_CFLAGS)
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
AM_CFLAGS = -I../src -g -DFLOATING_POINT -DVAR_ARRAYS
|
||||
AUTOMAKE_OPTS = gnu
|
||||
AUTOMAKE_OPTIONS = gnu
|
||||
NAME = libcodec2
|
||||
AM_CPPFLAGS = $(AM_CFLAGS)
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
EXTRA_DIST =
|
||||
SUBDIRS =
|
||||
AUTOMAKE_OPTS=foreign
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
NAME=dingaling
|
||||
PREFIX=$(prefix)
|
||||
TOUCH_TARGET=@if test -f "$@" ; then touch "$@" ; fi ;
|
||||
|
|
|
@ -606,7 +606,7 @@ static int on_disco_default(void *user_data, ikspak *pak)
|
|||
if ((iq = iks_new("iq"))) {
|
||||
int all = 0;
|
||||
|
||||
iks_insert_attrib(iq, "from", handle->login);
|
||||
iks_insert_attrib(iq, "from", iks_find_attrib(pak->x, "to"));
|
||||
if (pak->from) {
|
||||
iks_insert_attrib(iq, "to", pak->from->full);
|
||||
}
|
||||
|
@ -1431,12 +1431,14 @@ static void j_setup_filter(ldl_handle_t *handle)
|
|||
}
|
||||
}
|
||||
|
||||
static void ldl_flush_queue(ldl_handle_t *handle, int done)
|
||||
static ldl_queue_t ldl_flush_queue(ldl_handle_t *handle, int done)
|
||||
{
|
||||
iks *msg;
|
||||
void *pop = NULL;
|
||||
unsigned int len = 0, x = 0;
|
||||
|
||||
ldl_queue_t sent_data = LDL_QUEUE_NONE;
|
||||
|
||||
apr_thread_mutex_lock(handle->lock);
|
||||
|
||||
while(apr_queue_trypop(handle->queue, &pop) == APR_SUCCESS) {
|
||||
|
@ -1445,6 +1447,7 @@ static void ldl_flush_queue(ldl_handle_t *handle, int done)
|
|||
if (!done) iks_send(handle->parser, msg);
|
||||
iks_delete(msg);
|
||||
pop = NULL;
|
||||
sent_data = LDL_QUEUE_SENT;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
@ -1473,6 +1476,7 @@ static void ldl_flush_queue(ldl_handle_t *handle, int done)
|
|||
}
|
||||
iks_send(handle->parser, packet_node->xml);
|
||||
packet_node->next = now + 5000000;
|
||||
sent_data = LDL_QUEUE_SENT;
|
||||
}
|
||||
}
|
||||
if (packet_node->retries == 0 || done) {
|
||||
|
@ -1490,51 +1494,15 @@ static void ldl_flush_queue(ldl_handle_t *handle, int done)
|
|||
}
|
||||
}
|
||||
apr_thread_mutex_unlock(handle->lock);
|
||||
}
|
||||
|
||||
|
||||
static void *APR_THREAD_FUNC queue_thread(apr_thread_t *thread, void *obj)
|
||||
{
|
||||
ldl_handle_t *handle = (ldl_handle_t *) obj;
|
||||
|
||||
ldl_set_flag_locked(handle, LDL_FLAG_QUEUE_RUNNING);
|
||||
|
||||
while (ldl_test_flag(handle, LDL_FLAG_RUNNING) && !ldl_test_flag(handle, LDL_FLAG_QUEUE_STOP)) {
|
||||
ldl_flush_queue(handle, 0);
|
||||
|
||||
if (handle->loop_callback(handle) != LDL_STATUS_SUCCESS || !ldl_test_flag((&globals), LDL_FLAG_READY)) {
|
||||
int fd;
|
||||
|
||||
if ((fd = iks_fd(handle->parser)) > -1) {
|
||||
shutdown(fd, 0x02);
|
||||
}
|
||||
ldl_set_flag_locked(handle, LDL_FLAG_BREAK);
|
||||
break;
|
||||
}
|
||||
microsleep(100);
|
||||
}
|
||||
|
||||
ldl_clear_flag_locked(handle, LDL_FLAG_QUEUE_RUNNING);
|
||||
ldl_clear_flag_locked(handle, LDL_FLAG_QUEUE_STOP);
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void launch_queue_thread(ldl_handle_t *handle)
|
||||
{
|
||||
apr_thread_t *thread;
|
||||
apr_threadattr_t *thd_attr;;
|
||||
apr_threadattr_create(&thd_attr, handle->pool);
|
||||
apr_threadattr_detach_set(thd_attr, 1);
|
||||
|
||||
apr_threadattr_stacksize_set(thd_attr, 512 * 1024);
|
||||
apr_thread_create(&thread, thd_attr, queue_thread, handle, handle->pool);
|
||||
|
||||
return sent_data;
|
||||
}
|
||||
|
||||
|
||||
static void xmpp_connect(ldl_handle_t *handle, char *jabber_id, char *pass)
|
||||
{
|
||||
int timeout_ka = LDL_KEEPALIVE_TIMEOUT;
|
||||
int count_ka = timeout_ka;
|
||||
|
||||
while (ldl_test_flag((&globals), LDL_FLAG_READY) && ldl_test_flag(handle, LDL_FLAG_RUNNING)) {
|
||||
int e;
|
||||
char tmp[512], *sl;
|
||||
|
@ -1587,13 +1555,18 @@ static void xmpp_connect(ldl_handle_t *handle, char *jabber_id, char *pass)
|
|||
}
|
||||
|
||||
handle->counter = opt_timeout;
|
||||
if (ldl_test_flag(handle, LDL_FLAG_TLS)) {
|
||||
launch_queue_thread(handle);
|
||||
}
|
||||
|
||||
while (ldl_test_flag((&globals), LDL_FLAG_READY) && ldl_test_flag(handle, LDL_FLAG_RUNNING)) {
|
||||
e = iks_recv(handle->parser, 1);
|
||||
if (!ldl_test_flag(handle, LDL_FLAG_TLS) && handle->loop_callback) {
|
||||
|
||||
if (count_ka-- <= 0) {
|
||||
if( iks_send_raw(handle->parser, " ") == IKS_OK) {
|
||||
count_ka = timeout_ka;
|
||||
globals.logger(DL_LOG_DEBUG, "Sent keep alive signal\n");
|
||||
}
|
||||
}
|
||||
|
||||
if (handle->loop_callback) {
|
||||
if (handle->loop_callback(handle) != LDL_STATUS_SUCCESS) {
|
||||
ldl_clear_flag_locked(handle, LDL_FLAG_RUNNING);
|
||||
break;
|
||||
|
@ -1614,10 +1587,11 @@ static void xmpp_connect(ldl_handle_t *handle, char *jabber_id, char *pass)
|
|||
goto fail;
|
||||
}
|
||||
|
||||
if (!ldl_test_flag(handle, LDL_FLAG_TLS) && ldl_test_flag(handle, LDL_FLAG_RUNNING)) {
|
||||
if (ldl_test_flag(handle, LDL_FLAG_RUNNING)) {
|
||||
ldl_flush_queue(handle, 0);
|
||||
}
|
||||
|
||||
handle->counter--;
|
||||
if (!ldl_test_flag(handle, LDL_FLAG_CONNECTED)) {
|
||||
if (IKS_NET_TLSFAIL == e) {
|
||||
globals.logger(DL_LOG_DEBUG, "tls handshake failed\n");
|
||||
|
@ -1631,11 +1605,12 @@ static void xmpp_connect(ldl_handle_t *handle, char *jabber_id, char *pass)
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
microsleep(100);
|
||||
}
|
||||
|
||||
fail:
|
||||
|
||||
ldl_set_flag_locked(handle, LDL_FLAG_QUEUE_STOP);
|
||||
ldl_clear_flag_locked(handle, LDL_FLAG_CONNECTED);
|
||||
ldl_clear_flag_locked(handle, LDL_FLAG_AUTHORIZED);
|
||||
ldl_clear_flag_locked(handle, LDL_FLAG_BREAK);
|
||||
|
@ -1645,23 +1620,12 @@ static void xmpp_connect(ldl_handle_t *handle, char *jabber_id, char *pass)
|
|||
shutdown(fd, 0x02);
|
||||
}
|
||||
|
||||
|
||||
|
||||
while(ldl_test_flag(handle, LDL_FLAG_QUEUE_RUNNING)) {
|
||||
microsleep(100);
|
||||
}
|
||||
|
||||
iks_disconnect(handle->parser);
|
||||
iks_parser_delete(handle->parser);
|
||||
}
|
||||
ldl_clear_flag_locked(handle, LDL_FLAG_RUNNING);
|
||||
if (!ldl_test_flag(handle, LDL_FLAG_TLS)) {
|
||||
ldl_flush_queue(handle, 1);
|
||||
}
|
||||
|
||||
while(ldl_test_flag(handle, LDL_FLAG_QUEUE_RUNNING)) {
|
||||
microsleep(100);
|
||||
}
|
||||
ldl_flush_queue(handle, 1);
|
||||
|
||||
ldl_set_flag_locked(handle, LDL_FLAG_STOPPED);
|
||||
|
||||
|
@ -2512,13 +2476,15 @@ int ldl_handle_authorized(ldl_handle_t *handle)
|
|||
void ldl_handle_stop(ldl_handle_t *handle)
|
||||
{
|
||||
ldl_clear_flag_locked(handle, LDL_FLAG_RUNNING);
|
||||
#if 0
|
||||
if (ldl_test_flag(handle, LDL_FLAG_TLS)) {
|
||||
int fd;
|
||||
if ((fd = iks_fd(handle->parser)) > -1) {
|
||||
shutdown(fd, 0x02);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
while(!ldl_test_flag(handle, LDL_FLAG_STOPPED)) {
|
||||
microsleep(100);
|
||||
}
|
||||
|
|
|
@ -64,6 +64,8 @@ extern "C" {
|
|||
#define LDL_MAX_PAYLOADS 50
|
||||
#define LDL_RETRY 3
|
||||
#define IKS_NS_COMPONENT "jabber:component:accept"
|
||||
/* period between keep alive signals in 0.1sec units*/
|
||||
#define LDL_KEEPALIVE_TIMEOUT 6000
|
||||
|
||||
/*! \brief A structure to store a jingle candidate */
|
||||
struct ldl_candidate {
|
||||
|
@ -119,10 +121,8 @@ typedef enum {
|
|||
LDL_FLAG_AUTHORIZED = (1 << 2),
|
||||
LDL_FLAG_READY = (1 << 3),
|
||||
LDL_FLAG_CONNECTED = (1 << 4),
|
||||
LDL_FLAG_QUEUE_RUNNING = (1 << 5),
|
||||
LDL_FLAG_STOPPED = (1 << 6),
|
||||
LDL_FLAG_QUEUE_STOP = (1 << 7),
|
||||
LDL_FLAG_BREAK = (1 << 8)
|
||||
LDL_FLAG_STOPPED = (1 << 5),
|
||||
LDL_FLAG_BREAK = (1 << 6)
|
||||
} ldl_flag_t;
|
||||
|
||||
typedef enum {
|
||||
|
@ -173,6 +173,11 @@ typedef enum {
|
|||
LDL_DESCRIPTION_ACCEPT
|
||||
} ldl_description_t;
|
||||
|
||||
typedef enum {
|
||||
LDL_QUEUE_NONE,
|
||||
LDL_QUEUE_SENT
|
||||
} ldl_queue_t;
|
||||
|
||||
#define DL_PRE __FILE__, __LDL_FUNC__, __LINE__
|
||||
#define DL_LOG_DEBUG DL_PRE, 7
|
||||
#define DL_LOG_INFO DL_PRE, 6
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
EXTRA_DIST =
|
||||
SUBDIRS =
|
||||
AUTOMAKE_OPTS= gnu
|
||||
AUTOMAKE_OPTIONS = gnu
|
||||
NAME=teletone
|
||||
|
||||
AM_CFLAGS = $(new_AM_CFLAGS) -I./src
|
||||
|
|
|
@ -155,12 +155,12 @@ for (;;)
|
|||
if (top <= bot) return -1;
|
||||
mid = (bot + top) >> 1;
|
||||
if (c == (ucp_table[mid].f0 & f0_charmask)) break;
|
||||
if (c < (ucp_table[mid].f0 & f0_charmask)) top = mid;
|
||||
if (c < (int)(ucp_table[mid].f0 & f0_charmask)) top = mid;
|
||||
else
|
||||
{
|
||||
if ((ucp_table[mid].f0 & f0_rangeflag) != 0 &&
|
||||
c <= (ucp_table[mid].f0 & f0_charmask) +
|
||||
(ucp_table[mid].f1 & f1_rangemask)) break;
|
||||
c <= (int)((ucp_table[mid].f0 & f0_charmask) +
|
||||
(ucp_table[mid].f1 & f1_rangemask))) break;
|
||||
bot = mid + 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,6 +63,7 @@
|
|||
|
||||
#include <AudioUnit/AudioUnit.h>
|
||||
#include <AudioToolbox/AudioToolbox.h>
|
||||
#include <CoreServices/CoreServices.h>
|
||||
|
||||
|
||||
#include "portaudio.h"
|
||||
|
|
|
@ -1 +1 @@
|
|||
Wed Mar 17 11:21:56 CDT 2010
|
||||
Tue Nov 1 11:51:42 CDT 2011
|
||||
|
|
|
@ -1,16 +1,25 @@
|
|||
Installation Instructions
|
||||
*************************
|
||||
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
|
||||
Software Foundation, Inc.
|
||||
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
|
||||
2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
||||
|
||||
This file is free documentation; the Free Software Foundation gives
|
||||
unlimited permission to copy, distribute and modify it.
|
||||
Copying and distribution of this file, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. This file is offered as-is,
|
||||
without warranty of any kind.
|
||||
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
Briefly, the shell commands `./configure; make; make install' should
|
||||
configure, build, and install this package. The following
|
||||
more-detailed instructions are generic; see the `README' file for
|
||||
instructions specific to this package. Some packages provide this
|
||||
`INSTALL' file but do not implement all of the features documented
|
||||
below. The lack of an optional feature in a given package is not
|
||||
necessarily a bug. More recommendations for GNU packages can be found
|
||||
in *note Makefile Conventions: (standards)Makefile Conventions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
|
@ -23,9 +32,9 @@ debugging `configure').
|
|||
|
||||
It can also use an optional file (typically called `config.cache'
|
||||
and enabled with `--cache-file=config.cache' or simply `-C') that saves
|
||||
the results of its tests to speed up reconfiguring. (Caching is
|
||||
the results of its tests to speed up reconfiguring. Caching is
|
||||
disabled by default to prevent problems with accidental use of stale
|
||||
cache files.)
|
||||
cache files.
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
|
@ -35,30 +44,37 @@ some point `config.cache' contains results you don't want to keep, you
|
|||
may remove or edit it.
|
||||
|
||||
The file `configure.ac' (or `configure.in') is used to create
|
||||
`configure' by a program called `autoconf'. You only need
|
||||
`configure.ac' if you want to change it or regenerate `configure' using
|
||||
a newer version of `autoconf'.
|
||||
`configure' by a program called `autoconf'. You need `configure.ac' if
|
||||
you want to change it or regenerate `configure' using a newer version
|
||||
of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
`./configure' to configure the package for your system.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
Running `configure' might take a while. While running, it prints
|
||||
some messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
the package, generally using the just-built uninstalled binaries.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
documentation. When installing into a prefix owned by root, it is
|
||||
recommended that the package be configured and built as a regular
|
||||
user, and only the `make install' phase executed with root
|
||||
privileges.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
5. Optionally, type `make installcheck' to repeat any self-tests, but
|
||||
this time using the binaries in their final installed location.
|
||||
This target does not install anything. Running this target as a
|
||||
regular user, particularly if the prior `make install' required
|
||||
root privileges, verifies that the installation completed
|
||||
correctly.
|
||||
|
||||
6. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
|
@ -67,45 +83,69 @@ The simplest way to compile this package is:
|
|||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
7. Often, you can also type `make uninstall' to remove the installed
|
||||
files again. In practice, not all packages have tested that
|
||||
uninstallation works correctly, even though it is required by the
|
||||
GNU Coding Standards.
|
||||
|
||||
8. Some packages, particularly those that use Automake, provide `make
|
||||
distcheck', which can by used by developers to test that all other
|
||||
targets like `make install' and `make uninstall' work correctly.
|
||||
This target is generally not run by end users.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that the
|
||||
`configure' script does not know about. Run `./configure --help' for
|
||||
details on some of the pertinent environment variables.
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. Run `./configure --help'
|
||||
for details on some of the pertinent environment variables.
|
||||
|
||||
You can give `configure' initial values for configuration parameters
|
||||
by setting variables in the command line or in the environment. Here
|
||||
is an example:
|
||||
|
||||
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
|
||||
./configure CC=c99 CFLAGS=-g LIBS=-lposix
|
||||
|
||||
*Note Defining Variables::, for more details.
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
own directory. To do this, you can use GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
source code in the directory that `configure' is in and in `..'. This
|
||||
is known as a "VPATH" build.
|
||||
|
||||
If you have to use a `make' that does not support the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a
|
||||
time in the source code directory. After you have installed the
|
||||
package for one architecture, use `make distclean' before reconfiguring
|
||||
for another architecture.
|
||||
With a non-GNU `make', it is safer to compile the package for one
|
||||
architecture at a time in the source code directory. After you have
|
||||
installed the package for one architecture, use `make distclean' before
|
||||
reconfiguring for another architecture.
|
||||
|
||||
On MacOS X 10.5 and later systems, you can create libraries and
|
||||
executables that work on multiple system types--known as "fat" or
|
||||
"universal" binaries--by specifying multiple `-arch' options to the
|
||||
compiler but only a single `-arch' option to the preprocessor. Like
|
||||
this:
|
||||
|
||||
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
|
||||
CPP="gcc -E" CXXCPP="g++ -E"
|
||||
|
||||
This is not guaranteed to produce working output in all cases, you
|
||||
may have to build one architecture at a time and combine the results
|
||||
using the `lipo' tool if you have problems.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' installs the package's commands under
|
||||
By default, `make install' installs the package's commands under
|
||||
`/usr/local/bin', include files under `/usr/local/include', etc. You
|
||||
can specify an installation prefix other than `/usr/local' by giving
|
||||
`configure' the option `--prefix=PREFIX'.
|
||||
`configure' the option `--prefix=PREFIX', where PREFIX must be an
|
||||
absolute file name.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
|
@ -116,16 +156,47 @@ Documentation and other data files still use the regular prefix.
|
|||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=DIR' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
you can set and what kinds of files go in them. In general, the
|
||||
default for these options is expressed in terms of `${prefix}', so that
|
||||
specifying just `--prefix' will affect all of the other directory
|
||||
specifications that were not explicitly provided.
|
||||
|
||||
The most portable way to affect installation locations is to pass the
|
||||
correct locations to `configure'; however, many packages provide one or
|
||||
both of the following shortcuts of passing variable assignments to the
|
||||
`make install' command line to change installation locations without
|
||||
having to reconfigure or recompile.
|
||||
|
||||
The first method involves providing an override variable for each
|
||||
affected directory. For example, `make install
|
||||
prefix=/alternate/directory' will choose an alternate location for all
|
||||
directory configuration variables that were expressed in terms of
|
||||
`${prefix}'. Any directories that were specified during `configure',
|
||||
but not in terms of `${prefix}', must each be overridden at install
|
||||
time for the entire installation to be relocated. The approach of
|
||||
makefile variable overrides for each directory variable is required by
|
||||
the GNU Coding Standards, and ideally causes no recompilation.
|
||||
However, some platforms have known limitations with the semantics of
|
||||
shared libraries that end up requiring recompilation when using this
|
||||
method, particularly noticeable in packages that use GNU Libtool.
|
||||
|
||||
The second method involves providing the `DESTDIR' variable. For
|
||||
example, `make install DESTDIR=/alternate/directory' will prepend
|
||||
`/alternate/directory' before all installation names. The approach of
|
||||
`DESTDIR' overrides is not required by the GNU Coding Standards, and
|
||||
does not work on platforms that have drive letters. On the other hand,
|
||||
it does better at avoiding recompilation issues, and works well even
|
||||
when some directory options were not specified in terms of `${prefix}'
|
||||
at `configure' time.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
|
@ -137,14 +208,53 @@ find the X include and library files automatically, but if it doesn't,
|
|||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Some packages offer the ability to configure how verbose the
|
||||
execution of `make' will be. For these packages, running `./configure
|
||||
--enable-silent-rules' sets the default to minimal output, which can be
|
||||
overridden with `make V=1'; while running `./configure
|
||||
--disable-silent-rules' sets the default to verbose, which can be
|
||||
overridden with `make V=0'.
|
||||
|
||||
Particular systems
|
||||
==================
|
||||
|
||||
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
|
||||
CC is not installed, it is recommended to use the following options in
|
||||
order to use an ANSI C compiler:
|
||||
|
||||
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
|
||||
|
||||
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
|
||||
|
||||
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
|
||||
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
|
||||
a workaround. If GNU CC is not installed, it is therefore recommended
|
||||
to try
|
||||
|
||||
./configure CC="cc"
|
||||
|
||||
and if that doesn't work, try
|
||||
|
||||
./configure CC="cc -nodtk"
|
||||
|
||||
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
|
||||
directory contains several dysfunctional programs; working variants of
|
||||
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
|
||||
in your `PATH', put it _after_ `/usr/bin'.
|
||||
|
||||
On Haiku, software installed for all users goes in `/boot/common',
|
||||
not `/usr/local'. It is recommended to use the following options:
|
||||
|
||||
./configure --prefix=/boot/common
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' cannot figure out automatically,
|
||||
but needs to determine by the type of machine the package will run on.
|
||||
Usually, assuming the package is built to be run on the _same_
|
||||
architectures, `configure' can figure that out, but if it prints a
|
||||
message saying it cannot guess the machine type, give it the
|
||||
There may be some features `configure' cannot figure out
|
||||
automatically, but needs to determine by the type of machine the package
|
||||
will run on. Usually, assuming the package is built to be run on the
|
||||
_same_ architectures, `configure' can figure that out, but if it prints
|
||||
a message saying it cannot guess the machine type, give it the
|
||||
`--build=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name which has the form:
|
||||
|
||||
|
@ -152,7 +262,8 @@ type, such as `sun4', or a canonical name which has the form:
|
|||
|
||||
where SYSTEM can have one of these forms:
|
||||
|
||||
OS KERNEL-OS
|
||||
OS
|
||||
KERNEL-OS
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
|
@ -170,9 +281,9 @@ eventually be run) with `--host=TYPE'.
|
|||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share, you
|
||||
can create a site shell script called `config.site' that gives default
|
||||
values for variables like `CC', `cache_file', and `prefix'.
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
|
@ -181,7 +292,7 @@ A warning: not all `configure' scripts look for a site script.
|
|||
Defining Variables
|
||||
==================
|
||||
|
||||
Variables not defined in a site shell script can be set in the
|
||||
Variables not defined in a site shell script can be set in the
|
||||
environment passed to `configure'. However, some packages may run
|
||||
configure again during the build, and the customized values of these
|
||||
variables may be lost. In order to avoid this problem, you should set
|
||||
|
@ -190,21 +301,29 @@ them in the `configure' command line, using `VAR=value'. For example:
|
|||
./configure CC=/usr/local2/bin/gcc
|
||||
|
||||
causes the specified `gcc' to be used as the C compiler (unless it is
|
||||
overridden in the site shell script). Here is a another example:
|
||||
overridden in the site shell script).
|
||||
|
||||
/bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
|
||||
an Autoconf bug. Until the bug is fixed you can use this workaround:
|
||||
|
||||
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
|
||||
configuration-related scripts to be executed by `/bin/bash'.
|
||||
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
|
||||
|
||||
`configure' Invocation
|
||||
======================
|
||||
|
||||
`configure' recognizes the following options to control how it operates.
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--help'
|
||||
`-h'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
Print a summary of all of the options to `configure', and exit.
|
||||
|
||||
`--help=short'
|
||||
`--help=recursive'
|
||||
Print a summary of the options unique to this package's
|
||||
`configure', and exit. The `short' variant lists options used
|
||||
only in the top level, while the `recursive' variant lists options
|
||||
also present in any nested packages.
|
||||
|
||||
`--version'
|
||||
`-V'
|
||||
|
@ -231,6 +350,16 @@ configuration-related scripts to be executed by `/bin/bash'.
|
|||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--prefix=DIR'
|
||||
Use DIR as the installation prefix. *note Installation Names::
|
||||
for more details, including other options available for fine-tuning
|
||||
the installation locations.
|
||||
|
||||
`--no-create'
|
||||
`-n'
|
||||
Run the configure checks, but stop before creating any output
|
||||
files.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options. Run
|
||||
`configure --help' for more details.
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
AM_CFLAGS = -Isrc -Iinterface -fPIC -O3
|
||||
AUTOMAKE_OPTS = gnu
|
||||
AUTOMAKE_OPTIONS = gnu
|
||||
NAME = libSKP_SILK_SDK
|
||||
AM_CPPFLAGS = $(AM_CFLAGS)
|
||||
|
||||
|
|
|
@ -1 +1 @@
|
|||
Mon Aug 22 12:22:26 CDT 2011
|
||||
Fri Dec 16 10:29:41 CST 2011
|
||||
|
|
|
@ -827,10 +827,10 @@ static int nua_notify_usage_shutdown(nua_handle_t *nh,
|
|||
nua_dialog_usage_t *du)
|
||||
{
|
||||
struct notifier_usage *nu = nua_dialog_usage_private(du);
|
||||
nua_client_request_t *cr = du->du_cr;
|
||||
//nua_client_request_t *cr = du->du_cr;
|
||||
|
||||
nu->nu_substate = nua_substate_terminated;
|
||||
|
||||
#if 0
|
||||
if (cr) {
|
||||
SU_DEBUG_5(("%s(%p, %p, %p): using existing cr=%p\n",
|
||||
"nua_notify_usage_shutdown",
|
||||
|
@ -852,7 +852,7 @@ static int nua_notify_usage_shutdown(nua_handle_t *nh,
|
|||
TAG_END()) >= 0)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
nua_dialog_usage_remove(nh, ds, du, NULL, NULL);
|
||||
return 200;
|
||||
}
|
||||
|
|
|
@ -158,14 +158,15 @@ int nua_stack_process_request(nua_handle_t *nh,
|
|||
/* These must be in-dialog */
|
||||
sm = NULL;
|
||||
}
|
||||
else if (initial && sip->sip_to->a_tag) {
|
||||
else if (initial && sip->sip_to->a_tag && method != sip_method_subscribe) {
|
||||
/* RFC 3261 section 12.2.2:
|
||||
|
||||
If the UAS wishes to reject the request because it does not wish to
|
||||
recreate the dialog, it MUST respond to the request with a 481
|
||||
(Call/Transaction Does Not Exist) status code and pass that to the
|
||||
server transaction.
|
||||
*/
|
||||
*/ /* we allow this on subscribes because we have disabled the built-in notify server and we need those messages in the application layer */
|
||||
|
||||
if (method == sip_method_info)
|
||||
/* accept out-of-dialog info */; else
|
||||
if (method != sip_method_message || !NH_PGET(nh, win_messenger_enable))
|
||||
|
|
|
@ -4486,14 +4486,13 @@ session_timer_add_headers(struct session_timer *t,
|
|||
return 1;
|
||||
|
||||
sip_add_tl(msg, sip,
|
||||
TAG_IF(expires != 0, SIPTAG_SESSION_EXPIRES(x)),
|
||||
TAG_IF(min != 0
|
||||
/* Min-SE: 0 is optional with initial INVITE */
|
||||
|| !initial,
|
||||
SIPTAG_MIN_SE(min_se)),
|
||||
TAG_IF(refresher == nua_remote_refresher && expires != 0,
|
||||
SIPTAG_REQUIRE_STR("timer")),
|
||||
TAG_END());
|
||||
TAG_IF(expires != 0, SIPTAG_SESSION_EXPIRES(x)),
|
||||
TAG_IF(min != 0
|
||||
/* Min-SE: 0 is optional with initial INVITE */
|
||||
|| !initial,
|
||||
SIPTAG_MIN_SE(min_se)),
|
||||
//TAG_IF(refresher == nua_remote_refresher && expires != 0, SIPTAG_REQUIRE_STR("timer")),
|
||||
TAG_END());
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -1389,6 +1389,10 @@ void sdp_media_transport(sdp_media_t *m, char const *s)
|
|||
else if (su_casematch(s, "udptl"))
|
||||
/* Lower case - be compatible with people living by T.38 examples */
|
||||
m->m_proto = sdp_proto_udptl, m->m_proto_name = "udptl";
|
||||
else if (su_casematch(s, "TCP/MSRP"))
|
||||
m->m_proto = sdp_proto_msrp, m->m_proto_name = "TCP/MSRP";
|
||||
else if (su_casematch(s, "TCP/TLS/MSRP"))
|
||||
m->m_proto = sdp_proto_msrps, m->m_proto_name = "TCP/TLS/MSRP";
|
||||
else if (su_casematch(s, "UDP"))
|
||||
m->m_proto = sdp_proto_udp, m->m_proto_name = "UDP";
|
||||
else if (su_casematch(s, "TCP"))
|
||||
|
|
|
@ -591,6 +591,8 @@ static void print_media(sdp_printer_t *p,
|
|||
case sdp_proto_rtp: proto = "RTP/AVP"; break;
|
||||
case sdp_proto_srtp: proto = "RTP/SAVP"; break;
|
||||
case sdp_proto_udptl: proto = "udptl"; break;
|
||||
case sdp_proto_msrp: proto = "TCP/MSRP"; break;
|
||||
case sdp_proto_msrps: proto = "TCP/TLS/MSRP"; break;
|
||||
case sdp_proto_tls: proto = "tls"; break;
|
||||
default: proto = m->m_proto_name; break;
|
||||
}
|
||||
|
|
|
@ -243,6 +243,8 @@ typedef enum
|
|||
sdp_proto_rtp = 256, /**< RTP/AVP */
|
||||
sdp_proto_srtp = 257, /**< RTP/SAVP */
|
||||
sdp_proto_udptl = 258, /**< UDPTL. @NEW_1_12_4. */
|
||||
sdp_proto_msrp = 259, /**< TCP/MSRP @NEW_MSRP*/
|
||||
sdp_proto_msrps = 260, /**< TCP/TLS/MSRP @NEW_MSRP*/
|
||||
sdp_proto_tls = 511, /**< TLS over TCP */
|
||||
sdp_proto_any = 512 /**< * wildcard */
|
||||
} sdp_proto_e;
|
||||
|
|
|
@ -385,7 +385,7 @@ void tport_capt_msg(tport_t const *self, msg_t *msg, size_t n,
|
|||
else hep_header.hp_p = IPPROTO_UDP; /* DEFAULT UDP */
|
||||
|
||||
/* Check destination */
|
||||
if(strncmp("recv", what, 4) == 0) dst = 1;
|
||||
if(strncmp("sent", what, 4) == 0) dst = 1;
|
||||
|
||||
/* copy destination and source IPs*/
|
||||
if(su->su_family == AF_INET) {
|
||||
|
|
|
@ -1 +1 @@
|
|||
Wed May 4 10:03:23 CDT 2011
|
||||
Tue Dec 6 17:55:59 CST 2011
|
||||
|
|
|
@ -47,8 +47,8 @@ AC_DEFUN([AX_C99_FUNC_LRINT],
|
|||
[AC_CACHE_CHECK(for lrint,
|
||||
ac_cv_c99_lrint,
|
||||
[
|
||||
lrint_save_CFLAGS=$CFLAGS
|
||||
CFLAGS="-lm"
|
||||
lrint_save_LIBS=$LIBS
|
||||
LIBS="-lm"
|
||||
AC_TRY_LINK([
|
||||
#define _ISOC9X_SOURCE 1
|
||||
#define _ISOC99_SOURCE 1
|
||||
|
@ -58,7 +58,7 @@ AC_TRY_LINK([
|
|||
#include <math.h>
|
||||
], if (!lrint(3.14159)) lrint(2.7183);, ac_cv_c99_lrint=yes, ac_cv_c99_lrint=no)
|
||||
|
||||
CFLAGS=$lrint_save_CFLAGS
|
||||
LIBS=$lrint_save_LIBS
|
||||
|
||||
])
|
||||
|
||||
|
@ -84,8 +84,8 @@ AC_DEFUN([AX_C99_FUNC_LRINTF],
|
|||
[AC_CACHE_CHECK(for lrintf,
|
||||
ac_cv_c99_lrintf,
|
||||
[
|
||||
lrintf_save_CFLAGS=$CFLAGS
|
||||
CFLAGS="-lm"
|
||||
lrintf_save_LIBS=$LIBS
|
||||
LIBS="-lm"
|
||||
AC_TRY_LINK([
|
||||
#define _ISOC9X_SOURCE 1
|
||||
#define _ISOC99_SOURCE 1
|
||||
|
@ -95,7 +95,7 @@ AC_TRY_LINK([
|
|||
#include <math.h>
|
||||
], if (!lrintf(3.14159)) lrintf(2.7183);, ac_cv_c99_lrintf=yes, ac_cv_c99_lrintf=no)
|
||||
|
||||
CFLAGS=$lrintf_save_CFLAGS
|
||||
LIBS=$lrintf_save_LIBS
|
||||
|
||||
])
|
||||
|
||||
|
@ -121,8 +121,8 @@ AC_DEFUN([AX_C99_FUNC_LLRINT],
|
|||
[AC_CACHE_CHECK(for llrint,
|
||||
ac_cv_c99_llrint,
|
||||
[
|
||||
llrint_save_CFLAGS=$CFLAGS
|
||||
CFLAGS="-lm"
|
||||
llrint_save_LIBS=$LIBS
|
||||
LIBS="-lm"
|
||||
AC_TRY_LINK([
|
||||
#define ISOC9X_SOURCE 1
|
||||
#define _ISOC99_SOURCE 1
|
||||
|
@ -132,7 +132,7 @@ AC_TRY_LINK([
|
|||
#include <math.h>
|
||||
], long long int x ; x = llrint(3.14159) ;, ac_cv_c99_llrint=yes, ac_cv_c99_llrint=no)
|
||||
|
||||
CFLAGS=$llrint_save_CFLAGS
|
||||
LIBS=$llrint_save_LIBS
|
||||
|
||||
])
|
||||
|
||||
|
@ -159,8 +159,8 @@ AC_DEFUN([AX_C99_FUNC_LLRINTF],
|
|||
[AC_CACHE_CHECK(for llrintf,
|
||||
ac_cv_c99_llrintf,
|
||||
[
|
||||
llrintf_save_CFLAGS=$CFLAGS
|
||||
CFLAGS="-lm"
|
||||
llrintf_save_LIBS=$LIBS
|
||||
LIBS="-lm"
|
||||
AC_TRY_LINK([
|
||||
#define _ISOC9X_SOURCE 1
|
||||
#define _ISOC99_SOURCE 1
|
||||
|
@ -170,7 +170,7 @@ AC_TRY_LINK([
|
|||
#include <math.h>
|
||||
], long long int x ; x = llrintf(3.14159) ;, ac_cv_c99_llrintf=yes, ac_cv_c99_llrintf=no)
|
||||
|
||||
CFLAGS=$llrintf_save_CFLAGS
|
||||
LIBS=$llrintf_save_LIBS
|
||||
|
||||
])
|
||||
|
||||
|
|
|
@ -28,8 +28,8 @@ gnu)
|
|||
)],
|
||||
|
||||
[AC_MSG_RESULT([yes])
|
||||
COMP_VENDOR_CFLAGS="-fvisibility=hidden -DSWITCH_API_VISIBILITY=1 -DHAVE_VISIBILITY=1 $COMP_VENDOR_CFLAGS"
|
||||
COMP_VENDOR_CXXFLAGS="-fvisibility=hidden -DSWITCH_API_VISIBILITY=1 -DHAVE_VISIBILITY=1 $COMP_VENDOR_CXXFLAGS"
|
||||
COMP_VENDOR_CFLAGS="-fvisibility=hidden -DHAVE_VISIBILITY=1 $COMP_VENDOR_CFLAGS"
|
||||
COMP_VENDOR_CXXFLAGS="-fvisibility=hidden -DHAVE_VISIBILITY=1 $COMP_VENDOR_CXXFLAGS"
|
||||
ac_cv_symbol_export_capability="yes"],
|
||||
|
||||
[AC_MSG_RESULT([no])]
|
||||
|
@ -47,8 +47,8 @@ sun)
|
|||
)],
|
||||
|
||||
[AC_MSG_RESULT([yes])
|
||||
COMP_VENDOR_CFLAGS="-xldscope=hidden -DSWITCH_API_VISIBILITY=1 -DHAVE_VISIBILITY=1 $COMP_VENDOR_CFLAGS"
|
||||
COMP_VENDOR_CXXFLAGS="-xldscope=hidden -DSWITCH_API_VISIBILITY=1 -DHAVE_VISIBILITY=1 $COMP_VENDOR_CXXFLAGS"
|
||||
COMP_VENDOR_CFLAGS="-xldscope=hidden -DHAVE_VISIBILITY=1 $COMP_VENDOR_CFLAGS"
|
||||
COMP_VENDOR_CXXFLAGS="-xldscope=hidden -DHAVE_VISIBILITY=1 $COMP_VENDOR_CXXFLAGS"
|
||||
ac_cv_symbol_export_capability="yes"],
|
||||
|
||||
[AC_MSG_RESULT([no])]
|
||||
|
|
|
@ -319,16 +319,16 @@ nobase_include_HEADERS = spandsp/adsi.h \
|
|||
|
||||
nodist_include_HEADERS = spandsp.h
|
||||
|
||||
noinst_HEADERS = faxfont.h \
|
||||
filter_tools.h \
|
||||
gsm0610_local.h \
|
||||
lpc10_encdecs.h \
|
||||
mmx_sse_decs.h \
|
||||
t30_local.h \
|
||||
t4_t6_decode_states.h \
|
||||
v17_v32bis_rx_constellation_maps.h \
|
||||
v17_v32bis_tx_constellation_maps.h \
|
||||
v29tx_constellation_maps.h
|
||||
noinst_HEADERS = faxfont.h \
|
||||
filter_tools.h \
|
||||
gsm0610_local.h \
|
||||
lpc10_encdecs.h \
|
||||
mmx_sse_decs.h \
|
||||
t30_local.h \
|
||||
t4_t6_decode_states.h \
|
||||
v17_v32bis_rx_constellation_maps.h \
|
||||
v17_v32bis_tx_constellation_maps.h \
|
||||
v29tx_constellation_maps.h
|
||||
|
||||
make_at_dictionary$(EXEEXT): $(top_srcdir)/src/make_at_dictionary.c
|
||||
$(CC_FOR_BUILD) -o make_at_dictionary$(EXEEXT) $(top_srcdir)/src/make_at_dictionary.c -DHAVE_CONFIG_H -I$(top_builddir)/src
|
||||
|
|
|
@ -43,6 +43,7 @@
|
|||
#include "floating_fudge.h"
|
||||
|
||||
#include "spandsp/telephony.h"
|
||||
#include "spandsp/logging.h"
|
||||
#include "spandsp/fast_convert.h"
|
||||
#include "spandsp/queue.h"
|
||||
#include "spandsp/dc_restore.h"
|
||||
|
@ -54,6 +55,7 @@
|
|||
#include "spandsp/dtmf.h"
|
||||
#include "spandsp/bell_r2_mf.h"
|
||||
|
||||
#include "spandsp/private/logging.h"
|
||||
#include "spandsp/private/queue.h"
|
||||
#include "spandsp/private/tone_generate.h"
|
||||
#include "spandsp/private/bell_r2_mf.h"
|
||||
|
@ -786,7 +788,7 @@ SPAN_DECLARE(int) r2_mf_rx(r2_mf_rx_state_t *s, const int16_t amp[], int samples
|
|||
}
|
||||
if (s->current_digit != hit_digit && s->callback)
|
||||
{
|
||||
i = (hit_digit) ? -99 : -10;
|
||||
i = (hit_digit) ? -10 : -99;
|
||||
s->callback(s->callback_data, hit_digit, i, 0);
|
||||
}
|
||||
s->current_digit = hit_digit;
|
||||
|
|
|
@ -42,10 +42,6 @@
|
|||
#include "spandsp/complex.h"
|
||||
#include "spandsp/dds.h"
|
||||
|
||||
#if !defined(M_PI)
|
||||
# define M_PI 3.14159265358979323846 /* pi */
|
||||
#endif
|
||||
|
||||
/* In a A-law or u-law channel, a 128 step sine table is adequate to keep the spectral
|
||||
mess due to the DDS at a similar level to the spectral mess due to the A-law or u-law
|
||||
compression. */
|
||||
|
|
|
@ -29,8 +29,8 @@
|
|||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#include <inttypes.h>
|
||||
#include <stdlib.h>
|
||||
#include <inttypes.h>
|
||||
#if defined(HAVE_TGMATH_H)
|
||||
#include <tgmath.h>
|
||||
#endif
|
||||
|
@ -38,12 +38,12 @@
|
|||
#include <math.h>
|
||||
#endif
|
||||
#include "floating_fudge.h"
|
||||
#include <memory.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <time.h>
|
||||
#include <fcntl.h>
|
||||
#include <limits.h>
|
||||
|
||||
#include "spandsp/telephony.h"
|
||||
#include "spandsp/logging.h"
|
||||
#include "spandsp/fast_convert.h"
|
||||
#include "spandsp/queue.h"
|
||||
#include "spandsp/complex.h"
|
||||
|
@ -53,6 +53,7 @@
|
|||
#include "spandsp/super_tone_rx.h"
|
||||
#include "spandsp/dtmf.h"
|
||||
|
||||
#include "spandsp/private/logging.h"
|
||||
#include "spandsp/private/queue.h"
|
||||
#include "spandsp/private/tone_generate.h"
|
||||
#include "spandsp/private/dtmf.h"
|
||||
|
@ -165,6 +166,8 @@ SPAN_DECLARE(int) dtmf_rx(dtmf_rx_state_t *s, const int16_t amp[], int samples)
|
|||
goertzel_samplex(&s->row_out[3], xamp);
|
||||
goertzel_samplex(&s->col_out[3], xamp);
|
||||
}
|
||||
if (s->duration < INT_MAX - (limit - sample))
|
||||
s->duration += (limit - sample);
|
||||
s->current_sample += (limit - sample);
|
||||
if (s->current_sample < DTMF_SAMPLES_PER_BLOCK)
|
||||
continue;
|
||||
|
@ -188,29 +191,45 @@ SPAN_DECLARE(int) dtmf_rx(dtmf_rx_state_t *s, const int16_t amp[], int samples)
|
|||
/* Basic signal level test and the twist test */
|
||||
if (row_energy[best_row] >= s->threshold
|
||||
&&
|
||||
col_energy[best_col] >= s->threshold
|
||||
&&
|
||||
col_energy[best_col] < row_energy[best_row]*s->reverse_twist
|
||||
&&
|
||||
col_energy[best_col]*s->normal_twist > row_energy[best_row])
|
||||
col_energy[best_col] >= s->threshold)
|
||||
{
|
||||
/* Relative peak test ... */
|
||||
for (i = 0; i < 4; i++)
|
||||
if (col_energy[best_col] < row_energy[best_row]*s->reverse_twist
|
||||
&&
|
||||
col_energy[best_col]*s->normal_twist > row_energy[best_row])
|
||||
{
|
||||
if ((i != best_col && col_energy[i]*DTMF_RELATIVE_PEAK_COL > col_energy[best_col])
|
||||
||
|
||||
(i != best_row && row_energy[i]*DTMF_RELATIVE_PEAK_ROW > row_energy[best_row]))
|
||||
/* Relative peak test ... */
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
break;
|
||||
if ((i != best_col && col_energy[i]*DTMF_RELATIVE_PEAK_COL > col_energy[best_col])
|
||||
||
|
||||
(i != best_row && row_energy[i]*DTMF_RELATIVE_PEAK_ROW > row_energy[best_row]))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* ... and fraction of total energy test */
|
||||
if (i >= 4
|
||||
&&
|
||||
(row_energy[best_row] + col_energy[best_col]) > DTMF_TO_TOTAL_ENERGY*s->energy)
|
||||
{
|
||||
/* Got a hit */
|
||||
hit = dtmf_positions[(best_row << 2) + best_col];
|
||||
}
|
||||
}
|
||||
/* ... and fraction of total energy test */
|
||||
if (i >= 4
|
||||
&&
|
||||
(row_energy[best_row] + col_energy[best_col]) > DTMF_TO_TOTAL_ENERGY*s->energy)
|
||||
if (span_log_test(&s->logging, SPAN_LOG_FLOW))
|
||||
{
|
||||
/* Got a hit */
|
||||
hit = dtmf_positions[(best_row << 2) + best_col];
|
||||
/* Log information about the quality of the signal, to aid analysis of detection problems */
|
||||
/* Logging at this point filters the total no-hoper frames out of the log, and leaves
|
||||
anything which might feasibly be a DTMF digit. The log will then contain a list of the
|
||||
total, row and coloumn power levels for detailed analysis of detection problems. */
|
||||
span_log(&s->logging,
|
||||
SPAN_LOG_FLOW,
|
||||
"Potentially '%c' - total %.2fdB, row %.2fdB, col %.2fdB - %s\n",
|
||||
dtmf_positions[(best_row << 2) + best_col],
|
||||
log10f(s->energy)*10.0f - DTMF_POWER_OFFSET + DBM0_MAX_POWER,
|
||||
log10f(row_energy[best_row]/DTMF_TO_TOTAL_ENERGY)*10.0f - DTMF_POWER_OFFSET + DBM0_MAX_POWER,
|
||||
log10f(col_energy[best_col]/DTMF_TO_TOTAL_ENERGY)*10.0f - DTMF_POWER_OFFSET + DBM0_MAX_POWER,
|
||||
(hit) ? "hit" : "miss");
|
||||
}
|
||||
}
|
||||
/* The logic in the next test should ensure the following for different successive hit patterns:
|
||||
|
@ -251,7 +270,8 @@ SPAN_DECLARE(int) dtmf_rx(dtmf_rx_state_t *s, const int16_t amp[], int samples)
|
|||
if (s->in_digit || hit)
|
||||
{
|
||||
i = (s->in_digit && !hit) ? -99 : lfastrintf(log10f(s->energy)*10.0f - DTMF_POWER_OFFSET + DBM0_MAX_POWER);
|
||||
s->realtime_callback(s->realtime_callback_data, hit, i, 0);
|
||||
s->realtime_callback(s->realtime_callback_data, hit, i, s->duration);
|
||||
s->duration = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -326,6 +346,7 @@ SPAN_DECLARE(void) dtmf_rx_set_realtime_callback(dtmf_rx_state_t *s,
|
|||
{
|
||||
s->realtime_callback = callback;
|
||||
s->realtime_callback_data = user_data;
|
||||
s->duration = 0;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
|
@ -357,6 +378,12 @@ SPAN_DECLARE(void) dtmf_rx_parms(dtmf_rx_state_t *s,
|
|||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
SPAN_DECLARE(logging_state_t *) dtmf_rx_get_logging_state(dtmf_rx_state_t *s)
|
||||
{
|
||||
return &s->logging;
|
||||
}
|
||||
/*- End of function --------------------------------------------------------*/
|
||||
|
||||
SPAN_DECLARE(dtmf_rx_state_t *) dtmf_rx_init(dtmf_rx_state_t *s,
|
||||
digits_rx_callback_t callback,
|
||||
void *user_data)
|
||||
|
@ -369,6 +396,9 @@ SPAN_DECLARE(dtmf_rx_state_t *) dtmf_rx_init(dtmf_rx_state_t *s,
|
|||
if ((s = (dtmf_rx_state_t *) malloc(sizeof (*s))) == NULL)
|
||||
return NULL;
|
||||
}
|
||||
memset(s, 0, sizeof(*s));
|
||||
span_log_init(&s->logging, SPAN_LOG_NONE, NULL);
|
||||
span_log_set_protocol(&s->logging, "DTMF");
|
||||
s->digits_callback = callback;
|
||||
s->digits_callback_data = user_data;
|
||||
s->realtime_callback = NULL;
|
||||
|
@ -519,6 +549,7 @@ SPAN_DECLARE(dtmf_tx_state_t *) dtmf_tx_init(dtmf_tx_state_t *s)
|
|||
if ((s = (dtmf_tx_state_t *) malloc(sizeof (*s))) == NULL)
|
||||
return NULL;
|
||||
}
|
||||
memset(s, 0, sizeof(*s));
|
||||
if (!dtmf_tx_inited)
|
||||
dtmf_tx_initialise();
|
||||
tone_gen_init(&(s->tones), &dtmf_digit_tones[0]);
|
||||
|
|
|
@ -71,12 +71,21 @@
|
|||
#include "spandsp/v27ter_rx.h"
|
||||
#include "spandsp/v17tx.h"
|
||||
#include "spandsp/v17rx.h"
|
||||
#include "spandsp/timezone.h"
|
||||
#include "spandsp/t4_rx.h"
|
||||
#include "spandsp/t4_tx.h"
|
||||
#if defined(SPANDSP_SUPPORT_T85)
|
||||
#if defined(SPANDSP_SUPPORT_T42) || defined(SPANDSP_SUPPORT_T43) || defined(SPANDSP_SUPPORT_T85)
|
||||
#include "spandsp/t81_t82_arith_coding.h"
|
||||
#endif
|
||||
#if defined(SPANDSP_SUPPORT_T85)
|
||||
#include "spandsp/t85.h"
|
||||
#endif
|
||||
#if defined(SPANDSP_SUPPORT_T42)
|
||||
#include "spandsp/t42.h"
|
||||
#endif
|
||||
#if defined(SPANDSP_SUPPORT_T43)
|
||||
#include "spandsp/t43.h"
|
||||
#endif
|
||||
#include "spandsp/t4_t6_decode.h"
|
||||
#include "spandsp/t4_t6_encode.h"
|
||||
|
||||
|
@ -102,10 +111,19 @@
|
|||
#include "spandsp/private/v29rx.h"
|
||||
#include "spandsp/private/hdlc.h"
|
||||
#include "spandsp/private/fax_modems.h"
|
||||
#if defined(SPANDSP_SUPPORT_T85)
|
||||
#include "spandsp/private/timezone.h"
|
||||
#if defined(SPANDSP_SUPPORT_T42) || defined(SPANDSP_SUPPORT_T43) || defined(SPANDSP_SUPPORT_T85)
|
||||
#include "spandsp/private/t81_t82_arith_coding.h"
|
||||
#endif
|
||||
#if defined(SPANDSP_SUPPORT_T85)
|
||||
#include "spandsp/private/t85.h"
|
||||
#endif
|
||||
#if defined(SPANDSP_SUPPORT_T42)
|
||||
#include "spandsp/private/t42.h"
|
||||
#endif
|
||||
#if defined(SPANDSP_SUPPORT_T43)
|
||||
#include "spandsp/private/t43.h"
|
||||
#endif
|
||||
#include "spandsp/private/t4_t6_decode.h"
|
||||
#include "spandsp/private/t4_t6_encode.h"
|
||||
#include "spandsp/private/t4_rx.h"
|
||||
|
|
|
@ -54,21 +54,38 @@
|
|||
#include "spandsp/fast_convert.h"
|
||||
#include "spandsp/logging.h"
|
||||
#include "spandsp/saturated.h"
|
||||
#include "spandsp/timezone.h"
|
||||
#include "spandsp/t4_rx.h"
|
||||
#include "spandsp/t4_tx.h"
|
||||
#if defined(SPANDSP_SUPPORT_T85)
|
||||
#if defined(SPANDSP_SUPPORT_T42) || defined(SPANDSP_SUPPORT_T43) || defined(SPANDSP_SUPPORT_T85)
|
||||
#include "spandsp/t81_t82_arith_coding.h"
|
||||
#endif
|
||||
#if defined(SPANDSP_SUPPORT_T85)
|
||||
#include "spandsp/t85.h"
|
||||
#endif
|
||||
#if defined(SPANDSP_SUPPORT_T42)
|
||||
#include "spandsp/t42.h"
|
||||
#endif
|
||||
#if defined(SPANDSP_SUPPORT_T43)
|
||||
#include "spandsp/t43.h"
|
||||
#endif
|
||||
#include "spandsp/t4_t6_decode.h"
|
||||
#include "spandsp/t4_t6_encode.h"
|
||||
#include "spandsp/image_translate.h"
|
||||
|
||||
#include "spandsp/private/logging.h"
|
||||
#if defined(SPANDSP_SUPPORT_T85)
|
||||
#if defined(SPANDSP_SUPPORT_T42) || defined(SPANDSP_SUPPORT_T43) || defined(SPANDSP_SUPPORT_T85)
|
||||
#include "spandsp/private/t81_t82_arith_coding.h"
|
||||
#endif
|
||||
#if defined(SPANDSP_SUPPORT_T85)
|
||||
#include "spandsp/private/t85.h"
|
||||
#endif
|
||||
#if defined(SPANDSP_SUPPORT_T42)
|
||||
#include "spandsp/private/t42.h"
|
||||
#endif
|
||||
#if defined(SPANDSP_SUPPORT_T43)
|
||||
#include "spandsp/private/t43.h"
|
||||
#endif
|
||||
#include "spandsp/private/t4_t6_decode.h"
|
||||
#include "spandsp/private/t4_t6_encode.h"
|
||||
#include "spandsp/private/t4_rx.h"
|
||||
|
|
|
@ -99,6 +99,7 @@
|
|||
#include <spandsp/v18.h>
|
||||
#include <spandsp/v42.h>
|
||||
#include <spandsp/v42bis.h>
|
||||
#include <spandsp/timezone.h>
|
||||
#include <spandsp/t4_rx.h>
|
||||
#include <spandsp/t4_tx.h>
|
||||
#include <spandsp/t4_t6_decode.h>
|
||||
|
|
|
@ -165,8 +165,10 @@ SPAN_DECLARE(int) plc_fillin(plc_state_t *s, int16_t amp[], int len)
|
|||
float old_weight;
|
||||
float new_weight;
|
||||
float gain;
|
||||
//int16_t *orig_amp;
|
||||
int orig_len;
|
||||
|
||||
//orig_amp = amp;
|
||||
orig_len = len;
|
||||
if (s->missing_samples == 0)
|
||||
{
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
#include <spandsp/schedule.h>
|
||||
#include <spandsp/g711.h>
|
||||
#include <spandsp/timing.h>
|
||||
#include <spandsp/math_fixed.h>
|
||||
#include <spandsp/vector_float.h>
|
||||
#include <spandsp/complex_vector_float.h>
|
||||
#include <spandsp/vector_int.h>
|
||||
|
@ -97,6 +98,7 @@
|
|||
#include <spandsp/v27ter_tx.h>
|
||||
/*#include <spandsp/v34.h>*/
|
||||
#include <spandsp/v18.h>
|
||||
#include <spandsp/timezone.h>
|
||||
#include <spandsp/t4_rx.h>
|
||||
#include <spandsp/t4_tx.h>
|
||||
#include <spandsp/image_translate.h>
|
||||
|
@ -126,7 +128,6 @@
|
|||
#include <spandsp/gsm0610.h>
|
||||
#include <spandsp/plc.h>
|
||||
#include <spandsp/playout.h>
|
||||
#include <spandsp/timezone.h>
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -186,6 +186,11 @@ SPAN_DECLARE(int) dtmf_rx_status(dtmf_rx_state_t *s);
|
|||
\return The number of digits actually returned. */
|
||||
SPAN_DECLARE(size_t) dtmf_rx_get(dtmf_rx_state_t *s, char *digits, int max);
|
||||
|
||||
/*! \brief Get the logging context associated with a DTMF receiver context.
|
||||
\param s The DTMF receiver context.
|
||||
\return A pointer to the logging context */
|
||||
SPAN_DECLARE(logging_state_t *) dtmf_rx_get_logging_state(dtmf_rx_state_t *s);
|
||||
|
||||
/*! \brief Initialise a DTMF receiver context.
|
||||
\param s The DTMF receiver context.
|
||||
\param callback An optional callback routine, used to report received digits. If
|
||||
|
|
|
@ -72,6 +72,7 @@
|
|||
/*#include <spandsp/private/v34.h>*/
|
||||
#include <spandsp/private/at_interpreter.h>
|
||||
#include <spandsp/private/fax_modems.h>
|
||||
#include <spandsp/private/timezone.h>
|
||||
#include <spandsp/private/image_translate.h>
|
||||
#include <spandsp/private/t4_t6_decode.h>
|
||||
#include <spandsp/private/t4_t6_encode.h>
|
||||
|
@ -88,7 +89,6 @@
|
|||
#include <spandsp/private/t38_gateway.h>
|
||||
#include <spandsp/private/t38_terminal.h>
|
||||
#include <spandsp/private/t31.h>
|
||||
#include <spandsp/private/timezone.h>
|
||||
#include <spandsp/private/v18.h>
|
||||
#include <spandsp/private/v42.h>
|
||||
#include <spandsp/private/v42bis.h>
|
||||
|
|
|
@ -96,6 +96,9 @@ struct dtmf_rx_state_s
|
|||
uint8_t in_digit;
|
||||
/*! The current sample number within a processing block. */
|
||||
int current_sample;
|
||||
|
||||
/*! Tone state duration */
|
||||
int duration;
|
||||
|
||||
/*! The number of digits which have been lost due to buffer overflows. */
|
||||
int lost_digits;
|
||||
|
@ -103,6 +106,9 @@ struct dtmf_rx_state_s
|
|||
int current_digits;
|
||||
/*! The received digits buffer. This is a NULL terminated string. */
|
||||
char digits[MAX_DTMF_DIGITS + 1];
|
||||
|
||||
/*! \brief Error and flow logging control */
|
||||
logging_state_t logging;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -40,7 +40,7 @@ struct fax_state_s
|
|||
/*! \brief The analogue modem front-end */
|
||||
fax_modems_state_t modems;
|
||||
/*! \brief V.8 */
|
||||
//v8_state_t v8;
|
||||
v8_state_t v8;
|
||||
|
||||
/*! \brief Error and flow logging control */
|
||||
logging_state_t logging;
|
||||
|
|
|
@ -73,6 +73,11 @@ struct t30_state_s
|
|||
page image. FALSE for FAX page headers to add to the overall length of
|
||||
the page. */
|
||||
int header_overlays_image;
|
||||
/*! \brief Use private timezone if TRUE */
|
||||
int use_own_tz;
|
||||
/*! \brief Optional per instance time zone for the FAX page header timestamp. */
|
||||
tz_t tz;
|
||||
|
||||
/*! \brief TRUE if remote T.30 procedural interrupts are allowed. */
|
||||
int remote_interrupts_allowed;
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
typedef struct
|
||||
{
|
||||
fax_modems_state_t modems;
|
||||
//v8_state_t v8;
|
||||
v8_state_t v8;
|
||||
|
||||
/*! The transmit signal handler to be used when the current one has finished sending. */
|
||||
span_tx_handler_t *next_tx_handler;
|
||||
|
|
|
@ -96,7 +96,7 @@ typedef struct
|
|||
/*! \brief The value for samples at the next transmission point. */
|
||||
int32_t next_tx_samples;
|
||||
/*! \brief The current transmit timeout. */
|
||||
//int32_t timeout_tx_samples;
|
||||
int32_t timeout_tx_samples;
|
||||
/*! \brief The current receive timeout. */
|
||||
int32_t timeout_rx_samples;
|
||||
} t38_terminal_front_end_state_t;
|
||||
|
|
|
@ -49,8 +49,8 @@ struct t4_state_s
|
|||
/*! \brief The text which will be used in FAX page header. No text results
|
||||
in no header line. */
|
||||
const char *header_info;
|
||||
/*! \brief Optional per instance time zone for the FAX pager header timestamp. */
|
||||
struct tz_s *tz;
|
||||
/*! \brief Optional per instance time zone for the FAX page header timestamp. */
|
||||
tz_t *tz;
|
||||
|
||||
/*! \brief The size of the compressed image on the line side, in bits. */
|
||||
int line_image_size;
|
||||
|
|
|
@ -72,77 +72,6 @@ struct v17_rx_state_s
|
|||
routine. */
|
||||
void *qam_user_data;
|
||||
|
||||
/*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */
|
||||
#if defined(SPANDSP_USE_FIXED_POINT)
|
||||
int16_t rrc_filter[V17_RX_FILTER_STEPS];
|
||||
#else
|
||||
float rrc_filter[V17_RX_FILTER_STEPS];
|
||||
#endif
|
||||
/*! \brief Current offset into the RRC pulse shaping filter buffer. */
|
||||
int rrc_filter_step;
|
||||
|
||||
/*! \brief The state of the differential decoder */
|
||||
int diff;
|
||||
/*! \brief The register for the data scrambler. */
|
||||
uint32_t scramble_reg;
|
||||
/*! \brief Scrambler tap */
|
||||
int scrambler_tap;
|
||||
|
||||
/*! \brief TRUE if the short training sequence is to be used. */
|
||||
int short_train;
|
||||
/*! \brief The section of the training data we are currently in. */
|
||||
int training_stage;
|
||||
/*! \brief A count of how far through the current training step we are. */
|
||||
int training_count;
|
||||
/*! \brief A measure of how much mismatch there is between the real constellation,
|
||||
and the decoded symbol positions. */
|
||||
float training_error;
|
||||
/*! \brief The value of the last signal sample, using the a simple HPF for signal power estimation. */
|
||||
int16_t last_sample;
|
||||
/*! \brief >0 if a signal above the minimum is present. It may or may not be a V.17 signal. */
|
||||
int signal_present;
|
||||
/*! \brief Whether or not a carrier drop was detected and the signal delivery is pending. */
|
||||
int carrier_drop_pending;
|
||||
/*! \brief A count of the current consecutive samples below the carrier off threshold. */
|
||||
int low_samples;
|
||||
/*! \brief A highest magnitude sample seen. */
|
||||
int16_t high_sample;
|
||||
|
||||
/*! \brief The current phase of the carrier (i.e. the DDS parameter). */
|
||||
uint32_t carrier_phase;
|
||||
/*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */
|
||||
int32_t carrier_phase_rate;
|
||||
/*! \brief The carrier update rate saved for reuse when using short training. */
|
||||
int32_t carrier_phase_rate_save;
|
||||
#if defined(SPANDSP_USE_FIXED_POINTx)
|
||||
/*! \brief The proportional part of the carrier tracking filter. */
|
||||
float carrier_track_p;
|
||||
/*! \brief The integral part of the carrier tracking filter. */
|
||||
float carrier_track_i;
|
||||
#else
|
||||
/*! \brief The proportional part of the carrier tracking filter. */
|
||||
float carrier_track_p;
|
||||
/*! \brief The integral part of the carrier tracking filter. */
|
||||
float carrier_track_i;
|
||||
#endif
|
||||
|
||||
/*! \brief A power meter, to measure the HPF'ed signal power in the channel. */
|
||||
power_meter_t power;
|
||||
/*! \brief The power meter level at which carrier on is declared. */
|
||||
int32_t carrier_on_power;
|
||||
/*! \brief The power meter level at which carrier off is declared. */
|
||||
int32_t carrier_off_power;
|
||||
|
||||
/*! \brief Current read offset into the equalizer buffer. */
|
||||
int eq_step;
|
||||
/*! \brief Current write offset into the equalizer buffer. */
|
||||
int eq_put_step;
|
||||
/*! \brief Symbol count to the next equalizer update. */
|
||||
int eq_skip;
|
||||
|
||||
/*! \brief The current half of the baud. */
|
||||
int baud_half;
|
||||
|
||||
#if defined(SPANDSP_USE_FIXED_POINTx)
|
||||
/*! \brief The scaling factor accessed by the AGC algorithm. */
|
||||
float agc_scaling;
|
||||
|
@ -166,6 +95,20 @@ struct v17_rx_state_s
|
|||
int32_t symbol_sync_dc_filter[2];
|
||||
/*! Baud phase for symbol sync. */
|
||||
int32_t baud_phase;
|
||||
|
||||
/*! \brief A measure of how much mismatch there is between the real constellation,
|
||||
and the decoded symbol positions. */
|
||||
float training_error;
|
||||
|
||||
/*! \brief The proportional part of the carrier tracking filter. */
|
||||
float carrier_track_p;
|
||||
/*! \brief The integral part of the carrier tracking filter. */
|
||||
float carrier_track_i;
|
||||
/*! \brief The root raised cosine (RRC) pulse shaping filter buffer. */
|
||||
int16_t rrc_filter[V17_RX_FILTER_STEPS];
|
||||
|
||||
/*! \brief A pointer to the current constellation. */
|
||||
const complexi16_t *constellation;
|
||||
#else
|
||||
/*! \brief The scaling factor accessed by the AGC algorithm. */
|
||||
float agc_scaling;
|
||||
|
@ -189,7 +132,71 @@ struct v17_rx_state_s
|
|||
float symbol_sync_dc_filter[2];
|
||||
/*! Baud phase for symbol sync. */
|
||||
float baud_phase;
|
||||
|
||||
/*! \brief A measure of how much mismatch there is between the real constellation,
|
||||
and the decoded symbol positions. */
|
||||
float training_error;
|
||||
|
||||
/*! \brief The proportional part of the carrier tracking filter. */
|
||||
float carrier_track_p;
|
||||
/*! \brief The integral part of the carrier tracking filter. */
|
||||
float carrier_track_i;
|
||||
/*! \brief The root raised cosine (RRC) pulse shaping filter buffer. */
|
||||
float rrc_filter[V17_RX_FILTER_STEPS];
|
||||
|
||||
/*! \brief A pointer to the current constellation. */
|
||||
const complexf_t *constellation;
|
||||
#endif
|
||||
/*! \brief Current offset into the RRC pulse shaping filter buffer. */
|
||||
int rrc_filter_step;
|
||||
|
||||
/*! \brief The state of the differential decoder */
|
||||
int diff;
|
||||
/*! \brief The register for the data scrambler. */
|
||||
uint32_t scramble_reg;
|
||||
/*! \brief Scrambler tap */
|
||||
int scrambler_tap;
|
||||
|
||||
/*! \brief TRUE if the short training sequence is to be used. */
|
||||
int short_train;
|
||||
/*! \brief The section of the training data we are currently in. */
|
||||
int training_stage;
|
||||
/*! \brief A count of how far through the current training step we are. */
|
||||
int training_count;
|
||||
/*! \brief The value of the last signal sample, using the a simple HPF for signal power estimation. */
|
||||
int16_t last_sample;
|
||||
/*! \brief >0 if a signal above the minimum is present. It may or may not be a V.17 signal. */
|
||||
int signal_present;
|
||||
/*! \brief Whether or not a carrier drop was detected and the signal delivery is pending. */
|
||||
int carrier_drop_pending;
|
||||
/*! \brief A count of the current consecutive samples below the carrier off threshold. */
|
||||
int low_samples;
|
||||
/*! \brief A highest magnitude sample seen. */
|
||||
int16_t high_sample;
|
||||
|
||||
/*! \brief The current phase of the carrier (i.e. the DDS parameter). */
|
||||
uint32_t carrier_phase;
|
||||
/*! \brief The update rate for the phase of the carrier (i.e. the DDS increment). */
|
||||
int32_t carrier_phase_rate;
|
||||
/*! \brief The carrier update rate saved for reuse when using short training. */
|
||||
int32_t carrier_phase_rate_save;
|
||||
|
||||
/*! \brief A power meter, to measure the HPF'ed signal power in the channel. */
|
||||
power_meter_t power;
|
||||
/*! \brief The power meter level at which carrier on is declared. */
|
||||
int32_t carrier_on_power;
|
||||
/*! \brief The power meter level at which carrier off is declared. */
|
||||
int32_t carrier_off_power;
|
||||
|
||||
/*! \brief Current read offset into the equalizer buffer. */
|
||||
int eq_step;
|
||||
/*! \brief Current write offset into the equalizer buffer. */
|
||||
int eq_put_step;
|
||||
/*! \brief Symbol count to the next equalizer update. */
|
||||
int eq_skip;
|
||||
|
||||
/*! \brief The current half of the baud. */
|
||||
int baud_half;
|
||||
|
||||
/*! \brief The total symbol timing correction since the carrier came up.
|
||||
This is only for performance analysis purposes. */
|
||||
|
@ -199,12 +206,7 @@ struct v17_rx_state_s
|
|||
int32_t start_angles[2];
|
||||
/*! \brief History list of phase angles for the coarse carrier aquisition step. */
|
||||
int32_t angles[16];
|
||||
/*! \brief A pointer to the current constellation. */
|
||||
#if defined(SPANDSP_USE_FIXED_POINTx)
|
||||
const complexi16_t *constellation;
|
||||
#else
|
||||
const complexf_t *constellation;
|
||||
#endif
|
||||
|
||||
/*! \brief A pointer to the current space map. There is a space map for
|
||||
each trellis state. */
|
||||
int space_map;
|
||||
|
@ -217,13 +219,16 @@ struct v17_rx_state_s
|
|||
int full_path_to_past_state_locations[V17_TRELLIS_STORAGE_DEPTH][8];
|
||||
/*! \brief The trellis. */
|
||||
int past_state_locations[V17_TRELLIS_STORAGE_DEPTH][8];
|
||||
#if defined(SPANDSP_USE_FIXED_POINTx)
|
||||
/*! \brief Euclidean distances (actually the squares of the distances)
|
||||
from the last states of the trellis. */
|
||||
#if defined(SPANDSP_USE_FIXED_POINTx)
|
||||
uint32_t distances[8];
|
||||
#else
|
||||
/*! \brief Euclidean distances (actually the squares of the distances)
|
||||
from the last states of the trellis. */
|
||||
float distances[8];
|
||||
#endif
|
||||
|
||||
/*! \brief Error and flow logging control */
|
||||
logging_state_t logging;
|
||||
};
|
||||
|
|
|
@ -49,23 +49,24 @@ struct v17_tx_state_s
|
|||
/*! \brief A user specified opaque pointer passed to the status function. */
|
||||
void *status_user_data;
|
||||
|
||||
#if defined(SPANDSP_USE_FIXED_POINT)
|
||||
/*! \brief The gain factor needed to achieve the specified output power. */
|
||||
#if defined(SPANDSP_USE_FIXED_POINT)
|
||||
int32_t gain;
|
||||
#else
|
||||
float gain;
|
||||
#endif
|
||||
|
||||
/*! \brief The route raised cosine (RRC) pulse shaping filter buffer. */
|
||||
#if defined(SPANDSP_USE_FIXED_POINT)
|
||||
int16_t gain;
|
||||
/*! \brief A pointer to the constellation currently in use. */
|
||||
const complexi16_t *constellation;
|
||||
/*! \brief The root raised cosine (RRC) pulse shaping filter buffer. */
|
||||
int16_t rrc_filter_re[V17_TX_FILTER_STEPS];
|
||||
int16_t rrc_filter_im[V17_TX_FILTER_STEPS];
|
||||
#else
|
||||
/*! \brief The gain factor needed to achieve the specified output power. */
|
||||
float gain;
|
||||
/*! \brief A pointer to the constellation currently in use. */
|
||||
const complexf_t *constellation;
|
||||
/*! \brief The root raised cosine (RRC) pulse shaping filter buffer. */
|
||||
float rrc_filter_re[V17_TX_FILTER_STEPS];
|
||||
float rrc_filter_im[V17_TX_FILTER_STEPS];
|
||||
#endif
|
||||
|
||||
/*! \brief Current offset into the RRC pulse shaping filter buffer. */
|
||||
int rrc_filter_step;
|
||||
|
||||
|
@ -94,12 +95,6 @@ struct v17_tx_state_s
|
|||
/*! \brief The current fractional phase of the baud timing. */
|
||||
int baud_phase;
|
||||
|
||||
/*! \brief A pointer to the constellation currently in use. */
|
||||
#if defined(SPANDSP_USE_FIXED_POINT)
|
||||
const complexi16_t *constellation;
|
||||
#else
|
||||
const complexf_t *constellation;
|
||||
#endif
|
||||
/*! \brief The current number of data bits per symbol. This does not include
|
||||
the redundant bit. */
|
||||
int bits_per_symbol;
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue