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-pjspi-api-change.patch b/sflphone-pjspi-api-change.patch new file mode 100644 index 0000000..106a7df --- /dev/null +++ b/sflphone-pjspi-api-change.patch @@ -0,0 +1,153 @@ +diff -rupN sflphone-1.4.1/daemon/src/sip/pres_sub_server.cpp sflphone-1.4.1-new/daemon/src/sip/pres_sub_server.cpp +--- sflphone-1.4.1/daemon/src/sip/pres_sub_server.cpp 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/daemon/src/sip/pres_sub_server.cpp 2019-04-02 18:20:14.819721209 +0200 +@@ -122,12 +122,13 @@ PresSubServer::pres_on_rx_subscribe_requ + + /* Create UAS dialog: */ + const pj_str_t contact(acc->getContactHeader()); +- status = pjsip_dlg_create_uas(pjsip_ua_instance(), rdata, &contact, &dlg); ++ status = pjsip_dlg_create_uas_and_inc_lock(pjsip_ua_instance(), rdata, &contact, &dlg); + + if (status != PJ_SUCCESS) { + char errmsg[PJ_ERR_MSG_SIZE]; + pj_strerror(status, errmsg, sizeof(errmsg)); + WARN("Unable to create UAS dialog for subscription: %s [status=%d]", errmsg, status); ++ pjsip_dlg_dec_lock(dlg); + pres->unlock(); + pjsip_endpt_respond_stateless(endpt, rdata, 400, NULL, NULL, NULL); + return PJ_TRUE; +@@ -156,6 +157,7 @@ PresSubServer::pres_on_rx_subscribe_requ + pjsip_dlg_send_response(dlg, pjsip_rdata_get_tsx(rdata), tdata); + } + ++ pjsip_dlg_dec_lock(dlg); + pres->unlock(); + return PJ_FALSE; + } +@@ -200,6 +202,7 @@ PresSubServer::pres_on_rx_subscribe_requ + if (status != PJ_SUCCESS) { + WARN("Unable to accept presence subscription %d", status); + pjsip_pres_terminate(sub, PJ_FALSE); ++ pjsip_dlg_dec_lock(dlg); + pres->unlock(); + return PJ_FALSE; + } +@@ -209,6 +212,7 @@ PresSubServer::pres_on_rx_subscribe_requ + + if (presSubServer->getExpires() == 0) { + // PJSIP_EVSUB_STATE_TERMINATED ++ pjsip_dlg_dec_lock(dlg); + pres->unlock(); + return PJ_TRUE; + } +@@ -245,10 +249,12 @@ PresSubServer::pres_on_rx_subscribe_requ + if (status != PJ_SUCCESS) { + WARN("Unable to create/send NOTIFY %d", status); + pjsip_pres_terminate(sub, PJ_FALSE); ++ pjsip_dlg_dec_lock(dlg); + pres->unlock(); + return status; + } + ++ pjsip_dlg_dec_lock(dlg); + pres->unlock(); + return PJ_TRUE; + } +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 2019-04-02 18:20:14.214722211 +0200 ++++ sflphone-1.4.1-new/daemon/src/sip/siptransport.cpp 2019-04-02 18:20:14.819721209 +0200 +@@ -447,7 +447,7 @@ SipTransport::findLocalAddressFromSTUN(p + + IpAddr mapped_addr; + pj_sock_t sipSocket = pjsip_udp_transport_get_socket(transport); +- const pjstun_setting stunOpt = {PJ_TRUE, *stunServerName, stunPort, *stunServerName, stunPort}; ++ const pjstun_setting stunOpt = {PJ_TRUE, AF_INET, *stunServerName, stunPort, *stunServerName, stunPort}; + const pj_status_t stunStatus = pjstun_get_mapped_addr2(&cp_.factory, &stunOpt, 1, &sipSocket, &static_cast(mapped_addr)); + + switch (stunStatus) { +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 2019-04-02 18:20:14.364721962 +0200 ++++ sflphone-1.4.1-new/daemon/src/sip/sipvoiplink.cpp 2019-04-02 18:20:14.819721209 +0200 +@@ -405,9 +405,10 @@ transaction_request_cb(pjsip_rx_data *rd + + pjsip_dialog *dialog = 0; + +- if (pjsip_dlg_create_uas(pjsip_ua_instance(), rdata, nullptr, &dialog) != PJ_SUCCESS) { ++ if (pjsip_dlg_create_uas_and_inc_lock(pjsip_ua_instance(), rdata, nullptr, &dialog) != PJ_SUCCESS) { + call.reset(); + try_respond_stateless(endpt_, rdata, PJSIP_SC_INTERNAL_SERVER_ERROR, nullptr, nullptr, nullptr); ++ pjsip_dlg_dec_lock(dialog); + return PJ_FALSE; + } + +@@ -415,11 +416,13 @@ transaction_request_cb(pjsip_rx_data *rd + + if (!dialog or pjsip_dlg_set_transport(dialog, &tp_sel) != PJ_SUCCESS) { + ERROR("Could not set transport for dialog"); ++ pjsip_dlg_dec_lock(dialog); + return PJ_FALSE; + } + + if (!call->inv) { + ERROR("Call invite is not initialized"); ++ pjsip_dlg_dec_lock(dialog); + return PJ_FALSE; + } + +@@ -443,6 +446,7 @@ transaction_request_cb(pjsip_rx_data *rd + try_respond_stateless(endpt_, rdata, PJSIP_SC_INTERNAL_SERVER_ERROR, NULL, NULL, NULL); + } + ++ pjsip_dlg_dec_lock(dialog); + return PJ_FALSE; + } + +@@ -464,11 +468,13 @@ transaction_request_cb(pjsip_rx_data *rd + } else { // Proceed with normal call flow + if (pjsip_inv_initial_answer(call->inv, rdata, PJSIP_SC_TRYING, NULL, NULL, &tdata) != PJ_SUCCESS) { + ERROR("Could not answer invite"); ++ pjsip_dlg_dec_lock(dialog); + return PJ_FALSE; + } + + if (pjsip_inv_send_msg(call->inv, tdata) != PJ_SUCCESS) { + ERROR("Could not send msg for invite"); ++ pjsip_dlg_dec_lock(dialog); + return PJ_FALSE; + } + +@@ -476,6 +482,7 @@ transaction_request_cb(pjsip_rx_data *rd + + if (pjsip_inv_answer(call->inv, PJSIP_SC_RINGING, NULL, NULL, &tdata) != PJ_SUCCESS) { + ERROR("Could not answer invite"); ++ pjsip_dlg_dec_lock(dialog); + return PJ_FALSE; + } + +@@ -485,6 +492,7 @@ transaction_request_cb(pjsip_rx_data *rd + + if (pjsip_inv_send_msg(call->inv, tdata) != PJ_SUCCESS) { + ERROR("Could not send msg for invite"); ++ pjsip_dlg_dec_lock(dialog); + return PJ_FALSE; + } + +@@ -494,6 +502,8 @@ transaction_request_cb(pjsip_rx_data *rd + Manager::instance().incomingCall(*call, account_id); + } + ++ pjsip_dlg_dec_lock(dialog); ++ + return PJ_FALSE; + } + +@@ -575,6 +585,9 @@ SIPVoIPLink::SIPVoIPLink() : sipTranspor + outgoing_request_forked_cb, + transaction_state_changed_cb, + sdp_request_offer_cb, ++#if PJ_VERSION_NUM > (2 << 24 | 7 << 16) ++ nullptr /* on_rx_offer2 */, ++#endif + #if PJ_VERSION_NUM > (2 << 24 | 1 << 16) + nullptr /* on_rx_reinvite */, + #endif diff --git a/sflphone.spec b/sflphone.spec new file mode 100644 index 0000000..7f161d3 --- /dev/null +++ b/sflphone.spec @@ -0,0 +1,395 @@ +Name: sflphone +Version: 1.4.1 +Release: 36%{?dist} +Summary: SIP/IAX2 compatible enterprise-class software phone + +License: GPLv3+ +URL: https://gitlab.savoirfairelinux.com/sfl-ports/sflphone +# 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 +# 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 +# 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 +# Fix GCC6 FTBFS due to "error: the compiler can assume that the address of 'other' will always evaluate to 'true'" +Patch9: sflphone_gcc6.patch +# Fix GCC7 FTBFS due to +# - ISO C++ forbids flexible array member 'm_Data' [-Werror=pedantic] +# - error: this statement may fall through [-Werror=implicit-fallthrough=] +Patch10: sflphone_gcc7.patch +# Fix FTBFS due to ERROR: The token "BOOL" is deprecated; use "BOOLEAN" instead +Patch11: sflphone_dbus.patch +# Adapt to pjsip API change +Patch12: sflphone-pjspi-api-change.patch +# Fix GCC8 FTBFS +Patch13: sflphone_gcc8.patch +# Fix GCC9 FTBFS +Patch14: sflphone_gcc9.patch + +BuildRequires: alsa-lib-devel +BuildRequires: ccrtp-devel +BuildRequires: check-devel +BuildRequires: clutter-gtk-devel +BuildRequires: cmake +BuildRequires: dbus-glib-devel +BuildRequires: dbus-c++-devel +BuildRequires: desktop-file-utils +BuildRequires: expat-devel +BuildRequires: evolution-data-server-devel +BuildRequires: gcc-c++ +BuildRequires: gettext +BuildRequires: gnome-common +BuildRequires: gnome-doc-utils +BuildRequires: gnutls-devel +BuildRequires: gsm-devel +BuildRequires: iaxclient-libiax-devel +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: make +BuildRequires: openssl-devel +BuildRequires: pcre-devel +BuildRequires: perl-podlators +BuildRequires: pjproject-devel +BuildRequires: pulseaudio-libs-devel +BuildRequires: rarian-compat +BuildRequires: speex-devel +BuildRequires: speexdsp-devel +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} +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 +%autosetup -p1 -n %{name}-%{version} + +# Unbundle bundled libraries +rm -rf daemon/libs + +# 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_build V=1 +make doc +popd + +### Compile gnome client ### +pushd gnome +./autogen.sh +LDFLAGS="%{__global_ldflags} -Wl,--as-needed" %configure --disable-video +%make_build V=1 +popd + +### Compile plugins ### +pushd plugins +./autogen.sh +LDFLAGS="%{__global_ldflags} -Wl,--as-needed" %configure +%make_build V=1 +popd + +### Compile kde client ### +mkdir kde/build +pushd kde/build +LDFLAGS="%{__global_ldflags} -Wl,--as-needed" %cmake .. +%make_build 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 +) + +%ldconfig_scriptlets kde + +%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 +* Fri Jul 26 2019 Fedora Release Engineering - 1.4.1-36 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Tue May 21 2019 Milan Crha - 1.4.1-35 +- Rebuild (evolution-data-server) + +* Wed Apr 24 2019 Sandro Mani - 1.4.1-34 +- Fix build against GCC9 + +* Sat Feb 02 2019 Fedora Release Engineering - 1.4.1-33 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sat Jul 14 2018 Fedora Release Engineering - 1.4.1-32 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Mon Feb 19 2018 Sandro Mani - 1.4.1-31 +- Add missing BR: gcc-c++, make + +* Fri Feb 09 2018 Fedora Release Engineering - 1.4.1-30 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Fri Jan 26 2018 Igor Gnatenko - 1.4.1-29 +- Fix ldconfig dependency + +* Thu Jan 18 2018 Igor Gnatenko - 1.4.1-28 +- Remove obsolete scriptlets + +* Wed Sep 06 2017 Sandro Mani - 1.4.1-27 +- Add patch to fix deprecated dbus marshalling types + +* Wed Sep 06 2017 Milan Crha - 1.4.1-26 +- Add patch to adapt to pjspi API change + +* Mon Aug 28 2017 Milan Crha - 1.4.1-25 +- Add patch to not use --g-fatal-warnings for glib-genmarshal + +* Thu Aug 03 2017 Fedora Release Engineering - 1.4.1-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 1.4.1-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Thu Feb 16 2017 Sandro Mani - 1.4.1-22 +- Drop F22 conditionals +- Add patch to fix GCC7 FTBFS + +* Sat Feb 11 2017 Fedora Release Engineering - 1.4.1-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Oct 31 2016 Sandro Mani - 1.4.1-20 +- Rebuild (evolution-data-server) +- BR: dbus-glib-devel + +* Sat Jul 23 2016 Sandro Mani - 1.4.1-19 +- Rebuild (evolution-data-server) + +* Fri Feb 05 2016 Sandro Mani - 1.4.1-18 +- Add patch to fix FTBFS + +* Thu Feb 04 2016 Fedora Release Engineering - 1.4.1-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Sat Dec 26 2015 Sandro Mani - 1.4.1-16 +- Rebuild (ucommon) + +* Thu Aug 06 2015 Sandro Mani - 1.4.1-15 +- Rebuild (ucommon) + +* 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_dbus.patch b/sflphone_dbus.patch new file mode 100644 index 0000000..0728524 --- /dev/null +++ b/sflphone_dbus.patch @@ -0,0 +1,28 @@ +diff -rupN sflphone-1.4.1/gnome/src/dbus/dbus.c sflphone-1.4.1-new/gnome/src/dbus/dbus.c +--- sflphone-1.4.1/gnome/src/dbus/dbus.c 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/gnome/src/dbus/dbus.c 2019-04-02 18:20:14.670721456 +0200 +@@ -829,7 +829,7 @@ gboolean dbus_connect(GError **error, SF + + /* Register STRING STRING BOOL Marshaller */ + dbus_g_object_register_marshaller( +- g_cclosure_user_marshal_VOID__STRING_STRING_BOOL, G_TYPE_NONE, ++ g_cclosure_user_marshal_VOID__STRING_STRING_BOOLEAN, G_TYPE_NONE, + G_TYPE_STRING, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_INVALID); + + /* Register STRING STRING INT Marshaller */ +diff -rupN sflphone-1.4.1/gnome/src/dbus/marshaller.list sflphone-1.4.1-new/gnome/src/dbus/marshaller.list +--- sflphone-1.4.1/gnome/src/dbus/marshaller.list 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/gnome/src/dbus/marshaller.list 2019-04-02 18:20:14.670721456 +0200 +@@ -5,9 +5,9 @@ VOID:STRING,INT + VOID:STRING,DOUBLE + VOID:STRING,STRING + VOID:STRING,INT,INT +-VOID:STRING,STRING,BOOL ++VOID:STRING,STRING,BOOLEAN + VOID:STRING,STRING,INT + VOID:STRING,STRING,STRING +-VOID:STRING,STRING,INT,INT,BOOL +-VOID:STRING,STRING,BOOL,STRING ++VOID:STRING,STRING,INT,INT,BOOLEAN ++VOID:STRING,STRING,BOOLEAN,STRING + VOID:STRING,BOXED diff --git a/sflphone_gcc5.patch b/sflphone_gcc5.patch new file mode 100644 index 0000000..0439547 --- /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 2019-04-02 18:20:13.765722954 +0200 +@@ -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 2019-04-02 18:20:13.766722953 +0200 +@@ -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_gcc6.patch b/sflphone_gcc6.patch new file mode 100644 index 0000000..b86bcd0 --- /dev/null +++ b/sflphone_gcc6.patch @@ -0,0 +1,75 @@ +diff -rupN sflphone-1.4.1/kde/src/lib/contact.cpp sflphone-1.4.1-new/kde/src/lib/contact.cpp +--- sflphone-1.4.1/kde/src/lib/contact.cpp 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/kde/src/lib/contact.cpp 2019-04-02 18:20:14.366721959 +0200 +@@ -453,13 +453,3 @@ bool Contact::operator==(const Contact* + { + return other && this->d == other->d; + } +- +-bool Contact::operator==(Contact& other) +-{ +- return &other && this->d == other.d; +-} +- +-bool Contact::operator==(const Contact& other) const +-{ +- return &other && this->d == other.d; +-} +diff -rupN sflphone-1.4.1/kde/src/lib/contact.h sflphone-1.4.1-new/kde/src/lib/contact.h +--- sflphone-1.4.1/kde/src/lib/contact.h 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/kde/src/lib/contact.h 2019-04-02 18:20:14.366721959 +0200 +@@ -132,8 +132,6 @@ public: + //Operator + bool operator==(Contact* other); + bool operator==(const Contact* other) const; +- bool operator==(Contact& other); +- bool operator==(const Contact& other) const; + + private Q_SLOTS: + void slotPresenceChanged(); +diff -rupN sflphone-1.4.1/kde/src/lib/phonenumber.cpp sflphone-1.4.1-new/kde/src/lib/phonenumber.cpp +--- sflphone-1.4.1/kde/src/lib/phonenumber.cpp 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/kde/src/lib/phonenumber.cpp 2019-04-02 18:20:14.366721959 +0200 +@@ -547,16 +547,6 @@ bool PhoneNumber::operator==(const Phone + return other && this->d == other->d; + } + +-bool PhoneNumber::operator==(PhoneNumber& other) +-{ +- return &other && this->d == other.d; +-} +- +-bool PhoneNumber::operator==(const PhoneNumber& other) const +-{ +- return &other && this->d == other.d; +-} +- + /************************************************************************************ + * * + * Temporary phone number * +diff -rupN sflphone-1.4.1/kde/src/lib/phonenumber.h sflphone-1.4.1-new/kde/src/lib/phonenumber.h +--- sflphone-1.4.1/kde/src/lib/phonenumber.h 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/kde/src/lib/phonenumber.h 2019-04-02 18:20:14.367721958 +0200 +@@ -125,8 +125,6 @@ public: + //Operator + bool operator==(PhoneNumber* other); + bool operator==(const PhoneNumber* other) const; +- bool operator==(PhoneNumber& other); +- bool operator==(const PhoneNumber& other) const; + + protected: + //Constructor +diff -rupN sflphone-1.4.1/kde/src/lib/video/videorenderer.cpp sflphone-1.4.1-new/kde/src/lib/video/videorenderer.cpp +--- sflphone-1.4.1/kde/src/lib/video/videorenderer.cpp 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/kde/src/lib/video/videorenderer.cpp 2019-04-02 18:20:14.367721958 +0200 +@@ -49,10 +49,7 @@ struct SHMHeader{ + /* The header will be aligned on 16-byte boundaries */ + char padding[8]; + +-#pragma GCC diagnostic push +-#pragma GCC diagnostic ignored "-pedantic" + char m_Data[]; +-#pragma GCC diagnostic pop + }; + + ///Constructor diff --git a/sflphone_gcc7.patch b/sflphone_gcc7.patch new file mode 100644 index 0000000..62624b2 --- /dev/null +++ b/sflphone_gcc7.patch @@ -0,0 +1,71 @@ +diff -rupN sflphone-1.4.1/kde/src/eventmanager.cpp sflphone-1.4.1-new/kde/src/eventmanager.cpp +--- sflphone-1.4.1/kde/src/eventmanager.cpp 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/kde/src/eventmanager.cpp 2019-04-02 18:20:14.515721712 +0200 +@@ -63,6 +63,7 @@ protected: + break; + case Qt::WindowActive: + qDebug() << "The window is now active"; ++ break; + case Qt::WindowNoState: + default: + if (e->oldState() == Qt::WindowMinimized) +@@ -464,6 +465,7 @@ void EventManager::enter() + case Call::State::DIALING: + //Change account if it changed + call->setAccount(AccountListModel::instance()->currentAccount()); ++ break; + case Call::State::INCOMING: + case Call::State::TRANSFERRED: + case Call::State::TRANSF_HOLD: +diff -rupN sflphone-1.4.1/kde/src/lib/account.cpp sflphone-1.4.1-new/kde/src/lib/account.cpp +--- sflphone-1.4.1/kde/src/lib/account.cpp 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/kde/src/lib/account.cpp 2019-04-02 18:20:14.515721712 +0200 +@@ -374,8 +374,10 @@ QString Account::password() const + case Account::Protocol::SIP: + if (credentialsModel()->rowCount()) + return credentialsModel()->data(credentialsModel()->index(0,0),CredentialModel::Role::PASSWORD).toString(); ++ break; + case Account::Protocol::IAX: + return accountDetail(Account::MapField::PASSWORD); ++ break; + }; + return ""; + } +diff -rupN sflphone-1.4.1/kde/src/lib/call.cpp sflphone-1.4.1-new/kde/src/lib/call.cpp +--- sflphone-1.4.1/kde/src/lib/call.cpp 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/kde/src/lib/call.cpp 2019-04-02 18:20:14.516721711 +0200 +@@ -191,16 +191,22 @@ QDebug LIB_EXPORT operator<<(QDebug dbg, + switch (c) { + case Call::Action::ACCEPT: + dbg.nospace() << "ACCEPT"; ++ /* FALLTHRU */ + case Call::Action::REFUSE: + dbg.nospace() << "REFUSE"; ++ /* FALLTHRU */ + case Call::Action::TRANSFER: + dbg.nospace() << "TRANSFER"; ++ /* FALLTHRU */ + case Call::Action::HOLD: + dbg.nospace() << "HOLD"; ++ /* FALLTHRU */ + case Call::Action::RECORD: + dbg.nospace() << "RECORD"; ++ /* FALLTHRU */ + case Call::Action::__COUNT: + dbg.nospace() << "COUNT"; ++ /* FALLTHRU */ + }; + dbg.space(); + dbg.nospace() << '(' << static_cast(c) << ')'; +diff -rupN sflphone-1.4.1/kde/src/lib/video/videorenderer.cpp sflphone-1.4.1-new/kde/src/lib/video/videorenderer.cpp +--- sflphone-1.4.1/kde/src/lib/video/videorenderer.cpp 2019-04-02 18:20:14.513721716 +0200 ++++ sflphone-1.4.1-new/kde/src/lib/video/videorenderer.cpp 2019-04-02 18:20:14.516721711 +0200 +@@ -49,7 +49,7 @@ struct SHMHeader{ + /* The header will be aligned on 16-byte boundaries */ + char padding[8]; + +- char m_Data[]; ++ char* m_Data; + }; + + ///Constructor diff --git a/sflphone_gcc8.patch b/sflphone_gcc8.patch new file mode 100644 index 0000000..5d19fbf --- /dev/null +++ b/sflphone_gcc8.patch @@ -0,0 +1,12 @@ +diff -rupN sflphone-1.4.1/kde/src/lib/call.h sflphone-1.4.1-new/kde/src/lib/call.h +--- sflphone-1.4.1/kde/src/lib/call.h 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/kde/src/lib/call.h 2019-04-02 18:20:14.971720957 +0200 +@@ -461,7 +461,7 @@ private: + //Automate functions + // See actionPerformedFunctionMap and stateChangedFunctionMap + // to know when it is called. +- void nothing () __attribute__ ((const)); ++ void nothing (); + void error () __attribute__ ((noreturn)); + void failure (); + void accept (); diff --git a/sflphone_gcc9.patch b/sflphone_gcc9.patch new file mode 100644 index 0000000..1d8c625 --- /dev/null +++ b/sflphone_gcc9.patch @@ -0,0 +1,47 @@ +diff -rupN sflphone-1.4.1/kde/src/lib/uri.cpp sflphone-1.4.1-new/kde/src/lib/uri.cpp +--- sflphone-1.4.1/kde/src/lib/uri.cpp 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/kde/src/lib/uri.cpp 2019-04-02 19:10:53.047714894 +0200 +@@ -32,6 +32,17 @@ URI::URI(const URI& o):QString(),m_Parse + (*static_cast(this)) = o.m_Stripped; + } + ++URI& URI::operator=(const URI& o) ++{ ++ m_Parsed = o.m_Parsed; ++ m_Hostname = o.m_Hostname; ++ m_HeaderType = o.m_HeaderType; ++ m_Userinfo = o.m_Userinfo; ++ m_Stripped = o.m_Stripped; ++ (*static_cast(this)) = o.m_Stripped; ++ return *this; ++} ++ + ///Strip out from the URI + QString URI::strip(const QString& uri, SchemeType& sheme) + { +@@ -97,4 +108,4 @@ QString URI::fullUri() const + return QString("<%1%2>") + .arg(schemeNames[static_cast(m_HeaderType == SchemeType::NONE?SchemeType::SIP:m_HeaderType)]) + .arg(*this); +-} +\ No newline at end of file ++} +diff -rupN sflphone-1.4.1/kde/src/lib/uri.h sflphone-1.4.1-new/kde/src/lib/uri.h +--- sflphone-1.4.1/kde/src/lib/uri.h 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/kde/src/lib/uri.h 2019-04-02 18:36:31.108264839 +0200 +@@ -76,6 +76,8 @@ public: + URI(const QString& other); + URI(const URI& other); + ++ URI& operator=(const URI& other); ++ + ///@enum SchemeType The very first part of the URI followed by a ':' + enum class SchemeType { + NONE , //Implicit SIP or IAX, use account type as reference +@@ -128,4 +130,4 @@ private: + }; + // Q_DECLARE_METATYPE(URI*) + +-#endif //URI_H +\ No newline at end of file ++#endif //URI_H diff --git a/sflphone_icondir.patch b/sflphone_icondir.patch new file mode 100644 index 0000000..43c5eb1 --- /dev/null +++ b/sflphone_icondir.patch @@ -0,0 +1,9 @@ +diff -rupN sflphone-1.4.1/gnome/pixmaps/Makefile.am sflphone-1.4.1-new/gnome/pixmaps/Makefile.am +--- sflphone-1.4.1/gnome/pixmaps/Makefile.am 2014-09-19 18:09:33.000000000 +0200 ++++ sflphone-1.4.1-new/gnome/pixmaps/Makefile.am 2019-04-02 18:20:12.989724240 +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..ffa5881 --- /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 2019-04-02 18:20:13.914722708 +0200 ++++ sflphone-1.4.1-new/daemon/src/sip/sipaccount.cpp 2019-04-02 18:20:14.216722207 +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 2019-04-02 18:20:14.216722207 +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 2019-04-02 18:20:14.216722207 +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..32a5d79 --- /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 2019-04-02 18:20:13.616723201 +0200 +@@ -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..54425b1 --- /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 2019-04-02 18:20:13.916722704 +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 2019-04-02 18:20:13.312723705 +0200 ++++ sflphone-1.4.1-new/daemon/src/Makefile.am 2019-04-02 18:20:13.916722704 +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..ccfe66f --- /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 2019-04-02 18:20:14.063722461 +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..e4d53cb --- /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 2019-04-02 18:20:13.148723977 +0200 +@@ -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 2019-04-02 18:20:13.148723977 +0200 +@@ -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 2019-04-02 18:20:13.148723977 +0200 +@@ -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 2019-04-02 18:20:13.148723977 +0200 +@@ -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 2019-04-02 18:20:13.148723977 +0200 +@@ -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 2019-04-02 18:20:13.149723975 +0200 +@@ -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 2019-04-02 18:20:13.149723975 +0200 +@@ -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..f7c10e6 --- /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 2019-04-02 18:20:13.466723450 +0200 +@@ -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 2019-04-02 18:20:13.466723450 +0200 +@@ -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..e8b5c60 --- /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 2019-04-02 18:20:13.314723701 +0200 +@@ -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