From 405c1ef483ebf792957483e8f7d91a4ef65929dc Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Jul 06 2009 20:48:35 +0000 Subject: - New 3.6.4 stable release --- diff --git a/.cvsignore b/.cvsignore index 151ce0e..19d458f 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -opal-3.6.2-noilbc.tar.bz2 +opal-3.6.4-noilbc.tar.bz2 diff --git a/opal-handlers.cxx.patch b/opal-handlers.cxx.patch deleted file mode 100644 index bf3eb75..0000000 --- a/opal-handlers.cxx.patch +++ /dev/null @@ -1,144 +0,0 @@ ---- opal-3.6.2/src/sip/handlers.cxx.orig 2009-05-28 12:27:34.000000000 +0100 -+++ opal-3.6.2/src/sip/handlers.cxx 2009-05-28 14:02:21.000000000 +0100 -@@ -1465,6 +1465,16 @@ - - ////////////////////////////////////////////////////////////////// - -+/* All of the bwlow search loops run through the list with only -+ PSafeReference rather than PSafeReadOnly, even though they are -+ reading fields from the handler instances. We can get away with -+ this becuase the information being tested, e.g. AOR, is constant -+ for the life of the handler instance, once constructed. -+ -+ We need to use PSafeReference as there are some cases where -+ deadlocks can occur when locked handlers look for information -+ from other handlers. -+ */ - unsigned SIPHandlersList::GetCount(SIP_PDU::Methods meth, const PString & eventPackage) const - { - unsigned count = 0; -@@ -1493,11 +1503,12 @@ - /** - * Find the SIPHandler object with the specified callID - */ --PSafePtr SIPHandlersList::FindSIPHandlerByCallID(const PString & callID, PSafetyMode m) -+PSafePtr SIPHandlersList::FindSIPHandlerByCallID(const PString & callID, PSafetyMode mode) - { -- for (PSafePtr handler(*this, m); handler != NULL; ++handler) -- if (callID == handler->GetCallID()) -+ for (PSafePtr handler(*this, PSafeReference); handler != NULL; ++handler) { -+ if (callID == handler->GetCallID() && handler.SetSafetyMode(mode)) - return handler; -+ } - return NULL; - } - -@@ -1505,18 +1516,44 @@ - /** - * Find the SIPHandler object with the specified authRealm - */ --PSafePtr SIPHandlersList::FindSIPHandlerByAuthRealm (const PString & authRealm, const PString & userName, PSafetyMode m) -+PSafePtr SIPHandlersList::FindSIPHandlerByAuthRealm (const PString & authRealm, const PString & userName, PSafetyMode mode) - { -- PIPSocket::Address realmAddress; -+ PIPSocket::Address handlerRealmAddress; -+ PIPSocket::Address authRealmAddress(authRealm); -+ -+ // if username is specified, look for exact matches -+ if (!userName.IsEmpty()) { -+ -+ // look for a match to exact user name and realm -+ for (PSafePtr handler(*this, PSafeReference); handler != NULL; ++handler) { -+ if ( handler->GetUsername() == userName && -+ (handler->GetRealm().IsEmpty() || handler->GetRealm() == authRealm) && -+ handler.SetSafetyMode(mode)) -+ return handler; -+ } -+ -+ // look for a match to exact username and realm as hostname -+ for (PSafePtr handler(*this, PSafeReference); handler != NULL; ++handler) { -+ if (PIPSocket::GetHostAddress(handler->GetRealm(), handlerRealmAddress) && -+ handlerRealmAddress == authRealmAddress && -+ handler->GetUsername() == userName && -+ handler.SetSafetyMode(mode)) -+ return handler; -+ } -+ } - -- for (PSafePtr handler(*this, m); handler != NULL; ++handler) { -- if (authRealm == handler->GetRealm() && (userName.IsEmpty() || userName == handler->GetUsername())) -+ // look for a match to exact realm -+ for (PSafePtr handler(*this, PSafeReference); handler != NULL; ++handler) { -+ if (handler->GetRealm() == authRealm && handler.SetSafetyMode(mode)) - return handler; - } -- for (PSafePtr handler(*this, m); handler != NULL; ++handler) { -- if (PIPSocket::GetHostAddress(handler->GetRealm(), realmAddress)) -- if (realmAddress == PIPSocket::Address(authRealm) && (userName.IsEmpty() || userName == handler->GetUsername())) -- return handler; -+ -+ // look for a match to exact realm as hostname -+ for (PSafePtr handler(*this, PSafeReference); handler != NULL; ++handler) { -+ if (PIPSocket::GetHostAddress(handler->GetRealm(), handlerRealmAddress) && -+ handlerRealmAddress == authRealmAddress && -+ handler.SetSafetyMode(mode)) -+ return handler; - } - return NULL; - } -@@ -1529,24 +1566,27 @@ - * or 6001@seconix.com when registering 6001@seconix.com to - * sip.seconix.com - */ --PSafePtr SIPHandlersList::FindSIPHandlerByUrl(const PString & remoteAddress, SIP_PDU::Methods meth, PSafetyMode m) -+PSafePtr SIPHandlersList::FindSIPHandlerByUrl(const PString & remoteAddress, SIP_PDU::Methods meth, PSafetyMode mode) - { - SIPURL remoteURL = remoteAddress; -- for (PSafePtr handler(*this, m); handler != NULL; ++handler) { -- if (meth == handler->GetMethod() && remoteURL == handler->GetAddressOfRecord()) -+ for (PSafePtr handler(*this, PSafeReference); handler != NULL; ++handler) { -+ if (handler->GetMethod() == meth && -+ handler->GetAddressOfRecord() == remoteURL && -+ handler.SetSafetyMode(mode)) - return handler; - } - return NULL; - } - - --PSafePtr SIPHandlersList::FindSIPHandlerByUrl(const PString & aor, SIP_PDU::Methods meth, const PString & eventPackage, PSafetyMode m) -+PSafePtr SIPHandlersList::FindSIPHandlerByUrl(const PString & aor, SIP_PDU::Methods meth, const PString & eventPackage, PSafetyMode mode) - { - SIPURL aorURL = aor; -- for (PSafePtr handler(*this, m); handler != NULL; ++handler) { -- if (meth == handler->GetMethod() && -+ for (PSafePtr handler(*this, PSafeReference); handler != NULL; ++handler) { -+ if (handler->GetMethod() == meth && - handler->GetAddressOfRecord() == aorURL && -- handler->GetEventPackage() == eventPackage) -+ handler->GetEventPackage() == eventPackage && -+ handler.SetSafetyMode(mode)) - return handler; - } - return NULL; -@@ -1558,14 +1598,14 @@ - * For example, in the above case, the name parameter - * could be "sip.seconix.com" or "seconix.com". - */ --PSafePtr SIPHandlersList::FindSIPHandlerByDomain(const PString & name, SIP_PDU::Methods meth, PSafetyMode m) -+PSafePtr SIPHandlersList::FindSIPHandlerByDomain(const PString & name, SIP_PDU::Methods meth, PSafetyMode mode) - { -- for (PSafePtr handler(*this, m); handler != NULL; ++handler) { -- -- if ((handler->GetMethod() == meth) && -- (handler->GetState() != SIPHandler::Unsubscribed) && -+ for (PSafePtr handler(*this, PSafeReference); handler != NULL; ++handler) { -+ if ( handler->GetMethod() == meth && -+ handler->GetState() != SIPHandler::Unsubscribed && - (handler->GetAddressOfRecord().GetHostName() == name || -- handler->GetAddressOfRecord().GetHostAddress().IsEquivalent(name))) -+ handler->GetAddressOfRecord().GetHostAddress().IsEquivalent(name)) && -+ handler.SetSafetyMode(mode)) - return handler; - } - return NULL; diff --git a/opal.spec b/opal.spec index a0b4c96..3397430 100644 --- a/opal.spec +++ b/opal.spec @@ -1,7 +1,7 @@ Name: opal Summary: Open Phone Abstraction Library -Version: 3.6.2 -Release: 2%{?dist} +Version: 3.6.4 +Release: 1%{?dist} URL: http://www.opalvoip.org/ # We cannot use unmodified upstream source code because it contains the # non-free iLBC codec. @@ -10,7 +10,6 @@ URL: http://www.opalvoip.org/ #Source0: ftp://ftp.gnome.org/pub/gnome/sources/%{name}/3.6/%{name}-%{version}.tar.bz2 Source0: %{name}-%{version}-noilbc.tar.bz2 Patch0: opal-3.6.1-noilbc.patch -Patch1: opal-handlers.cxx.patch License: MPLv1.0 Group: System Environment/Libraries BuildRequires: ptlib-devel = 2.6.2 @@ -42,7 +41,6 @@ header files for opal. %prep %setup -q %patch0 -p1 -b .noilbc -%patch1 -p1 -b .handlers %build %configure @@ -77,6 +75,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/pkgconfig/opal.pc %changelog +* Mon Jul 6 2009 Peter Robinson - 3.6.4-1 +- New 3.6.4 stable release + * Thu May 28 2009 Peter Robinson - 3.6.2-2 - Add an upstream patch to fix a deadlock issue. diff --git a/sources b/sources index 2887bb0..07431ae 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -b4737077601431e03aa3f99f74136c08 opal-3.6.2-noilbc.tar.bz2 +743afaa78440601257c1a88903f55436 opal-3.6.4-noilbc.tar.bz2