From 5e68d38d0929c6a4df2fa6bde10a2e50974d0b0e Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Sep 18 2007 12:49:23 +0000 Subject: - upstream release of 2.2.10 - includes the 2 cisco patches Daniel --- diff --git a/.cvsignore b/.cvsignore index aaf1d40..0ff0a77 100644 --- a/.cvsignore +++ b/.cvsignore @@ -4,3 +4,4 @@ opal-2.2.5.tar.gz opal-2.2.6.tar.gz opal-2.2.7.tar.gz opal-2.2.8.tar.gz +opal-2.2.10.tar.gz diff --git a/ekiga-429076-42.patch b/ekiga-429076-42.patch deleted file mode 100644 index ac7b4ce..0000000 --- a/ekiga-429076-42.patch +++ /dev/null @@ -1,259 +0,0 @@ -diff -uNr opal-2.2.8/src/opal/transcoders.cxx opal-cvs/src/opal/transcoders.cxx ---- opal-2.2.8/src/opal/transcoders.cxx 2006-12-31 18:00:48.000000000 +0100 -+++ opal-cvs/src/opal/transcoders.cxx 2007-04-15 11:55:35.000000000 +0200 -@@ -24,6 +24,9 @@ - * Contributor(s): ______________________________________. - * - * $Log: transcoders.cxx,v $ -+ * Revision 2.17.2.4 2007/04/15 09:55:35 dsandras -+ * Do not try converting input frames with a payload size of 0. -+ * - * Revision 2.17.2.3 2006/12/31 17:00:48 dsandras - * Do not try transcoding RTP frames if they do not correspond to the formats - * for which the transcoder was created. -@@ -188,6 +191,9 @@ - { - RTP_DataFrame::PayloadTypes pt; - -+ if (input.GetPayloadSize()==0) -+ return TRUE; -+ - if (output.IsEmpty()) - output.Append(new RTP_DataFrame); - else { -diff -uNr opal-2.2.8/src/sip/sipcon.cxx opal-cvs/src/sip/sipcon.cxx ---- opal-2.2.8/src/sip/sipcon.cxx 2007-03-15 22:19:48.000000000 +0100 -+++ opal-cvs/src/sip/sipcon.cxx 2007-04-15 11:54:46.000000000 +0200 -@@ -24,6 +24,14 @@ - * Contributor(s): ______________________________________. - * - * $Log: sipcon.cxx,v $ -+ * Revision 2.120.2.27 2007/04/15 09:54:46 dsandras -+ * Some systems like CISCO Call Manager do like having a Contact field in INVITE -+ * PDUs which is different to the one being used in the original REGISTER request. -+ * Added code to use the same Contact field in both cases if we can determine that -+ * we are registered to that specific account and if there is a transport running. -+ * Fixed problem where the SIP connection was not released with a BYE PDU when -+ * the ACK is received while we are already in EstablishedPhase. -+ * - * Revision 2.120.2.26 2007/03/15 21:19:48 dsandras - * Make sure lastTransportAddress is correctly initialized even when - * uncompliant SIP PDUs are received. -@@ -931,8 +939,8 @@ - } - - // send the 200 OK response -- PString userName = endpoint.GetRegisteredPartyName(SIPURL(remotePartyAddress).GetHostName()).GetUserName(); -- SIPURL contact = endpoint.GetLocalURL(*transport, userName); -+ PString userName = endpoint.GetRegisteredPartyName(SIPURL(localPartyAddress).GetHostName()).GetUserName(); -+ SIPURL contact = endpoint.GetContactURL(*transport, userName, SIPURL(localPartyAddress).GetHostName()); - SIP_PDU response(*originalInvite, SIP_PDU::Successful_OK, (const char *) contact.AsQuotedString()); - response.SetSDP(sdpOut); - SendPDU(response, originalInvite->GetViaAddress(endpoint)); -@@ -1818,8 +1826,8 @@ - - - // send the 200 OK response -- PString userName = endpoint.GetRegisteredPartyName(SIPURL(remotePartyAddress).GetHostName()).GetUserName(); -- SIPURL contact = endpoint.GetLocalURL(*transport, userName); -+ PString userName = endpoint.GetRegisteredPartyName(SIPURL(localPartyAddress).GetHostName()).GetUserName(); -+ SIPURL contact = endpoint.GetContactURL(*transport, userName, SIPURL(localPartyAddress).GetHostName()); - SIP_PDU response(*originalInvite, SIP_PDU::Successful_OK, (const char *) contact.AsQuotedString ()); - response.SetSDP(sdpOut); - SendPDU(response, originalInvite->GetViaAddress(endpoint)); -@@ -1909,17 +1917,17 @@ - StartMediaStreams(); - } - -- // start all of the media threads for the connection -+ releaseMethod = ReleaseWithBYE; - if (phase != ConnectedPhase) - return; - -- releaseMethod = ReleaseWithBYE; - SetPhase(EstablishedPhase); - OnEstablished(); - - // HACK HACK HACK: this is a work-around for a deadlock that can occur - // during incoming calls. What is needed is a proper resequencing that - // avoids this problem -+ // start all of the media threads for the connection - StartMediaStreams(); - } - -diff -uNr opal-2.2.8/src/sip/sipep.cxx opal-cvs/src/sip/sipep.cxx ---- opal-2.2.8/src/sip/sipep.cxx 2007-03-27 23:52:45.000000000 +0200 -+++ opal-cvs/src/sip/sipep.cxx 2007-04-17 23:50:19.000000000 +0200 -@@ -24,6 +24,19 @@ - * Contributor(s): ______________________________________. - * - * $Log: sipep.cxx,v $ -+ * Revision 2.97.2.38 2007/04/17 21:50:19 dsandras -+ * Fixed Via field in previous commit. -+ * Make sure the correct port is being used. -+ * Improved FindSIPInfoByDomain. -+ * -+ * Revision 2.97.2.37 2007/04/15 09:54:46 dsandras -+ * Some systems like CISCO Call Manager do like having a Contact field in INVITE -+ * PDUs which is different to the one being used in the original REGISTER request. -+ * Added code to use the same Contact field in both cases if we can determine that -+ * we are registered to that specific account and if there is a transport running. -+ * Fixed problem where the SIP connection was not released with a BYE PDU when -+ * the ACK is received while we are already in EstablishedPhase. -+ * - * Revision 2.97.2.36 2007/03/27 21:52:45 dsandras - * Added more PTRACE statements - * -@@ -669,7 +682,7 @@ - registrationAddress, - registrationID, - unregister ? 0 : expire, -- retryTimeoutMin, retryTimeoutMax); -+ retryTimeoutMin, retryTimeoutMax); - } - - void SIPRegisterInfo::OnSuccess () -@@ -2023,6 +2036,17 @@ - } - - -+SIPURL SIPEndPoint::GetContactURL(const OpalTransport &transport, const PString & userName, const PString & host) -+{ -+ PSafePtr info = activeSIPInfo.FindSIPInfoByDomain(host, SIP_PDU::Method_REGISTER, PSafeReadOnly); -+ -+ if (info == NULL || info->GetTransport() == NULL) -+ return GetLocalURL(transport, userName); -+ else -+ return GetLocalURL(*info->GetTransport(), userName); -+} -+ -+ - SIPURL SIPEndPoint::GetLocalURL(const OpalTransport &transport, const PString & userName) - { - PIPSocket::Address ip(PIPSocket::GetDefaultIpAny()); -@@ -2040,10 +2064,7 @@ - PIPSocket::Address remoteIP; - if (transport.GetRemoteAddress().GetIpAddress(remoteIP)) { - GetManager().TranslateIPAddress(localIP, remoteIP); -- PIPSocket::Address _localIP(localIP); -- PSTUNClient * stun = manager.GetSTUN(remoteIP); -- if (stun != NULL || localIP != _localIP) -- contactPort = localPort; -+ contactPort = localPort; - contactAddress = OpalTransportAddress(localIP, contactPort, "udp"); - } - } -diff -uNr opal-2.2.8/src/sip/sippdu.cxx opal-cvs/src/sip/sippdu.cxx ---- opal-2.2.8/src/sip/sippdu.cxx 2007-03-27 22:18:13.000000000 +0200 -+++ opal-cvs/src/sip/sippdu.cxx 2007-04-17 23:50:19.000000000 +0200 -@@ -24,6 +24,19 @@ - * Contributor(s): ______________________________________. - * - * $Log: sippdu.cxx,v $ -+ * Revision 2.83.2.15 2007/04/17 21:50:19 dsandras -+ * Fixed Via field in previous commit. -+ * Make sure the correct port is being used. -+ * Improved FindSIPInfoByDomain. -+ * -+ * Revision 2.83.2.14 2007/04/15 09:54:47 dsandras -+ * Some systems like CISCO Call Manager do like having a Contact field in INVITE -+ * PDUs which is different to the one being used in the original REGISTER request. -+ * Added code to use the same Contact field in both cases if we can determine that -+ * we are registered to that specific account and if there is a transport running. -+ * Fixed problem where the SIP connection was not released with a BYE PDU when -+ * the ACK is received while we are already in EstablishedPhase. -+ * - * Revision 2.83.2.13 2007/03/27 20:18:13 dsandras - * Added missing mutex. - * -@@ -1637,7 +1650,8 @@ - { - SIPEndPoint & endpoint = connection.GetEndPoint(); - PString localPartyName = connection.GetLocalPartyName(); -- SIPURL contact = endpoint.GetLocalURL(transport, localPartyName); -+ SIPURL contact = endpoint.GetContactURL(transport, localPartyName, SIPURL(connection.GetRemotePartyAddress()).GetHostName()); -+ SIPURL via = endpoint.GetLocalURL(transport, localPartyName); - mime.SetContact(contact); - - SIPURL targetAddress = connection.GetTargetAddress(); -@@ -1649,7 +1663,7 @@ - connection.GetLocalPartyAddress(), - connection.GetToken(), - connection.GetNextCSeq(), -- contact.GetHostAddress()); -+ via.GetHostAddress()); - - SetRoute(connection); // Possibly adjust the URI and the route - } -diff -uNr opal-2.2.8/include/sip/sipep.h opal-cvs/include/sip/sipep.h ---- opal-2.2.8/include/sip/sipep.h 2007-03-27 22:23:22.000000000 +0200 -+++ opal-cvs/include/sip/sipep.h 2007-04-17 23:50:19.000000000 +0200 -@@ -25,6 +25,19 @@ - * Contributor(s): ______________________________________. - * - * $Log: sipep.h,v $ -+ * Revision 2.46.2.17 2007/04/17 21:50:19 dsandras -+ * Fixed Via field in previous commit. -+ * Make sure the correct port is being used. -+ * Improved FindSIPInfoByDomain. -+ * -+ * Revision 2.46.2.16 2007/04/15 09:54:47 dsandras -+ * Some systems like CISCO Call Manager do like having a Contact field in INVITE -+ * PDUs which is different to the one being used in the original REGISTER request. -+ * Added code to use the same Contact field in both cases if we can determine that -+ * we are registered to that specific account and if there is a transport running. -+ * Fixed problem where the SIP connection was not released with a BYE PDU when -+ * the ACK is received while we are already in EstablishedPhase. -+ * - * Revision 2.46.2.15 2007/03/27 20:23:22 dsandras - * Added Garbage collector. Make sure the transport is closed before - * deleting it. Better handling of SIPInfo objects. -@@ -872,6 +885,20 @@ - virtual SIPURL GetDefaultRegisteredPartyName(); - - -+ /**Return the contact URL for the given host and user name -+ * based on the listening port of the registration to that host. -+ * -+ * That URL can be used as as contact field in outgoing -+ * requests. -+ * -+ * The URL is translated if required. -+ * -+ * If no active registration is used, return the result of GetLocalURL -+ * on the given transport. -+ */ -+ SIPURL GetContactURL(const OpalTransport &transport, const PString & userName, const PString & host); -+ -+ - /**Return the local URL for the given transport and user name. - * That URL can be used as via address, and as contact field in outgoing - * requests. -@@ -1008,10 +1035,25 @@ - */ - PSafePtr FindSIPInfoByDomain (const PString & name, SIP_PDU::Methods meth, PSafetyMode m) - { -- OpalTransportAddress addr = name; - for (PSafePtr info(*this, m); info != NULL; ++info) { -- if (info->IsRegistered() && (name == info->GetRegistrationAddress().GetHostName() || (info->GetTransport() && addr.GetHostName() == info->GetTransport()->GetRemoteAddress().GetHostName())) && meth == info->GetMethod()) -+ -+ if (name == info->GetRegistrationAddress().GetHostName()) - return info; -+ -+ OpalTransportAddress addr; -+ PIPSocket::Address infoIP; -+ PIPSocket::Address nameIP; -+ WORD port = 5060; -+ addr = name; -+ -+ if (addr.GetIpAndPort (nameIP, port)) { -+ addr = info->GetRegistrationAddress().GetHostName(); -+ if (addr.GetIpAndPort (infoIP, port)) { -+ if (infoIP == nameIP) { -+ return info; -+ } -+ } -+ } - } - return NULL; - } diff --git a/ekiga-429076-50.patch b/ekiga-429076-50.patch deleted file mode 100644 index 1646026..0000000 --- a/ekiga-429076-50.patch +++ /dev/null @@ -1,126 +0,0 @@ -Index: src/sip/sipcon.cxx -=================================================================== -RCS file: /cvsroot/openh323/opal/src/sip/sipcon.cxx,v -retrieving revision 2.120.2.27 -diff -u -r2.120.2.27 sipcon.cxx ---- src/sip/sipcon.cxx 15 Apr 2007 09:54:46 -0000 2.120.2.27 -+++ src/sip/sipcon.cxx 18 Apr 2007 22:26:23 -0000 -@@ -1015,6 +1015,11 @@ - PTRACE(2, "SIP\tCould not find matching media type for session " << rtpSessionId); - return FALSE; - } -+ -+ if (incomingMedia->GetMediaFormats(rtpSessionId).GetSize() == 0) { -+ PTRACE(1, "SIP\tCould not find media formats in SDP media description for session " << rtpSessionId); -+ return FALSE; -+ } - - // Create the list of Opal format names for the remote end. - // We will answer with the media format that will be opened. -@@ -1043,7 +1048,18 @@ - OpalTransportAddress mediaAddress = incomingMedia->GetTransportAddress(); - rtpSession = OnUseRTPSession(rtpSessionId, mediaAddress, localAddress); - if (rtpSession == NULL && !ownerCall.IsMediaBypassPossible(*this, rtpSessionId)) { -- Release(EndedByTransportFail); -+ if (rtpSessionId == OpalMediaFormat::DefaultAudioSessionID) -+ Release(EndedByTransportFail); -+ return FALSE; -+ } -+ -+ // set the remote address -+ PIPSocket::Address ip; -+ WORD port; -+ if (!mediaAddress.GetIpAndPort(ip, port) || (rtpSession && !rtpSession->SetRemoteSocketInfo(ip, port, TRUE))) { -+ PTRACE(1, "SIP\tCannot set remote ports on RTP session"); -+ if (rtpSessionId == OpalMediaFormat::DefaultAudioSessionID) -+ Release(EndedByTransportFail); - return FALSE; - } - -@@ -1062,17 +1078,6 @@ - localMedia->AddSDPMediaFormat(new SDPMediaFormat("0-15", rfc2833Handler->GetPayloadType())); - } - -- // set the remote address after the stream is opened -- PIPSocket::Address ip; -- WORD port; -- mediaAddress.GetIpAndPort(ip, port); -- if (rtpSession && !rtpSession->SetRemoteSocketInfo(ip, port, TRUE)) { -- PTRACE(1, "SIP\tCannot set remote ports on RTP session"); -- Release(EndedByTransportFail); -- delete localMedia; -- return FALSE; -- } -- - // No stream opened for this session, use the default SDP - if (reverseStreamsFailed) { - SDPSessionDescription *sdp = (SDPSessionDescription *) &sdpOut; -@@ -2261,12 +2266,28 @@ - return FALSE; - } - -+ if (mediaDescription->GetMediaFormats(rtpSessionId).GetSize() == 0) { -+ PTRACE(1, "SIP\tCould not find media formats in SDP media description for session " << rtpSessionId); -+ return FALSE; -+ } -+ - // Create the RTPSession - OpalTransportAddress localAddress; - OpalTransportAddress address = mediaDescription->GetTransportAddress(); - rtpSession = OnUseRTPSession(rtpSessionId, address, localAddress); - if (rtpSession == NULL && !ownerCall.IsMediaBypassPossible(*this, rtpSessionId)) { -- Release(EndedByTransportFail); -+ if (rtpSessionId == OpalMediaFormat::DefaultAudioSessionID) -+ Release(EndedByTransportFail); -+ return FALSE; -+ } -+ -+ // set the remote address -+ PIPSocket::Address ip; -+ WORD port; -+ if (!address.GetIpAndPort(ip, port) || (rtpSession && !rtpSession->SetRemoteSocketInfo(ip, port, TRUE))) { -+ PTRACE(1, "SIP\tCannot set remote ports on RTP session"); -+ if (rtpSessionId == OpalMediaFormat::DefaultAudioSessionID) -+ Release(EndedByTransportFail); - return FALSE; - } - -@@ -2281,16 +2302,6 @@ - // Open the streams and the reverse streams - OnOpenSourceMediaStreams(remoteFormatList, rtpSessionId, NULL); - -- // set the remote address after the stream is opened -- PIPSocket::Address ip; -- WORD port; -- address.GetIpAndPort(ip, port); -- if (rtpSession && !rtpSession->SetRemoteSocketInfo(ip, port, TRUE)) { -- PTRACE(1, "SIP\tCannot set remote ports on RTP session"); -- Release(EndedByTransportFail); -- return FALSE; -- } -- - return TRUE; - } - -Index: src/sip/sipep.cxx -=================================================================== -RCS file: /cvsroot/openh323/opal/src/sip/sipep.cxx,v -retrieving revision 2.97.2.38 -diff -u -r2.97.2.38 sipep.cxx ---- src/sip/sipep.cxx 17 Apr 2007 21:50:19 -0000 2.97.2.38 -+++ src/sip/sipep.cxx 18 Apr 2007 22:26:24 -0000 -@@ -619,14 +619,6 @@ - - registrarAddress = transportAddress; - -- // Only delete if we are refreshing -- if (registrarTransport != NULL && HasExpired()) { -- PTRACE(4,"SIPInfo\tWill delete transport " << *registrarTransport << " (expired)"); -- registrarTransport->CloseWait (); -- delete registrarTransport; -- registrarTransport = NULL; -- } -- - if (registrarTransport == NULL) { - registrarTransport = ep.CreateTransport(registrarAddress); - } diff --git a/opal.spec b/opal.spec index 7c9129a..c866255 100644 --- a/opal.spec +++ b/opal.spec @@ -1,22 +1,18 @@ Summary: Open Phone Abstraction Library Name: opal -Version: 2.2.8 -Release: 5%{?dist} +Version: 2.2.10 +Release: 1%{?dist} URL: http://www.openh323.org/ Source0: http://www.ekiga.org/%{name}-%{version}.tar.gz License: MPL Group: System Environment/Libraries -Requires: pwlib >= 1.10.7 -BuildRequires: pwlib-devel >= 1.10.7 +Requires: pwlib >= 1.10.10 +BuildRequires: pwlib-devel >= 1.10.10 BuildRequires: openldap-devel BuildRequires: SDL-devel BuildRoot: %{_tmppath}/%{name}-root Obsoletes: openh323 -# workaround problems with CISCO server -Patch0: ekiga-429076-42.patch -Patch1: ekiga-429076-50.patch - %description Open Phone Abstraction Library, implementation of the ITU H.323 teleconferencing protocol, and successor of the openh323 library. @@ -25,15 +21,13 @@ teleconferencing protocol, and successor of the openh323 library. Summary: Development package for opal Group: Development/Libraries Requires: opal = %{PACKAGE_VERSION} -Requires: pwlib-devel >= 1.10.7 +Requires: pwlib-devel >= 1.10.10 Obsoletes: openh323-devel %description devel Static libraries and header files for development with opal. %prep %setup -q -%patch0 -p1 -%patch1 -p0 %build %configure --enable-localspeex @@ -65,6 +59,10 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/*.so %changelog +* Tue Sep 18 2007 Daniel Veillard - 2.2.10-1 +- upstream release of 2.2.10 +- includes the 2 cisco patches + * Wed Aug 22 2007 Daniel Veillard - 2.2.8-5.fc8 - added 2 patches needed when using a CISCO server diff --git a/sources b/sources index d2fb563..57d6e40 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -700b0c3a7606afc0dc6c9d3c12fcb23b opal-2.2.8.tar.gz +ef8b858c666afc375830f6cd216a0601 opal-2.2.10.tar.gz