diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a407d1c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/sflphone-1.4.1.tar.gz diff --git a/dead.package b/dead.package deleted file mode 100644 index 8498874..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -Dead upstream and FTBFS due to pjproject API changes diff --git a/sflphone.spec b/sflphone.spec new file mode 100644 index 0000000..dbe5cb2 --- /dev/null +++ b/sflphone.spec @@ -0,0 +1,370 @@ +Name: sflphone +Version: 1.4.1 +Release: 14%{?dist} +Summary: SIP/IAX2 compatible enterprise-class software phone + +License: GPLv3+ +URL: http://sflphone.org/ +# Note: the number in the URL is different for every release +Source0: https://projects.savoirfairelinux.com/attachments/download/14805/%{name}-%{version}.tar.gz +# Install icon to hicolor/scalable/apps +Patch0: sflphone_icondir.patch +# Unbundle pjproject +Patch1: sflphone_unbundle.patch +%if 0%{?fedora} >= 22 +# ZRTP API changes +Patch2: sflphone_zrtp.patch +# Workaround for bad #includes in zrtp headers, see https://github.com/wernerd/ZRTPCPP/pull/19 +Patch3: sflphone_zrtp-includes.patch +%endif +# Disable video support in kde interface (video is not available without ffmpeg) +Patch4: sflphone_novideo.patch +# Fix gcc5 FTBFS issues +Patch5: sflphone_gcc5.patch +# Install sflphoned in libexecdir +Patch6: sflphone_sflphoned-dir.patch +# Fix incorrect conditional in SipTransport::createTlsListener +Patch7: sflphone_tls.patch +# Fix memory corruption due to keeping pointer to local variable after scope ended +Patch8: sflphone_memory-corruption.patch + +# Because of pjproject arm endianness detection issues +%if 0%{?fedora} < 22 +ExcludeArch: %{arm} +%endif + +BuildRequires: alsa-lib-devel +BuildRequires: ccrtp-devel +BuildRequires: check-devel +BuildRequires: clutter-gtk-devel +BuildRequires: cmake +BuildRequires: dbus-c++-devel +BuildRequires: desktop-file-utils +BuildRequires: expat-devel +BuildRequires: evolution-data-server-devel +BuildRequires: gettext +BuildRequires: gnome-common +BuildRequires: gnome-doc-utils +BuildRequires: gnutls-devel +BuildRequires: gsm-devel +%if 0%{?fedora} >= 22 +BuildRequires: iaxclient-libiax-devel +%endif +BuildRequires: ilbc-devel +BuildRequires: intltool +BuildRequires: kdepimlibs-devel +BuildRequires: libnotify-devel +BuildRequires: libsamplerate-devel +BuildRequires: libsexy-devel +BuildRequires: libsndfile-devel +BuildRequires: libtool +BuildRequires: libyaml-devel +BuildRequires: libzrtpcpp-devel +BuildRequires: openssl-devel +BuildRequires: pcre-devel +BuildRequires: perl-podlators +BuildRequires: pjproject-devel +BuildRequires: pulseaudio-libs-devel +BuildRequires: rarian-compat +BuildRequires: speex-devel +%if 0%{?fedora} >= 22 +BuildRequires: speexdsp-devel +%endif +BuildRequires: systemd-devel +BuildRequires: yelp-tools + + +%description +SFLphone is a robust standards-compliant enterprise software phone, +for desktop and embedded systems. It is designed to handle +several hundreds of calls a day. It supports both SIP and IAX2 +protocols. + + +%package common +Summary: Common files for SFLPhone +Requires: %{name}-daemon = %{version}-%{release} +BuildArch: noarch + +%description common +SFLphone is a robust standards-compliant enterprise software phone, +for desktop and embedded systems. It is designed to handle +several hundreds of calls a day. It supports both SIP and IAX2 +protocols. + +This package includes common files for SFLPhone. + + +%package daemon +Summary: SFLPhone daemon +Requires: %{name}-common = %{version}-%{release} +Requires: dbus%{?_isa} +%if 0%{?fedora} < 22 +Provides: bundled(libiax2) = 0.2.3 +%endif +Obsoletes: %{name}-libs < 1.4.1-9 + +%description daemon +SFLphone is a robust standards-compliant enterprise software phone, +for desktop and embedded systems. It is designed to handle +several hundreds of calls a day. It supports both SIP and IAX2 +protocols. + +This package includes the SFLPhone daemon. + + +%package gnome +Summary: SIP/IAX2 compatible enterprise-class software phone +Requires: %{name}-daemon%{?_isa} = %{version}-%{release} +Requires: hicolor-icon-theme + +%description gnome +SFLphone is a robust standards-compliant enterprise software phone, +for desktop and embedded systems. It is designed to handle +several hundreds of calls a day. It supports both SIP and IAX2 +protocols. + +This package includes the Gnome client. + + +%package gnome-plugins +Summary: Plugins (address book) for SFLphone +Requires: %{name}-gnome%{?_isa} = %{version}-%{release} + +%description gnome-plugins +SFLphone is a robust standards-compliant enterprise software phone, +for desktop and embedded systems. It is designed to handle +several hundreds of calls a day. It supports both SIP and IAX2 +protocols. + +This package includes the address book plugin. + + +%package kde +Summary: KDE interface for SFLphone +Requires: %{name}-daemon%{?_isa} = %{version}-%{release} +Requires: hicolor-icon-theme +Requires: kde-filesystem + +%description kde +SFLphone is a robust standards-compliant enterprise software phone, +for desktop and embedded systems. It is designed to handle +several hundreds of calls a day. It supports both SIP and IAX2 +protocols. + +This package includes the KDE client. + + +%package kde-devel +Summary: Development files for the KDE interface for SFLphone +Requires: %{name}-kde%{?_isa} = %{version}-%{release} + +%description kde-devel +SFLphone is a robust standards-compliant enterprise software phone, +for desktop and embedded systems. It is designed to handle +several hundreds of calls a day. It supports both SIP and IAX2 +protocols. + +This package includes the development files for the KDE client. + + +%prep +%setup -q -n %{name}-%{version} +%patch0 -p1 +%patch1 -p1 +%if 0%{?fedora} >= 22 +%patch2 -p1 +%patch3 -p1 +%endif +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 + +# Unbundle bundled libraries +%if 0%{?fedora} >= 22 +rm -rf daemon/libs +%else +rm -rf daemon/libs/pjproject-2.2.1 +%endif + +# Fix FSF addresses +find . -type f -print0 | xargs -0 sed -i 's|675 Mass Ave, Cambridge, MA 02139|51 Franklin Street, Fifth Floor, Boston, MA 02110-1301|' + + +%build +### Compile the daemon ### +pushd daemon +./autogen.sh +LDFLAGS="%{__global_ldflags} -Wl,--as-needed" %configure --disable-video +make %{?_smp_mflags} V=1 +make doc +popd + +### Compile gnome client ### +pushd gnome +./autogen.sh +LDFLAGS="%{__global_ldflags} -Wl,--as-needed" %configure --disable-video +make %{?_smp_mflags} V=1 +popd + +### Compile plugins ### +pushd plugins +./autogen.sh +LDFLAGS="%{__global_ldflags} -Wl,--as-needed" %configure +make %{?_smp_mflags} V=1 +popd + +### Compile kde client ### +mkdir kde/build +pushd kde/build +LDFLAGS="%{__global_ldflags} -Wl,--as-needed" %cmake .. +make %{?_smp_mflags} VERBOSE=1 +popd + + +%install +%make_install -C daemon +%make_install -C gnome +%make_install -C plugins +%make_install -C kde/build + +%find_lang sflphone --with-gnome +%find_lang sflphone-client-kde --with-kde -f sflphone-client-kde +%find_lang sflphone-kde --with-kde -f sflphone-kde + +# Fix error: file contains group "Protocol", but groups extending the format should start with "X-" +sed -i 's|\[Protocol\]|\[X-Protocol\]|' %{buildroot}%{_datadir}/applications/kde4/sflphone-client-kde.desktop +desktop-file-validate %{buildroot}%{_datadir}/applications/%{name}.desktop + +# Fix gzipped-svg-icon +( +cd %{buildroot}%{_datadir}/icons/hicolor/scalable/apps/ +zcat sflphone-client-kde.svgz > sflphone-client-kde.svg && rm -f sflphone-client-kde.svgz +) + + +%post gnome +/usr/bin/update-desktop-database &> /dev/null || : +/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : + +%postun gnome +/usr/bin/update-desktop-database &> /dev/null || : +if [ $1 -eq 0 ] ; then + /usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : + /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null + /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : +fi + +%posttrans gnome +/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : +/usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || : + + +%post kde +/usr/sbin/ldconfig +/bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : + +%postun kde +/usr/sbin/ldconfig +if [ $1 -eq 0 ] ; then + /bin/touch --no-create %{_datadir}/icons/hicolor &>/dev/null + /usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : +fi + +%posttrans kde +/usr/bin/gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : + + +%files common +%license COPYING +%doc daemon/AUTHORS NEWS README +%{_datadir}/%{name}/ + +%files daemon +%{_libdir}/%{name}/ +%{_datadir}/dbus-1/services/org.%{name}.SFLphone.service +%exclude %{_libdir}/%{name}/plugins/ +%{_mandir}/man1/sflphoned.1.gz* +%{_libexecdir}/sflphoned + +%files gnome -f sflphone.lang +%{_bindir}/sflphone +%{_bindir}/sflphone-client-gnome +%{_datadir}/applications/%{name}.desktop +%{_datadir}/glib-2.0/schemas/org.sflphone.SFLphone.gschema.xml +%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg +%{_mandir}/man1/sflphone.1.gz +%{_mandir}/man1/sflphone-client-gnome.1.gz + +%files gnome-plugins +%{_libdir}/%{name}/plugins/ + +%files kde -f sflphone-client-kde -f sflphone-kde +%{_bindir}/sflphone-client-kde +%{_datadir}/applications/kde4/sflphone-client-kde.desktop +%{_datadir}/config.kcfg/sflphone-client-kde.kcfg +%{_datadir}/icons/hicolor/*/apps/sflphone-client-kde* +%{_datadir}/kde4/apps/sflphone-client-kde +%{_libdir}/libksflphone.so.* +%{_libdir}/libqtsflphone.so.* +%{_mandir}/man1/*kde* + +%files kde-devel +%{_includedir}/ksflphone/ +%{_includedir}/qtsflphone/ +%{_libdir}/libksflphone.so +%{_libdir}/libqtsflphone.so + + +%changelog +* Wed Jul 22 2015 Milan Crha - 1.4.1-14 +- Rebuild for newer evolution-data-server + +* Thu Jun 25 2015 Sandro Mani - 1.4.1-13 +- Add patch to fix memory corruption issues (#1222301) + +* Fri Jun 19 2015 Fedora Release Engineering - 1.4.1-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri May 15 2015 Sandro Mani - 1.4.1-10 +- Add patch to fix incorrect conditional in SipTransport::createTlsListener + +* Wed May 06 2015 Sandro Mani - 1.4.1-9 +- Install sflphoned in /usr/libexec +- Rename sflphone-libs -> sflphone-daemon + +* Tue Apr 28 2015 Milan Crha - 1.4.1-8 +- Rebuild for newer evolution-data-server + +* Sat Apr 18 2015 Sandro Mani - 1.4.1-7 +- Pass --disable-video to Gnome client configure + +* Tue Feb 17 2015 Sandro Mani - 1.4.1-6 +- Rebuild (evolution-data-server) + +* Tue Jan 27 2015 Sandro Mani - 1.4.1-5 +- Put org.sflphone.SFLphone.service in -libs package (it contains an arch specific path) + +* Tue Jan 27 2015 Sandro Mani - 1.4.1-4 +- Remove -Wl,--as-needed, makes the application crash with -Wl,-z,relro + +* Mon Jan 26 2015 Sandro Mani - 1.4.1-3 +- Set %%{__global_ldflags} in LDFLAGS override + +* Thu Jan 22 2015 Sandro Mani - 1.4.1-2 +- Use %%license +- Add Requires: dbus to sflphone-common +- Fixed ownership of %%{_datadir}/icons/hicolor, added Requires: hicolor-icon-theme +- Fixed ownership of %%{_datadir}/applications/kde4/ +- Require sflphone-libs in sflphone-kde, sflphone-gnome, not sflphone-common +- Fix desktop file +- Add LDFLAGS="-Wl,--as-needed" +- Fix FSF addresses + +* Sun Dec 14 2014 Sandro Mani - 1.4.1-1 +- 1.4.1 + +* Sun Aug 10 2014 Sandro Mani - 1.4.0-1 +- Initial package diff --git a/sflphone_gcc5.patch b/sflphone_gcc5.patch new file mode 100644 index 0000000..1f01193 --- /dev/null +++ b/sflphone_gcc5.patch @@ -0,0 +1,23 @@ +diff -rupN sflphone-1.4.1/daemon/src/ip_utils.h sflphone-1.4.1-new/daemon/src/ip_utils.h +--- sflphone-1.4.1/daemon/src/ip_utils.h 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/ip_utils.h 2015-02-21 23:27:06.631839605 +0100 +@@ -33,6 +33,7 @@ + #define IP_UTILS_H_ + + #include ++#undef isblank // macro collides with symbol... + #include // For ost::IPV*Address + + #include +diff -rupN sflphone-1.4.1/daemon/src/sip/sipaccount.cpp sflphone-1.4.1-new/daemon/src/sip/sipaccount.cpp +--- sflphone-1.4.1/daemon/src/sip/sipaccount.cpp 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/sip/sipaccount.cpp 2015-02-21 23:42:40.570974842 +0100 +@@ -107,7 +107,7 @@ SIPAccount::SIPAccount(const std::string + , tlsPassword_() + , tlsMethod_("TLSv1") + , tlsCiphers_() +- , tlsServerName_(0, 0) ++ , tlsServerName_() + , tlsVerifyServer_(false) + , tlsVerifyClient_(true) + , tlsRequireClientCertificate_(true) diff --git a/sflphone_icondir.patch b/sflphone_icondir.patch new file mode 100644 index 0000000..4ef3829 --- /dev/null +++ b/sflphone_icondir.patch @@ -0,0 +1,9 @@ +diff -rupN sflphone-1.4.0/gnome/pixmaps/Makefile.am sflphone-1.4.0-new/gnome/pixmaps/Makefile.am +--- sflphone-1.4.0/gnome/pixmaps/Makefile.am 2014-07-18 22:45:09.000000000 +0200 ++++ sflphone-1.4.0-new/gnome/pixmaps/Makefile.am 2014-08-10 15:07:48.842721079 +0200 +@@ -1,4 +1,4 @@ +-icondir = $(datadir)/pixmaps ++icondir = $(datadir)/icons/hicolor/scalable/apps + + icon_DATA = sflphone.svg + diff --git a/sflphone_memory-corruption.patch b/sflphone_memory-corruption.patch new file mode 100644 index 0000000..467bdd7 --- /dev/null +++ b/sflphone_memory-corruption.patch @@ -0,0 +1,94 @@ +diff -rupN sflphone-1.4.1/daemon/src/sip/sipaccount.cpp sflphone-1.4.1-new/daemon/src/sip/sipaccount.cpp +--- sflphone-1.4.1/daemon/src/sip/sipaccount.cpp 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/sip/sipaccount.cpp 2015-06-07 00:15:17.460394766 +0200 +@@ -1076,10 +1076,20 @@ void SIPAccount::initTlsConfiguration() + // TLS listener is unique and should be only modified through IP2IP_PROFILE + pjsip_tls_setting_default(&tlsSetting_); + +- pj_cstr(&tlsSetting_.ca_list_file, tlsCaListFile_.c_str()); +- pj_cstr(&tlsSetting_.cert_file, tlsCertificateFile_.c_str()); +- pj_cstr(&tlsSetting_.privkey_file, tlsPrivateKeyFile_.c_str()); +- pj_cstr(&tlsSetting_.password, tlsPassword_.c_str()); ++ pj_pool_t *pool = link_.getMemoryPool(); ++ ++ pj_str_t tlsCaListFile_str = pj_str((char*) tlsCaListFile_.c_str()); ++ pj_strdup(pool, &tlsSetting_.ca_list_file, &tlsCaListFile_str); ++ ++ pj_str_t tlsCertificateFile_str = pj_str((char*) tlsCertificateFile_.c_str()); ++ pj_strdup(pool, &tlsSetting_.cert_file, &tlsCertificateFile_str); ++ ++ pj_str_t tlsPrivateKeyFile_str = pj_str((char*) tlsPrivateKeyFile_.c_str()); ++ pj_strdup(pool, &tlsSetting_.privkey_file, &tlsPrivateKeyFile_str); ++ ++ pj_str_t tlsPassword_str = pj_str((char*) tlsPassword_.c_str()); ++ pj_strdup(pool, &tlsSetting_.password, &tlsPassword_str); ++ + tlsSetting_.method = sslMethodStringToPjEnum(tlsMethod_); + tlsSetting_.ciphers_num = ciphers_.size(); + tlsSetting_.ciphers = &ciphers_.front(); +@@ -1451,6 +1461,8 @@ void SIPAccount::setCredentials(const st + + size_t i = 0; + ++ pj_pool_t *pool = link_.getMemoryPool(); ++ + for (const auto &item : credentials_) { + map::const_iterator val = item.find(CONFIG_ACCOUNT_PASSWORD); + const std::string password = val != item.end() ? val->second : ""; +@@ -1461,17 +1473,25 @@ void SIPAccount::setCredentials(const st + val = item.find(CONFIG_ACCOUNT_USERNAME); + + if (val != item.end()) +- cred_[i].username = pj_str((char*) val->second.c_str()); ++ { ++ pj_str_t username_str = pj_str((char*) val->second.c_str()); ++ pj_strdup(pool, &cred_[i].username, &username_str); ++ } + +- cred_[i].data = pj_str((char*) password.c_str()); ++ pj_str_t password_str = pj_str((char*) password.c_str()); ++ pj_strdup(pool, &cred_[i].data, &password_str); + + val = item.find(CONFIG_ACCOUNT_REALM); + + if (val != item.end()) +- cred_[i].realm = pj_str((char*) val->second.c_str()); ++ { ++ pj_str_t realm_str = pj_str((char*) val->second.c_str()); ++ pj_strdup(pool, &cred_[i].realm, &realm_str); ++ } + + cred_[i].data_type = dataType; +- cred_[i].scheme = pj_str((char*) "digest"); ++ pj_str_t scheme_str = pj_str((char*) "digest"); ++ pj_strdup(pool, &cred_[i].scheme, &scheme_str); + ++i; + } + } +diff -rupN sflphone-1.4.1/daemon/src/sip/sipvoiplink.cpp sflphone-1.4.1-new/daemon/src/sip/sipvoiplink.cpp +--- sflphone-1.4.1/daemon/src/sip/sipvoiplink.cpp 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/sip/sipvoiplink.cpp 2015-06-03 00:27:56.528068793 +0200 +@@ -508,6 +508,11 @@ pjsip_module * SIPVoIPLink::getMod() + return &mod_ua_; + } + ++pj_pool_t * SIPVoIPLink::getMemoryPool() const ++{ ++ return pool_; ++} ++ + SIPVoIPLink::SIPVoIPLink() : sipTransport(), sipAccountMap_(), + sipCallMapMutex_(), sipCallMap_() + #ifdef SFL_VIDEO +diff -rupN sflphone-1.4.1/daemon/src/sip/sipvoiplink.h sflphone-1.4.1-new/daemon/src/sip/sipvoiplink.h +--- sflphone-1.4.1/daemon/src/sip/sipvoiplink.h 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/sip/sipvoiplink.h 2015-06-03 00:27:35.439631448 +0200 +@@ -302,6 +302,8 @@ class SIPVoIPLink : public VoIPLink { + int getModId(); + pjsip_endpoint * getEndpoint(); + pjsip_module * getMod(); ++ pj_pool_t * getMemoryPool() const; ++ + private: + + NON_COPYABLE(SIPVoIPLink); diff --git a/sflphone_novideo.patch b/sflphone_novideo.patch new file mode 100644 index 0000000..8c4b467 --- /dev/null +++ b/sflphone_novideo.patch @@ -0,0 +1,11 @@ +diff -rupN sflphone-1.4.1/kde/src/CMakeLists.txt sflphone-1.4.1-new/kde/src/CMakeLists.txt +--- sflphone-1.4.1/kde/src/CMakeLists.txt 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/kde/src/CMakeLists.txt 2014-12-27 21:29:30.736654122 +0100 +@@ -7,6 +7,7 @@ if(POLICY CMP0022) + endif(POLICY CMP0022) + + # set(CMAKE_AUTOMOC ON) ++set(ENABLE_VIDEO false) + + FIND_PACKAGE ( KDE4 REQUIRED ) + diff --git a/sflphone_sflphoned-dir.patch b/sflphone_sflphoned-dir.patch new file mode 100644 index 0000000..ec266bf --- /dev/null +++ b/sflphone_sflphoned-dir.patch @@ -0,0 +1,22 @@ +diff -rupN sflphone-1.4.1/daemon/src/client/dbus/Makefile.am sflphone-1.4.1-new/daemon/src/client/dbus/Makefile.am +--- sflphone-1.4.1/daemon/src/client/dbus/Makefile.am 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/client/dbus/Makefile.am 2015-05-06 14:35:15.551521795 +0200 +@@ -70,7 +70,7 @@ service_DATA = $(service_in_files:.servi + + # Rule to make the service file with bindir expanded + $(service_DATA): $(service_in_files) Makefile +- sed -e "s|libexec|$(libdir)/sflphone|" $<> $@ ++ sed -e "s|libexec|$(libexecdir)|" $<> $@ + + EXTRA_DIST = README $(service_in_files) \ + callmanager-introspec.xml \ +diff -rupN sflphone-1.4.1/daemon/src/Makefile.am sflphone-1.4.1-new/daemon/src/Makefile.am +--- sflphone-1.4.1/daemon/src/Makefile.am 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/Makefile.am 2015-05-06 14:31:46.556525919 +0200 +@@ -1,6 +1,5 @@ + include ../globals.mak + +-libexecdir=$(libdir)/sflphone + libexec_PROGRAMS = sflphoned + + if SFL_VIDEO diff --git a/sflphone_tls.patch b/sflphone_tls.patch new file mode 100644 index 0000000..2fbe526 --- /dev/null +++ b/sflphone_tls.patch @@ -0,0 +1,12 @@ +diff -rupN sflphone-1.4.1/daemon/src/sip/siptransport.cpp sflphone-1.4.1-new/daemon/src/sip/siptransport.cpp +--- sflphone-1.4.1/daemon/src/sip/siptransport.cpp 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/sip/siptransport.cpp 2015-05-15 16:31:17.575239534 +0200 +@@ -254,7 +254,7 @@ SipTransport::createTlsListener(SIPAccou + + listeningAddress.setPort(account.getTlsListenerPort()); + +- RETURN_IF_FAIL(not listeningAddress, nullptr, "Could not determine IP address for this transport"); ++ RETURN_IF_FAIL(listeningAddress, nullptr, "Could not determine IP address for this transport"); + + DEBUG("Creating Listener on %s...", listeningAddress.toString(true).c_str()); + DEBUG("CRT file : %s", account.getTlsSetting()->ca_list_file.ptr); diff --git a/sflphone_unbundle.patch b/sflphone_unbundle.patch new file mode 100644 index 0000000..34c0ea6 --- /dev/null +++ b/sflphone_unbundle.patch @@ -0,0 +1,118 @@ +diff -rupN sflphone-1.4.1/daemon/configure.ac sflphone-1.4.1-new/daemon/configure.ac +--- sflphone-1.4.1/daemon/configure.ac 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/configure.ac 2014-12-13 23:38:33.295585251 +0100 +@@ -431,8 +431,6 @@ AS_IF([test "x$enable_debug" = "xyes"], + dnl What Makefiles to generate + + AC_CONFIG_FILES([Makefile \ +- libs/Makefile \ +- libs/iax2/Makefile \ + src/Makefile \ + src/sip/Makefile \ + src/im/Makefile \ +@@ -460,5 +458,4 @@ AC_CONFIG_FILES([Makefile \ + # Go! + AC_OUTPUT + +-AC_CONFIG_SUBDIRS([libs/pjproject-2.2.1]) +-AC_MSG_NOTICE([[Configuration done! Please make sure that pjsip library (libs/pjproject-2.2.1) has already been compiled. Run `make' to build the software.]]) ++AC_MSG_NOTICE([[Configuration done! Run `make' to build the software.]]) +diff -rupN sflphone-1.4.1/daemon/globals.mak sflphone-1.4.1-new/daemon/globals.mak +--- sflphone-1.4.1/daemon/globals.mak 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/globals.mak 2014-12-13 23:38:33.296585270 +0100 +@@ -7,18 +7,9 @@ sflplugindir=$(sfllibdir)/plugins + + ASTYLERC="$(top_srcdir)/../astylerc" + indent="/usr/bin/astyle" +-PJPROJECT_DIR=pjproject-2.2.1 + + # for pjsip +-include $(src)/libs/$(PJPROJECT_DIR)/build.mak +-PJSIP_LIBS=$(APP_LDFLAGS) $(APP_LDLIBS) +- +-SIP_CFLAGS=-I$(src)/libs/$(PJPROJECT_DIR)/pjsip/include \ +- -I$(src)/libs/$(PJPROJECT_DIR)/pjlib/include \ +- -I$(src)/libs/$(PJPROJECT_DIR)/pjlib-util/include \ +- -I$(src)/libs/$(PJPROJECT_DIR)/pjmedia/include \ +- -I$(src)/libs/$(PJPROJECT_DIR)/pjnath/include \ +- -DPJ_AUTOCONF=1 ++PJSIP_LIBS=-lpj -lpjsip -lpjlib-util -lpjmedia -lpjsip-ua -lpjnath -lpjsip-simple + + if BUILD_SPEEX + SPEEXCODEC=-DHAVE_SPEEX_CODEC +@@ -34,13 +25,9 @@ endif + + # Preprocessor flags + AM_CPPFLAGS = \ +- -I$(src)/libs \ +- -I$(src)/libs/iax2 \ +- -I$(src)/libs/$(PJPROJECT_DIR) \ + -I$(src)/src \ + -I$(src)/src/config \ + -I$(src)/test \ +- $(SIP_CFLAGS) \ + @DBUSCPP_CFLAGS@ \ + -DPREFIX=\"$(prefix)\" \ + -DPROGSHAREDIR=\"${datadir}/sflphone\" \ +diff -rupN sflphone-1.4.1/daemon/Makefile.am sflphone-1.4.1-new/daemon/Makefile.am +--- sflphone-1.4.1/daemon/Makefile.am 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/Makefile.am 2014-12-13 23:38:33.296585270 +0100 +@@ -19,7 +19,7 @@ unittest: + endif + + ACLOCAL_AMFLAGS = -I m4 +-SUBDIRS = libs src ringtones man $(TESTS_DIR) doc ++SUBDIRS = src ringtones man $(TESTS_DIR) doc + + EXTRA_DIST = m4/libtool.m4 \ + m4/lt~obsolete.m4 \ +diff -rupN sflphone-1.4.1/daemon/src/iax/iaxcall.cpp sflphone-1.4.1-new/daemon/src/iax/iaxcall.cpp +--- sflphone-1.4.1/daemon/src/iax/iaxcall.cpp 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/iax/iaxcall.cpp 2014-12-13 23:38:33.297585288 +0100 +@@ -31,8 +31,8 @@ + + #include + #include +-#include +-#include ++#include ++#include + + #include "iaxcall.h" + #include "logger.h" +diff -rupN sflphone-1.4.1/daemon/src/iax/iaxvoiplink.h sflphone-1.4.1-new/daemon/src/iax/iaxvoiplink.h +--- sflphone-1.4.1/daemon/src/iax/iaxvoiplink.h 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/iax/iaxvoiplink.h 2014-12-13 23:38:33.297585288 +0100 +@@ -45,7 +45,7 @@ + #include "noncopyable.h" + #include "audio/resampler.h" + +-#include ++#include + + #include + +diff -rupN sflphone-1.4.1/daemon/src/im/instant_messaging.h sflphone-1.4.1-new/daemon/src/im/instant_messaging.h +--- sflphone-1.4.1/daemon/src/im/instant_messaging.h 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/im/instant_messaging.h 2014-12-13 23:38:33.298585307 +0100 +@@ -48,7 +48,7 @@ + #include "config.h" + + #if HAVE_IAX +-#include ++#include + #endif + + #define EMPTY_MESSAGE pj_str((char*)"") +diff -rupN sflphone-1.4.1/daemon/src/Makefile.am sflphone-1.4.1-new/daemon/src/Makefile.am +--- sflphone-1.4.1/daemon/src/Makefile.am 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/Makefile.am 2014-12-13 23:38:33.298585307 +0100 +@@ -18,7 +18,7 @@ endif + if USE_IAX + IAX_SUBDIR=iax + IAX_CXXFLAG=-DUSE_IAX +-IAX_LIB=./iax/libiaxlink.la $(top_builddir)/libs/iax2/libiax2.la ++IAX_LIB=./iax/libiaxlink.la -liax + endif + + if USE_NETWORKMANAGER diff --git a/sflphone_zrtp-includes.patch b/sflphone_zrtp-includes.patch new file mode 100644 index 0000000..deaa306 --- /dev/null +++ b/sflphone_zrtp-includes.patch @@ -0,0 +1,22 @@ +diff -rupN sflphone-1.4.1/daemon/src/audio/audiortp/Makefile.am sflphone-1.4.1-new/daemon/src/audio/audiortp/Makefile.am +--- sflphone-1.4.1/daemon/src/audio/audiortp/Makefile.am 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/audio/audiortp/Makefile.am 2014-12-27 21:56:46.320140246 +0100 +@@ -6,6 +6,8 @@ if BUILD_ZRTP + SFL_ZRTP_SRC=audio_zrtp_session.h audio_zrtp_session.cpp zrtp_session_callback.cpp zrtp_session_callback.h + endif + ++libaudiortp_la_CXXFLAGS = -I/usr/include/libzrtpcpp ++ + libaudiortp_la_SOURCES = \ + $(SFL_ZRTP_SRC) \ + audio_rtp_session.cpp \ +diff -rupN sflphone-1.4.1/daemon/src/client/Makefile.am sflphone-1.4.1-new/daemon/src/client/Makefile.am +--- sflphone-1.4.1/daemon/src/client/Makefile.am 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/client/Makefile.am 2014-12-27 21:56:23.078730082 +0100 +@@ -37,5 +37,6 @@ libclient_la_SOURCES = callmanager.cpp + $(STUB_SRC) + + libclient_la_CXXFLAGS = -I./ \ ++ -I/usr/include/libzrtpcpp \ + -DPREFIX=\"$(prefix)\" \ + -DPROGSHAREDIR=\"${datadir}/sflphone\" diff --git a/sflphone_zrtp.patch b/sflphone_zrtp.patch new file mode 100644 index 0000000..2bf5b32 --- /dev/null +++ b/sflphone_zrtp.patch @@ -0,0 +1,12 @@ +diff -rupN sflphone-1.4.1/daemon/src/audio/audiortp/audio_rtp_factory.cpp sflphone-1.4.1-new/daemon/src/audio/audiortp/audio_rtp_factory.cpp +--- sflphone-1.4.1/daemon/src/audio/audiortp/audio_rtp_factory.cpp 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/audio/audiortp/audio_rtp_factory.cpp 2014-12-14 16:05:08.640248867 +0100 +@@ -109,7 +109,7 @@ void AudioRtpFactory::initSession() + // TODO: be careful with that. The hello hash is computed asynchronously. Maybe it's + // not even available at that point. + if (helloHashEnabled_) +- call_->getLocalSDP()->setZrtpHash(static_cast(rtpSession_.get())->getHelloHash()); ++ call_->getLocalSDP()->setZrtpHash(static_cast(rtpSession_.get())->getHelloHash(0)); + break; + } + #endif diff --git a/sources b/sources new file mode 100644 index 0000000..8cc6781 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +2092fb6ebcdfdf4f0f45da4738b1be8d sflphone-1.4.1.tar.gz