[twinkle/el6] use new ucommon/ccrtp/zrtpcpp stack

wolfy wolfy at fedoraproject.org
Thu Aug 8 08:20:43 UTC 2013


commit f400a7ac9908486b21cc0fcba8d2eaa8376a6d87
Author: Manuel Wolfshant <wolfy at fedoraproject.org>
Date:   Thu Aug 8 11:20:30 2013 +0300

    use new ucommon/ccrtp/zrtpcpp stack

 libccrtp-2.patch            |   63 -----
 twinkle-1.4.2.logtime.patch |   11 -
 twinkle-ucommon.diff        |  595 +++++++++++++++++++++++++++++++++++++++++++
 twinkle.spec                |   42 ++--
 4 files changed, 619 insertions(+), 92 deletions(-)
---
diff --git a/twinkle-ucommon.diff b/twinkle-ucommon.diff
new file mode 100644
index 0000000..9cde9ce
--- /dev/null
+++ b/twinkle-ucommon.diff
@@ -0,0 +1,595 @@
+diff --git a/configure.in b/configure.in
+index edd4953..1b52117 100644
+--- a/configure.in
++++ b/configure.in
+@@ -47,7 +47,7 @@ AC_CHECK_HEADERS([linux/errqueue.h],[],[],[
+ 
+ # Check version of the Common C++ library.
+ # This also sets the cc++2 include directory in CXXFLAGS
+-OST_CCXX2_VERSION(1.6.0,,exit)
++#OST_CCXX2_VERSION(1.6.0,,exit)
+ 
+ # Temporarily add some default directories to PKG_CONFIG_PATH such that
+ # the user will not be burdened with setting PKG_CONFIG_PATH
+@@ -66,7 +66,9 @@ fi
+ 
+ export PKG_CONFIG_PATH
+ 
+-PKG_CHECK_MODULES(CCRTP, libccrtp1 >= 1.6.0)
++PKG_CHECK_MODULES(CCRTP, libccrtp >= 2.0.0)
++PKG_CHECK_MODULES(UCOMMON, ucommon >= 5.0.0)
++CCRTP_LIBS="$CCRTP_LIBS $UCOMMON_LIBS"
+ 
+ PKG_CHECK_MODULES(XML2, libxml-2.0)
+ # AC_CHECK_HEADER(libxml/tree.h, [],
+@@ -136,7 +138,7 @@ done
+ #echo "INCLUDEPATH += `$CCGNU2_CONFIG --includes`" | sed -e s/-I//g > $QT_INCL_PRO
+ # libccrtp1(ccrtp) depend from libccgnu2(commoncpp2) and
+ # should include above flags !
+-echo "INCLUDEPATH += `$PKG_CONFIG --cflags-only-I libccrtp1`" | sed -e s/-I//g >> $QT_INCL_PRO
++echo "INCLUDEPATH += `$PKG_CONFIG --cflags-only-I libccrtp`" | sed -e s/-I//g >> $QT_INCL_PRO
+ echo "INCLUDEPATH += `$PKG_CONFIG --cflags-only-I libxml-2.0`" | sed -e s/-I//g >> $QT_INCL_PRO
+ 
+ # get libraries specified on command line
+@@ -144,6 +146,7 @@ echo $LDFLAGS | xargs echo LIBS += >> $QT_INCL_PRO
+ 
+ echo "LIBS += `$CCGNU2_CONFIG --stdlibs`" >> $QT_INCL_PRO
+ echo "LIBS += $CCRTP_LIBS" >> $QT_INCL_PRO
++echo "LIBS += $UCOMMON_LIBS" >> $QT_INCL_PRO
+ echo "LIBS += $XML2_LIBS" >> $QT_INCL_PRO
+ 
+ # Check if KDE is available
+@@ -264,7 +267,7 @@ fi
+ # Check if zrtp is available
+ if test "x$ac_cv_zrtp" = "xyes"
+ then
+-	PKG_CHECK_MODULES(ZRTP, libzrtpcpp >= 1.3.0)
++	PKG_CHECK_MODULES(ZRTP, libzrtpcpp >= 2.0.0)
+ 	AC_CHECK_LIB(zrtpcpp, main, [
+ 		AC_CHECK_HEADER(libzrtpcpp/ZrtpQueue.h, [],
+ 			[AC_MSG_ERROR([zrtp header files missing])])
+diff --git a/src/audio/audio_decoder.h b/src/audio/audio_decoder.h
+index 5fa9c55..cee198f 100644
+--- a/src/audio/audio_decoder.h
++++ b/src/audio/audio_decoder.h
+@@ -21,7 +21,6 @@
+ #ifndef _AUDIO_DECODER_H
+ #define _AUDIO_DECODER_H
+ 
+-#include <cc++/config.h>
+ #include "twinkle_config.h"
+ #include "audio_codecs.h"
+ #include "user.h"
+diff --git a/src/audio/audio_encoder.h b/src/audio/audio_encoder.h
+index d280567..e2fb874 100644
+--- a/src/audio/audio_encoder.h
++++ b/src/audio/audio_encoder.h
+@@ -21,7 +21,6 @@
+ #ifndef _AUDIO_ENCODER_H
+ #define _AUDIO_ENCODER_H
+ 
+-#include <cc++/config.h>
+ #include "twinkle_config.h"
+ #include "audio_codecs.h"
+ #include "user.h"
+diff --git a/src/audio/audio_rx.cpp b/src/audio/audio_rx.cpp
+index bb6db2b..db6d4f3 100644
+--- a/src/audio/audio_rx.cpp
++++ b/src/audio/audio_rx.cpp
+@@ -22,7 +22,6 @@
+ #include <cstdlib>
+ #include <sys/types.h>
+ #include <sys/time.h>
+-#include <cc++/config.h>
+ 
+ #include "audio_rx.h"
+ #include "log.h"
+diff --git a/src/audio/dtmf_player.h b/src/audio/dtmf_player.h
+index 5fa88db..0145289 100644
+--- a/src/audio/dtmf_player.h
++++ b/src/audio/dtmf_player.h
+@@ -21,7 +21,6 @@
+ #ifndef _DTMF_PLAYER_H
+ #define _DTMF_PLAYER_H
+ 
+-#include <cc++/config.h>
+ #include "twinkle_config.h"
+ #include "audio_encoder.h"
+ #include "freq_gen.h"
+diff --git a/src/audio/freq_gen.h b/src/audio/freq_gen.h
+index 5659739..6817baa 100644
+--- a/src/audio/freq_gen.h
++++ b/src/audio/freq_gen.h
+@@ -26,7 +26,7 @@
+ #define _FREQ_GEN_H
+ 
+ #include <vector>
+-#include <cc++/config.h>
++#include <commoncpp/config.h>
+ 
+ using namespace std;
+ 
+diff --git a/src/audio/tone_gen.h b/src/audio/tone_gen.h
+index 1323fd4..a789734 100644
+--- a/src/audio/tone_gen.h
++++ b/src/audio/tone_gen.h
+@@ -21,7 +21,6 @@
+ 
+ #include <string>
+ #include <fstream>
+-#include <cc++/config.h>
+ #include <sndfile.h>
+ #include "sys_settings.h"
+ #include "threads/mutex.h"
+diff --git a/src/call_script.h b/src/call_script.h
+index 4253bda..db19987 100644
+--- a/src/call_script.h
++++ b/src/call_script.h
+@@ -65,7 +65,6 @@
+ 
+ #include <vector>
+ #include <string>
+-#include <cc++/config.h>
+ #include "user.h"
+ #include "parser/request.h"
+ 
+diff --git a/src/log.cpp b/src/log.cpp
+index ee2ce87..136afd3 100644
+--- a/src/log.cpp
++++ b/src/log.cpp
+@@ -40,6 +40,7 @@ void *main_logview(void *arg) {
+ 		// TODO: handle situation where log file was zapped.
+ 		if (ui) ui->cb_log_updated(false);
+ 	}
++	return NULL;
+ }
+ 
+ bool t_log::move_current_to_old(void) {
+@@ -161,7 +162,7 @@ void t_log::write_header(const string &func_name, t_log_class log_class,
+ 
+ 	gettimeofday(&t, NULL);
+ 	date = t.tv_sec;
+-	localtime_r(&date, &tm);
++	::localtime_r(&date, &tm);
+ 
+ 	*log_stream << "+++ ";
+ 	*log_stream << tm.tm_mday;
+diff --git a/src/mwi/mwi_dialog.cpp b/src/mwi/mwi_dialog.cpp
+index 41ca0dd..135a866 100644
+--- a/src/mwi/mwi_dialog.cpp
++++ b/src/mwi/mwi_dialog.cpp
+@@ -32,4 +32,5 @@ t_mwi_dialog::t_mwi_dialog(t_phone_user *_phone_user) :
+ t_mwi_dialog *t_mwi_dialog::copy(void) {
+ 	// Copy is not needed.
+ 	assert(false);
++	return NULL;
+ }
+diff --git a/src/mwi/simple_msg_sum_body.h b/src/mwi/simple_msg_sum_body.h
+index 48f7584..346626f 100644
+--- a/src/mwi/simple_msg_sum_body.h
++++ b/src/mwi/simple_msg_sum_body.h
+@@ -26,7 +26,6 @@
+ 
+ #include <string>
+ #include <map>
+-#include <cc++/config.h>
+ #include "parser/sip_body.h"
+ #include "sockets/url.h"
+ 
+diff --git a/src/parser/definitions.cpp b/src/parser/definitions.cpp
+index c849553..ef2e51d 100644
+--- a/src/parser/definitions.cpp
++++ b/src/parser/definitions.cpp
+@@ -38,6 +38,7 @@ string method2str(const t_method &m, const string &unknown) {
+ 	case METHOD_UNKNOWN:	return unknown;
+ 	default:		assert(false);
+ 	}
++	return unknown;
+ }
+ 
+ t_method str2method(const string &s) {
+diff --git a/src/parser/request.cpp b/src/parser/request.cpp
+index 1e678d4..9ee3d75 100644
+--- a/src/parser/request.cpp
++++ b/src/parser/request.cpp
+@@ -23,9 +23,11 @@
+ #include "milenage.h"
+ #include "audits/memman.h"
+ #include <sstream>
+-#include <cc++/digest.h>
++#include <ucommon/secure.h>
+ 
+-using namespace ost;
++using namespace UCOMMON_NAMESPACE;
++
++// using namespace ost;
+ 
+ // AKAv1-MD5 algorithm specific helpers
+ 
+@@ -148,10 +150,10 @@ int b64_dec(const u8 * src, u8 * dst, int len)
+ // authentication with AKAv1-MD5 algorithm (RFC 3310)
+ 
+ bool t_request::authorize_akav1_md5(const t_digest_challenge &dchlg,
+-	const string &username, const string &passwd, uint8 *op, uint8 *amf,
++	const std::string &username, const std::string &passwd, uint8 *op, uint8 *amf,
+ 	unsigned long nc,
+-	const string &cnonce, const string &qop, string &resp, 
+-	string &fail_reason) const
++	const std::string &cnonce, const std::string &qop, std::string &resp, 
++	std::string &fail_reason) const
+ {
+ 	u8 nonce64[B64_DEC_SZ(dchlg.nonce.size())];
+ 	int len = b64_dec((const u8 *)dchlg.nonce.c_str(), nonce64, dchlg.nonce.size());
+@@ -183,7 +185,7 @@ bool t_request::authorize_akav1_md5(const t_digest_challenge &dchlg,
+ 	for (i=0; i < AKA_SQNLEN; i++)
+     	sqn[i] = sqnxoraka[i] ^ ak[i];
+ 	
+-	string res_str = string((char *)res, AKA_RESLEN);
++	std::string res_str = std::string((char *)res, AKA_RESLEN);
+ 	
+ 	return authorize_md5(dchlg, username, res_str, nc, cnonce, qop, 
+ 			resp, fail_reason);
+@@ -192,11 +194,11 @@ bool t_request::authorize_akav1_md5(const t_digest_challenge &dchlg,
+ // authentication with MD5 algorithm
+ 
+ bool t_request::authorize_md5(const t_digest_challenge &dchlg,
+-	const string &username, const string &passwd, unsigned long nc,
+-	const string &cnonce, const string &qop, string &resp, 
+-	string &fail_reason) const
++	const std::string &username, const std::string &passwd, unsigned long nc,
++	const std::string &cnonce, const std::string &qop, std::string &resp, 
++	std::string &fail_reason) const
+ {
+-	string A1, A2;
++	std::string A1, A2;
+ 	// RFC 2617 3.2.2.2
+ 	A1 = username + ":" + dchlg.realm + ":" + passwd;
+ 
+@@ -207,60 +209,51 @@ bool t_request::authorize_md5(const t_digest_challenge &dchlg,
+ 		A2 = method2str(method, unknown_method) + ":" + uri.encode();
+ 		A2 += ":";
+ 		if (body) {
+-			MD5Digest MD5body;
+-			MD5body << body->encode();
+-			ostringstream os;
+-			os << MD5body;
+-			A2 += os.str();
++			digest_t MD5body = "md5";
++			MD5body.puts(body->encode().c_str());
++			A2 += std::string(MD5body.c_str());
+ 		} else {
+-			MD5Digest MD5body;
+-			MD5body << "";
+-			ostringstream os;
+-			os << MD5body;
+-			A2 += os.str();
++			digest_t MD5body = "md5";
++			MD5body.puts("");
++			A2 += std::string(MD5body.c_str());
+ 		}
+ 	}
+-
+ 	// RFC 2716 3.2.2.1
+ 	// Caculate digest
+-	MD5Digest MD5A1;
+-	MD5Digest MD5A2;
+-	ostringstream HA1;
+-	ostringstream HA2;
++	digest_t MD5A1 = "md5";
++	digest_t MD5A2 = "md5";
+ 
+-	MD5A1 << A1;
+-	MD5A2 << A2;
+-	HA1 << MD5A1;
+-	HA2 << MD5A2;
++	MD5A1.puts(A1.c_str());
++	MD5A2.puts(A2.c_str());
+ 
+-	string x;
++	std::string x;
+ 
+ 	if (cmp_nocase(qop, QOP_AUTH) == 0 || cmp_nocase(qop, QOP_AUTH_INT) == 0) {
+-		x = HA1.str() + ":";
++	        x = std::string(MD5A1.c_str());
++		x += ":";
+ 		x += dchlg.nonce + ":";
+ 		x += int2str(nc, "%08x") + ":";
+ 		x += cnonce + ":";
+ 		x += qop + ":";
+-		x += HA2.str();
++		x += std::string(MD5A2.c_str());
+ 	} else {
+-		x = HA1.str() + ":";
++                x = std::string(MD5A1.c_str());
++		x += ":";
+ 		x += dchlg.nonce + ":";
+-		x += HA2.str();
++		x += std::string(MD5A2.c_str());
+ 	}
+ 
+-	MD5Digest digest;
+-	digest << x;
+-	ostringstream dresp;
+-	dresp << digest;
++	digest_t digest = "md5";
++	digest.puts(x.c_str());
+ 
+-	resp = dresp.str();
++	resp = std::string(digest.c_str());
+ 
+ 	return true;
+ }
+ 
+ bool t_request::authorize(const t_challenge &chlg, t_user *user_config,
+-	const string &username, const string &passwd, unsigned long nc,
+-	const string &cnonce, t_credentials &cr, string &fail_reason) const
++	const std::string &username, const std::string &passwd, unsigned long nc,
++	const std::string &cnonce, t_credentials &cr, std::string &fail_reason) const
+ {
+ 	// Only Digest authentication is supported
+ 	if (cmp_nocase(chlg.auth_scheme, AUTH_DIGEST) != 0) {
+@@ -271,17 +264,17 @@ bool t_request::authorize(const t_challenge &chlg, t_user *user_config,
+ 
+ 	const t_digest_challenge &dchlg = chlg.digest_challenge;
+ 	
+-	string qop = "";
++	std::string qop = "";
+ 
+ 	// Determine QOP
+ 	// If both auth and auth-int are supported by the server, then
+ 	// choose auth to avoid problems with SIP ALGs. A SIP ALG rewrites
+ 	// the body of a message, thereby breaking auth-int authentication.
+ 	if (!dchlg.qop_options.empty()) {
+-		const list<string>::const_iterator i = find(
++		const list<std::string>::const_iterator i = find(
+ 			dchlg.qop_options.begin(), dchlg.qop_options.end(),
+ 			QOP_AUTH_INT);
+-		const list<string>::const_iterator j = find(
++		const list<std::string>::const_iterator j = find(
+ 			dchlg.qop_options.begin(), dchlg.qop_options.end(),
+ 			QOP_AUTH);
+ 		if (j != dchlg.qop_options.end())
+@@ -297,7 +290,7 @@ bool t_request::authorize(const t_challenge &chlg, t_user *user_config,
+ 	}
+ 
+ 	bool ret = false;
+-	string resp;
++	std::string resp;
+ 
+ 	if (cmp_nocase(dchlg.algorithm, ALG_MD5) == 0) {
+ 		ret = authorize_md5(dchlg, username, passwd, nc, cnonce, 
+@@ -359,15 +352,15 @@ t_request::t_request(const t_method m) : t_sip_message() {
+ 	method = m;
+ }
+ 
+-void t_request::set_method(const string &s) {
++void t_request::set_method(const std::string &s) {
+ 	method = str2method(s);
+ 	if (method == METHOD_UNKNOWN) {
+ 		unknown_method = s;
+ 	}
+ }
+ 
+-string t_request::encode(bool add_content_length) {
+-	string s;
++std::string t_request::encode(bool add_content_length) {
++	std::string s;
+ 
+ 	s = method2str(method, unknown_method) + ' ' + uri.encode();
+ 	s += " SIP/";
+@@ -377,9 +370,9 @@ string t_request::encode(bool add_content_length) {
+ 	return s;
+ }
+ 
+-list<string> t_request::encode_env(void) {
+-	string s;
+-	list<string> l = t_sip_message::encode_env();
++list<std::string> t_request::encode_env(void) {
++	std::string s;
++	list<std::string> l = t_sip_message::encode_env();
+ 	
+ 	s = "SIPREQUEST_METHOD=";
+ 	s += method2str(method, unknown_method);
+@@ -431,7 +424,7 @@ void t_request::set_route(const t_url &target_uri, const list<t_route> &route_se
+         }
+ }
+ 
+-t_response *t_request::create_response(int code, string reason) const
++t_response *t_request::create_response(int code, std::string reason) const
+ {
+ 	t_response *r;
+ 
+@@ -458,7 +451,7 @@ t_response *t_request::create_response(int code, string reason) const
+ 	return r;
+ }
+ 
+-bool t_request::is_valid(bool &fatal, string &reason) const {
++bool t_request::is_valid(bool &fatal, std::string &reason) const {
+ 	if (!t_sip_message::is_valid(fatal, reason)) return false;
+ 
+ 	fatal = false;
+@@ -702,8 +695,8 @@ void t_request::set_destination(const t_ip_port &ip_port) {
+ }
+ 
+ bool t_request::www_authorize(const t_challenge &chlg, t_user *user_config, 
+-	       const string &username, const string &passwd, unsigned long nc,
+-	       const string &cnonce, t_credentials &cr, string &fail_reason)
++	       const std::string &username, const std::string &passwd, unsigned long nc,
++	       const std::string &cnonce, t_credentials &cr, std::string &fail_reason)
+ {
+ 	if (!authorize(chlg, user_config, username, passwd, nc, cnonce, cr, fail_reason)) {
+ 		return false;
+@@ -715,8 +708,8 @@ bool t_request::www_authorize(const t_challenge &chlg, t_user *user_config,
+ }
+ 
+ bool t_request::proxy_authorize(const t_challenge &chlg, t_user *user_config,
+-	       const string &username, const string &passwd, unsigned long nc,
+-	       const string &cnonce, t_credentials &cr, string &fail_reason)
++	       const std::string &username, const std::string &passwd, unsigned long nc,
++	       const std::string &cnonce, t_credentials &cr, std::string &fail_reason)
+ {
+ 	if (!authorize(chlg, user_config, username, passwd, nc, cnonce, cr, fail_reason)) {
+ 		return false;
+diff --git a/src/parser/sip_body.h b/src/parser/sip_body.h
+index 88c93a7..a63115b 100644
+--- a/src/parser/sip_body.h
++++ b/src/parser/sip_body.h
+@@ -20,7 +20,7 @@
+ #ifndef _H_SIP_BODY
+ #define _H_SIP_BODY
+ 
+-#include <cc++/config.h>
++#include <commoncpp/config.h>
+ #include <string>
+ #include <libxml/tree.h>
+ 
+diff --git a/src/presence/presence_dialog.cpp b/src/presence/presence_dialog.cpp
+index f281493..070dbc2 100644
+--- a/src/presence/presence_dialog.cpp
++++ b/src/presence/presence_dialog.cpp
+@@ -32,4 +32,5 @@ t_presence_dialog::t_presence_dialog(t_phone_user *_phone_user, t_presence_state
+ t_presence_dialog *t_presence_dialog::copy(void) {
+ 	// Copy is not needed.
+ 	assert(false);
++	return NULL;
+ }
+diff --git a/src/sdp/sdp.cpp b/src/sdp/sdp.cpp
+index 7d5de3b..3c9a93d 100644
+--- a/src/sdp/sdp.cpp
++++ b/src/sdp/sdp.cpp
+@@ -37,6 +37,7 @@ string sdp_ntwk_type2str(t_sdp_ntwk_type n) {
+ 	default:
+ 		assert(false);
+ 	}
++	return "";
+ }
+ 
+ t_sdp_ntwk_type str2sdp_ntwk_type(string s) {
+@@ -53,6 +54,7 @@ string sdp_addr_type2str(t_sdp_addr_type a) {
+ 	default:
+ 		assert(false);
+ 	}
++	return "";
+ }
+ 
+ t_sdp_addr_type str2sdp_addr_type(string s) {
+@@ -69,6 +71,7 @@ string sdp_transport2str(t_sdp_transport t) {
+ 	default:
+ 		assert(false);
+ 	}
++	return "";
+ }
+ 
+ t_sdp_transport str2sdp_transport(string s) {
+@@ -92,6 +95,7 @@ string sdp_media_type2str(t_sdp_media_type m) {
+ 	default:
+ 		assert(false);
+ 	}
++	return "";
+ }
+ 
+ string get_rtpmap(unsigned format, t_audio_codec codec) {
+@@ -153,6 +157,7 @@ string sdp_media_direction2str(t_sdp_media_direction d) {
+ 	default:
+ 		assert(false);
+ 	}
++	return "";
+ }
+ 
+ ///////////////////////////////////
+diff --git a/src/sequence_number.h b/src/sequence_number.h
+index c192012..6119506 100644
+--- a/src/sequence_number.h
++++ b/src/sequence_number.h
+@@ -24,7 +24,6 @@
+ #ifndef _SEQUENCE_NUMBER_H
+ #define _SEQUENCE_NUMBER_H
+ 
+-#include <cc++/config.h>
+ 
+ /**
+  * Sequence numbers.
+diff --git a/src/sys_settings.cpp b/src/sys_settings.cpp
+index 36e7142..9a9ee11 100644
+--- a/src/sys_settings.cpp
++++ b/src/sys_settings.cpp
+@@ -1064,7 +1064,7 @@ string t_sys_settings::about(bool html) const {
+ 	if (html) s += "<BR>";
+ 	s += "\n";
+ 
+-	s += "* GNU CommonC++ - http://www.gnu.org/software/commoncpp";
++	s += "* GNU uCommon C++ - http://www.gnutelephony.org/index.php/Category:Software";
+ 	if (html) s += "<BR><BR>";
+ 	s += "\n\n";
+ 	
+diff --git a/src/timekeeper.cpp b/src/timekeeper.cpp
+index 9a1a515..88983e1 100644
+--- a/src/timekeeper.cpp
++++ b/src/timekeeper.cpp
+@@ -782,4 +782,5 @@ void *timekeeper_sigwait(void *arg) {
+ 		if (sigwait(&sigset, &sig) == EINTR) continue;
+ 		evq_timekeeper->interrupt();
+ 	}
++	return NULL;
+ }
+diff --git a/src/user.cpp b/src/user.cpp
+index 224e291..b3de725 100644
+--- a/src/user.cpp
++++ b/src/user.cpp
+@@ -225,6 +225,7 @@ string t_user::bit_rate_type2str(t_bit_rate_type b) const {
+ 	default:
+ 		assert(false);
+ 	}
++	return "";
+ }
+ 
+ t_dtmf_transport t_user::str2dtmf_transport(const string &s) const {
+@@ -244,6 +245,7 @@ string t_user::dtmf_transport2str(t_dtmf_transport d) const {
+ 	default:
+ 		assert(false);
+ 	}
++	return "";
+ }
+ 
+ t_g726_packing t_user::str2g726_packing(const string &s) const {
+@@ -259,6 +261,7 @@ string t_user::g726_packing2str(t_g726_packing packing) const {
+ 	default:
+ 		assert(false);
+ 	}
++	return "";
+ }
+ 
+ t_sip_transport t_user::str2sip_transport(const string &s) const {
+@@ -276,6 +279,7 @@ string t_user::sip_transport2str(t_sip_transport transport) const {
+ 	default:
+ 		assert(false);
+ 	}
++	return "";
+ }
+ 
+ string t_user::expand_filename(const string &filename) {
+diff --git a/src/user.h b/src/user.h
+index 94c015a..f78652d 100644
+--- a/src/user.h
++++ b/src/user.h
+@@ -25,7 +25,6 @@
+ 
+ #include <string>
+ #include <list>
+-#include <cc++/config.h>
+ #include "protocol.h"
+ #include "sys_settings.h"
+ #include "audio/audio_codecs.h"
+diff --git a/src/util.h b/src/util.h
+index b2509df..2f246da 100644
+--- a/src/util.h
++++ b/src/util.h
+@@ -26,7 +26,7 @@
+ 
+ #include <vector>
+ #include <string>
+-#include <cc++/config.h>
++#include <commoncpp/config.h>
+ 
+ using namespace std;
+ 
diff --git a/twinkle.spec b/twinkle.spec
index a76dd3e..a332490 100644
--- a/twinkle.spec
+++ b/twinkle.spec
@@ -1,18 +1,17 @@
-Name:           twinkle
-Version:        1.4.2
-Release:        9%{?dist}
-Summary:        A SIP Soft Phone
-
-Group:          Applications/Internet
-License:        GPLv2+
-URL:            http://www.twinklephone.com
-Source0:        http://www.xs4all.nl/~mfnboer/twinkle/download/%{name}-%{version}.tar.gz
-Patch0:         twinkle-1.1-msg.patch
-Patch1:         twinkle-1.4.2-fedora-talk.patch
-Patch2:		libccrtp-2.patch
-Patch3:		twinkle-1.4.2.logtime.patch
-
-BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Name:          twinkle
+Version:       1.4.2
+Release:       10%{?dist}
+Summary:       A SIP Soft Phone
+
+Group:         Applications/Internet
+License:       GPLv2+
+URL:           http://www.twinklephone.com
+Source0:       http://www.xs4all.nl/~mfnboer/twinkle/download/%{name}-%{version}.tar.gz
+Patch0:        twinkle-1.1-msg.patch
+Patch1:        twinkle-1.4.2-fedora-talk.patch
+Patch4:        twinkle-ucommon.diff
+
+BuildRoot:     %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires: commoncpp2-devel
 BuildRequires: ccrtp-devel
@@ -24,6 +23,8 @@ BuildRequires: alsa-lib-devel
 BuildRequires: bison
 BuildRequires: libzrtpcpp-devel
 BuildRequires: readline-devel
+BuildRequires: autoconf
+
 %if 0%{?rhel} == 6 || 0%{?fedora} > 8
 BuildRequires: file-devel
 BuildRequires: kdelibs3-devel
@@ -39,13 +40,13 @@ Twinkle is a SIP based soft phone for making telephone calls over IP networks.
 
 %prep
 %setup -q
+%patch4 -p1 -b .ucommon
 %patch0 -p1 -b .msg
 %patch1 -p1 -b .ftalk
-%patch2 -p1 -b .libccrtp
-%patch3 -p1 -b .logtime
 
 %build
 export LDFLAGS=-lkio 
+%__autoconf
 %configure
 make %{?_smp_mflags}
 
@@ -85,8 +86,13 @@ rm -rf $RPM_BUILD_ROOT
 %endif
 
 %changelog
+* Sun Jul 30 2013 Manuel "lonely wolf" Wolfshant <wolfy at fedoraproject.org> 1.4.2-10
+- remove previous patches; use instead the one received from the gnutelephony 
+ project - without it there is no audio on the twinkle end;
+- thanks Werner Ditterman for writing it and David Sugar for forwarding it
+
 * Sun Jul 28 2013 Manuel "lonely wolf" Wolfshant <wolfy at fedoraproject.org> 1.4.2-9
-- patched & rebuild for newer ccrtp/libzrtpcpp stack
+- patched & rebuilt for newer ccrtp/libzrtpcpp stack
 
 * Sat Jul 3 2010 Manuel "lonely wolf" Wolfshant <wolfy at fedoraproject.org> 1.4.2-7
 - adapt for EL-6


More information about the scm-commits mailing list