This now uses the external spandsp3 package.
Patches:
- 390-t38-reinvite-488-fix.patch removed (finally upstreamed)
- 340-mod-spandsp-fix-typo.patch and 350-gsmopen-spandsp-fixup.patch
added (both accepted into upstream master already)
Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
include $(TOPDIR)/rules.mk
PKG_NAME:=freeswitch
-PKG_VERSION:=1.10.4
+PKG_VERSION:=1.10.5
PKG_RELEASE:=1
PKG_MAINTAINER:=Sebastian Kemper <sebastian_ml@gmx.net>
PKG_SOURCE:=freeswitch-$(PKG_VERSION).-release.tar.xz
PKG_SOURCE_URL:=https://files.freeswitch.org/releases/freeswitch
-PKG_HASH:=492d8faae813dc21bda691f8d0c3bead1f541d6df69dba760c9d7bacbed717fc
+PKG_HASH:=3e26600767a82946eca94af2c8f14712783aa83db5fb1cc57585f544aecce327
PKG_CPE_ID:=cpe:/a:freeswitch:freeswitch
PKG_BUILD_DIR:=$(BUILD_DIR)/freeswitch-$(PKG_VERSION).-release
-# configure in libs/spandsp fails without libjpeg-turbo and tiff
-PKG_BUILD_DEPENDS:= \
- libjpeg-turbo \
- tiff \
- perl/host
+PKG_BUILD_DEPENDS:=perl/host
PKG_FIXUP:=autoreconf
+libpcre \
+libpthread \
+librt \
+ +libspandsp3 \
+libspeex \
+libspeexdsp \
+libsqlite3 \
--with-erlang=no
endif
-# Make mod_spandsp use fixed point math when soft float support is
-# enabled on target devices.
-ifeq ($(CONFIG_SOFT_FLOAT),y)
-CONFIGURE_ARGS+= \
- --enable-fixed-point
-endif
-
# FreeSWITCH dropped postgresql support from the core. postgresql
# support is now available via mod_pgsql. We still need to pass
# '--without-pgsql', otherwise apr-util links to libpq and we still
FS_FREERADIUS_CLIENT_FILE:=freeradius-client-1.1.7.tar.gz
FS_FREERADIUS_CLIENT_HASH:=eada2861b8f4928e3ac6b5bbfe11e92cd6cdcacfce40cae1085e77c1b6add0e9
-# spandsp
-FS_SPANDSP_VERSION:=a6266f22591ee6ed1be9282babe4bfdbc50d4b82
-FS_SPANDSP_FILE:=fs-spandsp-$(FS_SPANDSP_VERSION).tar.xz
-FS_SPANDSP_URL:=https://github.com/freeswitch/spandsp.git
-FS_SPANDSP_MIRROR_HASH:=4aa38003c07c05d9030eab93ec3b0b974be03013f9e898b1f053f7306bcfa5c8
-
ifneq ($(CONFIG_PACKAGE_freeswitch-mod-event-zmq),)
$(eval $(call Download/files,zmq,$(FS_ZEROMQ_FILE),$(FS_ZEROMQ_URL),$(FS_ZEROMQ_HASH)))
endif
$(eval $(call Download/files,freeradius-client,$(FS_FREERADIUS_CLIENT_FILE),$(FS_LIBS_URL),$(FS_FREERADIUS_CLIENT_HASH)))
endif
-$(eval $(call Download/files,fs-spandsp,$(FS_SPANDSP_FILE),$(FS_SPANDSP_URL),,$(FS_SPANDSP_VERSION),spandsp,$(FS_SPANDSP_MIRROR_HASH),git))
-
# Need to update LDFLAGS for libs/unimrcp, otherwise it will try to link to a
# different apr/apr-util if found.
# FS_ANCHOR: string in build/acmacros/apr.m4 that will be replaced
define Build/Prepare
$(call Build/Prepare/Default)
- xzcat $(DL_DIR)/$(FS_SPANDSP_FILE) | tar -C $(PKG_BUILD_DIR)/libs $(TAR_OPTIONS)
- $(CP) ./files/spandsp-flags.patch $(PKG_BUILD_DIR)/libs/spandsp
- cd $(PKG_BUILD_DIR) && $(PATCH) -p1 < libs/spandsp/spandsp-flags.patch
-
echo '#applications/mod_random' >> $(PKG_BUILD_DIR)/modules.conf
echo '#codecs/mod_yuv' >> $(PKG_BUILD_DIR)/modules.conf
echo '#event_handlers/mod_event_test' >> $(PKG_BUILD_DIR)/modules.conf
--- /dev/null
+--- a/src/mod/applications/mod_spandsp/Makefile.am
++++ b/src/mod/applications/mod_spandsp/Makefile.am
+@@ -4,6 +4,6 @@ MODNAME=mod_spandsp
+ mod_LTLIBRARIES = mod_spandsp.la
+ mod_spandsp_la_SOURCES = mod_spandsp.c udptl.c mod_spandsp_fax.c mod_spandsp_dsp.c mod_spandsp_codecs.c mod_spandsp_modem.c
+ mod_spandsp_la_CFLAGS = $(AM_CFLAGS)
+-mod_spandsp_la_CPPFLAGS = $(SPANDSL_CFLAGS) -I.
++mod_spandsp_la_CPPFLAGS = $(SPANDSP_CFLAGS) -I.
+ mod_spandsp_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(SPANDSP_LIBS) -ljpeg -lz -ltiff
+ mod_spandsp_la_LDFLAGS = -avoid-version -module -no-undefined -shared
--- /dev/null
+--- a/src/mod/endpoints/mod_gsmopen/Makefile.am
++++ b/src/mod/endpoints/mod_gsmopen/Makefile.am
+@@ -1,19 +1,9 @@
+ include $(top_srcdir)/build/modmake.rulesam
+ MODNAME=mod_gsmopen
+
+-SPANDSP_DIR=$(switch_srcdir)/libs/spandsp
+-SPANDSP_BUILDDIR=$(switch_builddir)/libs/spandsp
+-SPANDSP_LA=$(SPANDSP_BUILDDIR)/src/libspandsp.la
+-
+ mod_LTLIBRARIES = mod_gsmopen.la
+ mod_gsmopen_la_SOURCES = mod_gsmopen.cpp gsmopen_protocol.cpp
+ mod_gsmopen_la_CXXFLAGS = $(SWITCH_AM_CXXFLAGS)
+-mod_gsmopen_la_CPPFLAGS = -I$(SPANDSP_DIR)/src -I$(SPANDSP_BUILDDIR)/src -I.
+-mod_gsmopen_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(SPANDSP_LA)
++mod_gsmopen_la_CPPFLAGS = $(SPANDSP_CFLAGS) -I.
++mod_gsmopen_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(SPANDSP_LIBS)
+ mod_gsmopen_la_LDFLAGS = -avoid-version -module -no-undefined -lctb-0.16 -lgsmme
+-
+-BUILT_SOURCES = $(SPANDSP_LA)
+-
+-$(SPANDSP_LA): $(SPANDSP_DIR) $(SPANDSP_DIR)/.update
+- cd $(SPANDSP_BUILDDIR) && $(MAKE) CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)"
+- $(TOUCH_TARGET)
--- /dev/null
+--- a/configure.ac
++++ b/configure.ac
+@@ -703,7 +703,7 @@ PKG_CHECK_MODULES([MARIADB], [libmariadb
+ ])
+ ])
+
+-PKG_CHECK_MODULES([SPANDSP], [spandsp >= 3.0],[
++PKG_CHECK_MODULES([SPANDSP], [spandsp3 >= 3.0],[
+ AM_CONDITIONAL([HAVE_SPANDSP],[true])],[
+ AC_MSG_ERROR([no usable spandsp; please install spandsp3 devel package or equivalent])
+ ])
+++ /dev/null
-commit 167294ea2649afd0ffedf4520b0f308979c3ca2a
-Author: Sebastian Kemper <sebastian_ml@gmx.net>
-Date: Fri Oct 18 18:28:07 2019 +0200
-
- [mod-sofia] Fix reINVITE after T38 is rejected
-
- From FS-11833.
-
- After FS sends a reINVITE to T38 which gets rejected by peer it is no
- longer in a state where it can properly answer a reINVITE which requests
- a change of the media setup.
-
- 1. FS sends INVITE (destination is a fax machine)
- 2. Call connects with "8 101"
- 3. FS sends reINVITE to T38
- 4. T38 rejected (488)
- 5. FS receives INVITE to "8"
- 6. FS replies with 200 OK without SDP
- 7. Call fails
-
- The bug is related to TFLAG_SDP. This flag is set when a media session
- is established. And when there's a reINVITE sofia_glue_do_invite() from
- sofia_glue.c is called and clears the flag again:
-
- sofia_clear_flag_locked(tech_pvt, TFLAG_SDP);
-
- So when FS sends a reINVITE to T38 the flag gets cleared. But when the
- reINVITE is rejected with 488 the flag is not set again. It stays
- cleared. So the call continues with the previously negotiated media, fax
- passthrough (8 101 in this case), but TFLAG_SDP is not set.
-
- So when FS receives a reINVITE at this point it doesn't see the need to
- renegotiate anything, even though it realizes that 2833 DTMF is now off:
-
- 2019-04-30 16:42:12.478025 [DEBUG] switch_core_media.c:5478 Audio Codec Compare [PCMA:8:8000:20:64000:1]/[PCMA:8:8000:20:64000:1]
- 2019-04-30 16:42:12.478025 [DEBUG] switch_core_media.c:5533 Audio Codec Compare [PCMA:8:8000:20:64000:1] ++++ is saved as a match
- 2019-04-30 16:42:12.478025 [DEBUG] switch_core_media.c:5802 No 2833 in SDP. Disable 2833 dtmf and switch to INFO
-
- When FS doesn't send a reINVITE (fax_enable_t38_request=false) and the
- reINVITE to "8" is received, TFLAG_SDP is still set and then FS
- understands that it needs to renegotiate and replies with a 200 OK that
- includes SDP:
-
- 2019-04-30 16:41:19.358028 [DEBUG] switch_core_media.c:5478 Audio Codec Compare [PCMA:8:8000:20:64000:1]/[PCMA:8:8000:20:64000:1]
- 2019-04-30 16:41:19.358028 [DEBUG] switch_core_media.c:5533 Audio Codec Compare [PCMA:8:8000:20:64000:1] ++++ is saved as a match
- 2019-04-30 16:41:19.358028 [DEBUG] switch_core_media.c:5802 No 2833 in SDP. Disable 2833 dtmf and switch to INFO
- 2019-04-30 16:41:19.358028 [DEBUG] sofia.c:8237 skemper was here in line 8232
- 2019-04-30 16:41:19.358028 [DEBUG] switch_core_media.c:8390 skemper was here in line 8390.
- 2019-04-30 16:41:19.358028 [DEBUG] switch_core_media.c:8496 Audio params are unchanged for sofia/external/+called_number.
- 2019-04-30 16:41:19.358028 [DEBUG] sofia.c:8243 Processing updated SDP
-
- This fixes the state problem after a rejected T38 reINVITE by setting
- TFLAG_SDP.
-
- Signed-off-by: Sebastian Kemper <sebastian_ml@gmx.net>
-
---- a/src/mod/endpoints/mod_sofia/sofia.c
-+++ b/src/mod/endpoints/mod_sofia/sofia.c
-@@ -6536,6 +6536,7 @@ static void sofia_handle_sip_r_invite(sw
- switch_channel_clear_app_flag_key("T38", tech_pvt->channel, CF_APP_T38_REQ);
- switch_channel_set_app_flag_key("T38", tech_pvt->channel, CF_APP_T38_FAIL);
- switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s T38 invite failed\n", switch_channel_get_name(tech_pvt->channel));
-+ sofia_set_flag(tech_pvt, TFLAG_SDP);
- }
-
-
+++ /dev/null
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -130,7 +130,7 @@ CORE_CFLAGS += -I$(switch_srcdir)/libs/l
- CORE_CFLAGS += -DSWITCH_HAVE_YUV
- endif
- CORE_CFLAGS += -I$(switch_srcdir)/libs/srtp/crypto/include -Ilibs/srtp/crypto/include
--CORE_CFLAGS += $(SPANDSP_CFLAGS)
-+CORE_CFLAGS += -I$(switch_builddir)/libs/spandsp/src -I$(switch_srcdir)/libs/spandsp/src
- if ENABLE_LIBVPX
- CORE_CFLAGS += -DSWITCH_HAVE_VPX
- endif
-@@ -184,10 +184,13 @@ endif
- ##
- ## libfreeswitch
- ##
--noinst_LTLIBRARIES =
-+noinst_LTLIBRARIES = libfreeswitch_spandsp.la
- if ENABLE_LIBYUV
- noinst_LTLIBRARIES += libfreeswitch_libyuv.la
- endif
-+libfreeswitch_spandsp_la_SOURCES = libs/spandsp/src/plc.c libs/spandsp/src/alloc.c libs/spandsp/src/bit_operations.c
-+libfreeswitch_spandsp_la_CFLAGS = -Ilibs/spandsp/src $(CORE_CFLAGS) $(AM_CFLAGS)
-+CORE_LIBS+=libfreeswitch_spandsp.la
-
- if ENABLE_LIBYUV
- libfreeswitch_libyuv_la_SOURCES = \
-@@ -248,7 +251,7 @@ endif
- lib_LTLIBRARIES = libfreeswitch.la
- libfreeswitch_la_CFLAGS = $(CORE_CFLAGS) $(SQLITE_CFLAGS) $(GUMBO_CFLAGS) $(FVAD_CFLAGS) $(FREETYPE_CFLAGS) $(CURL_CFLAGS) $(PCRE_CFLAGS) $(SPEEX_CFLAGS) $(LIBEDIT_CFLAGS) $(openssl_CFLAGS) $(AM_CFLAGS) $(TPL_CFLAGS)
- libfreeswitch_la_LDFLAGS = -version-info 1:0:0 $(AM_LDFLAGS) $(PLATFORM_CORE_LDFLAGS) -no-undefined
--libfreeswitch_la_LIBADD = $(CORE_LIBS) $(APR_LIBS) $(SQLITE_LIBS) $(GUMBO_LIBS) $(FVAD_LIBS) $(FREETYPE_LIBS) $(CURL_LIBS) $(PCRE_LIBS) $(SPEEX_LIBS) $(LIBEDIT_LIBS) $(openssl_LIBS) $(PLATFORM_CORE_LIBS) $(TPL_LIBS) $(SPANDSP_LIBS)
-+libfreeswitch_la_LIBADD = $(CORE_LIBS) $(APR_LIBS) $(SQLITE_LIBS) $(GUMBO_LIBS) $(FVAD_LIBS) $(FREETYPE_LIBS) $(CURL_LIBS) $(PCRE_LIBS) $(SPEEX_LIBS) $(LIBEDIT_LIBS) $(openssl_LIBS) $(PLATFORM_CORE_LIBS) $(TPL_LIBS)
- libfreeswitch_la_DEPENDENCIES = $(BUILT_SOURCES)
-
- if HAVE_PNG
-@@ -717,7 +720,9 @@ core-install: core_install
-
- clean_core: clean-libLTLIBRARIES
- rm -f $(libfreeswitch_la_OBJECTS)
-+ rm -f $(libfreeswitch_spandsp_la_OBJECTS)
- rm -f `echo $(libfreeswitch_la_OBJECTS) | sed -e's|.lo|.o|g'`
-+ rm -f `echo $(libfreeswitch_spandsp_la_OBJECTS) | sed -e's|.lo|.o|g'`
-
- install_core: install-libLTLIBRARIES
-
-@@ -782,6 +787,12 @@ iks-reconf:
- cd libs/iksemel && sh ./configure.gnu $(MY_DEFAULT_ARGS)
- $(MAKE) mod_dingaling-clean
-
-+spandsp-reconf:
-+ cd libs/spandsp && $(MAKE) clean || echo
-+ cd libs/spandsp && autoreconf -fi
-+ cd libs/spandsp && sh ./configure.gnu $(MY_DEFAULT_ARGS)
-+ cd libs/spandsp && $(MAKE)
-+
- cluecon:
- @clear
- @echo Thank you for updating. This is going to take a while so relax.
---- a/configure.ac
-+++ b/configure.ac
-@@ -703,11 +703,6 @@ PKG_CHECK_MODULES([MARIADB], [libmariadb
- ])
- ])
-
--PKG_CHECK_MODULES([SPANDSP], [spandsp >= 1.99],[
-- AM_CONDITIONAL([HAVE_SPANDSP],[true])],[
-- AC_MSG_ERROR([no usable spandsp; please install spandsp devel package or equivalent])
--])
--
- PKG_CHECK_MODULES([SOFIA_SIP], [sofia-sip-ua >= 1.12.12],[
- AM_CONDITIONAL([HAVE_SOFIA_SIP],[true])],[
- AC_MSG_ERROR([no usable sofia-sip; please install sofia-sip-ua devel package or equivalent])
-@@ -2104,6 +2099,7 @@ AC_CONFIG_SUBDIRS([libs/iksemel])
- AC_CONFIG_SUBDIRS([libs/libdingaling])
- AC_CONFIG_SUBDIRS([libs/freetdm])
- AC_CONFIG_SUBDIRS([libs/unimrcp])
-+AC_CONFIG_SUBDIRS([libs/spandsp])
- if test "x${enable_zrtp}" = "xyes"; then
- AC_CONFIG_SUBDIRS([libs/libzrtp])
- fi
---- a/debian/copyright
-+++ b/debian/copyright
-@@ -1310,6 +1310,45 @@ Files: libs/js/nsprpub/pr/tests/tmocon.c
- Copyright: 1998-2004 Netscape Communications Corporation
- License: MPL-1.1 or GPL-2+
-
-+Files: libs/spandsp/*
-+Copyright: 2001-2012, Steve Underwood
-+ 2006 Michael Jerris
-+ 1991-1997 Silicon Graphics, Inc.
-+ 1990-1997 Sam Leffler
-+ 1993 CMU
-+ 2004, Horizon Wimba, Inc.
-+ 1990, 1995 Frank D. Cringle.
-+License: LGPL-2.1
-+
-+Files: libs/spandsp/tests/*
-+ libs/spandsp/spandsp-sim/g1050.c
-+ libs/spandsp/spandsp-sim/line_model.c
-+ libs/spandsp/spandsp-sim/make_line_models.c
-+ libs/spandsp/spandsp-sim/spandsp-sim.h
-+ libs/spandsp/spandsp-sim/test_utils.c
-+ libs/spandsp/src/image_translate.c
-+ libs/spandsp/src/make_at_dictionary.c
-+ libs/spandsp/src/make_cielab_luts.c
-+ libs/spandsp/src/make_math_fixed_tables.c
-+ libs/spandsp/src/make_modem_filter.c
-+ libs/spandsp/test-data/etsi/fax/generate_etsi_300_242_pages.c
-+ libs/spandsp/test-data/itu/fax/generate_dithered_tif.c
-+ libs/spandsp/test-data/itu/fax/generate_sized_pages.c
-+ libs/spandsp/test-data/itu/fax/generate_striped_pages.c
-+Copyright: 2001-2012, Steve Underwood
-+License: GPL-2
-+
-+Files: libs/spandsp/tests/ademco_contactid_tests.c
-+ libs/spandsp/tests/regression_tests.sh
-+ libs/spandsp/tests/timezone_tests.c
-+ libs/spandsp/tests/tsb85_extra_tests.sh
-+ libs/spandsp/tests/tsb85_tests.c
-+ libs/spandsp/tests/tsb85_tests.sh
-+ libs/spandsp/tests/v42bis_tests.sh
-+ libs/spandsp/tests/fax_tests.sh
-+Copyright: 2001-2012, Steve Underwood
-+License: LGPL-2.1
-+
- Files: src/mod/applications/mod_cluechoo/sl.h
- Copyright: 1993 Toyoda Masashi
- License: FIXME
-@@ -1402,6 +1441,11 @@ Files: libs/libsndfile/src/G72x/*
- Copyright: Abandoned, Sun Microsystems, Inc.
- License: public-domain
-
-+Files: libs/spandsp/src/spandsp/fast_convert.h
-+Copyright: 2001-2004 Erik de Castro Lopo <erikd@mega-nerd.com>
-+ 2009 Steve Underwood
-+License: LGPL-2.1
-+
- Files: libs/libsndfile/*
- libs/win32/libsndfile/*
- Copyright: 1999-2009 Erik de Castro Lopo <erikd@mega-nerd.com>
---- a/src/mod/applications/mod_spandsp/Makefile.am
-+++ b/src/mod/applications/mod_spandsp/Makefile.am
-@@ -1,9 +1,17 @@
- include $(top_srcdir)/build/modmake.rulesam
- MODNAME=mod_spandsp
-
-+SPANDSP_DIR=$(switch_srcdir)/libs/spandsp
-+SPANDSP_BUILDDIR=$(switch_builddir)/libs/spandsp
-+SPANDSP_LA=$(SPANDSP_BUILDDIR)/src/libspandsp.la
-+
- mod_LTLIBRARIES = mod_spandsp.la
- mod_spandsp_la_SOURCES = mod_spandsp.c udptl.c mod_spandsp_fax.c mod_spandsp_dsp.c mod_spandsp_codecs.c mod_spandsp_modem.c
- mod_spandsp_la_CFLAGS = $(AM_CFLAGS)
--mod_spandsp_la_CPPFLAGS = $(SPANDSL_CFLAGS) -I.
--mod_spandsp_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(SPANDSP_LIBS) -ljpeg -lz -ltiff
-+mod_spandsp_la_CPPFLAGS = -I$(SPANDSP_DIR)/src -I$(SPANDSP_BUILDDIR)/src -I.
-+mod_spandsp_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(SPANDSP_LA) $(SPANDSP_LA_JBIG) $(SPANDSP_LA_LZMA) -ljpeg -lz -ltiff
- mod_spandsp_la_LDFLAGS = -avoid-version -module -no-undefined -shared
-+
-+$(SPANDSP_LA): $(SPANDSP_DIR) $(SPANDSP_DIR)/.update
-+ cd $(SPANDSP_BUILDDIR) && $(MAKE) CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)"
-+ $(TOUCH_TARGET)