Hello community, here is the log from the commit of package opal checked in at Fri Sep 29 17:56:37 CEST 2006. -------- --- opal/opal.changes 2006-09-06 13:13:19.000000000 +0200 +++ /mounts/work_src_done/STABLE/opal/opal.changes 2006-09-29 14:15:26.000000000 +0200 @@ -1,0 +2,6 @@ +Fri Sep 29 14:11:47 CEST 2006 - kkeil@suse.de + +- fix double response frames (patch from sbrabec@suse.cz) +- updates from current stable to handle reinvites better + +------------------------------------------------------------------- New: ---- opal-double-response.diff opal-ignore_payload_change.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ opal.spec ++++++ --- /var/tmp/diff_new_pack.et5Fho/_old 2006-09-29 17:55:13.000000000 +0200 +++ /var/tmp/diff_new_pack.et5Fho/_new 2006-09-29 17:55:13.000000000 +0200 @@ -17,10 +17,12 @@ License: MPL Group: System/Libraries Version: 2.3.1 -Release: 6 +Release: 9 %define _version 2_3_1 Source0: opal-v%{_version}-src.tar.bz2 Patch0: opal-v%{_version}.diff +Patch1: opal-ignore_payload_change.diff +Patch2: opal-double-response.diff BuildRoot: %{_tmppath}/%{name}-%{version}-build Autoreqprov: on Requires: pwlib @@ -45,6 +47,8 @@ %prep %setup -q -n opal_v%{_version} %patch -p1 +%patch1 -p1 +%patch2 # this GPL file is not needed - to avoid license issues delete it before build rm include/lids/vpbapi.h @@ -82,6 +86,9 @@ %{_datadir}/opal/opal_inc.mak %changelog -n opal +* Fri Sep 29 2006 - kkeil@suse.de +- fix double response frames (patch from sbrabec@suse.cz) +- updates from current stable to handle reinvites better * Wed Sep 06 2006 - kkeil@suse.de - delete optional GPL file before build to avoid license issues (#202829) ++++++ opal-double-response.diff ++++++ --- src/sip/sippdu.cxx +++ src/sip/sippdu.cxx @@ -1369,7 +1369,6 @@ "realm=\"" << authRealm << "\", " "nonce=\"" << nonce << "\", " "uri=\"" << uriText << "\", " - "response=\"" << AsHex(response) << "\", " "algorithm=" << AlgorithmNames[algorithm]; digestor.Start(); ++++++ opal-ignore_payload_change.diff ++++++ Index: opal_v2_3_1/include/rtp/rtp.h =================================================================== --- opal_v2_3_1.orig/include/rtp/rtp.h +++ opal_v2_3_1/include/rtp/rtp.h @@ -27,6 +27,9 @@ * Contributor(s): ______________________________________. * * $Log: rtp.h,v $ + * Revision 2.21.2.2 2006/08/29 18:38:27 dsandras + * Added function to better deal with reinvites. + * * Revision 2.22 2006/02/02 07:02:57 csoutheren * Added RTP payload map to transcoders and connections to allow remote SIP endpoints * to change the payload type used for outgoing RTP. @@ -768,6 +771,12 @@ class RTP_Session : public PObject BOOL ignore ///< Flag for ignore out of order packets ) { ignoreOutOfOrderPackets = ignore; } + /**Indicate if will ignore rtp payload type changes in received packets. + */ + void SetIgnorePayloadTypeChanges( + BOOL ignore ///< Flag to ignore payload type changes + ) { ignorePayloadTypeChanges = ignore; } + /**Get the time interval for sending RTCP reports in the session. */ const PTimeInterval & GetReportTimeInterval() { return reportTimeInterval; } @@ -930,6 +939,9 @@ class RTP_Session : public PObject DWORD minimumReceiveTimeAccum; DWORD packetsLostSinceLastRR; DWORD lastTransitTime; + + RTP_DataFrame::PayloadTypes lastReceivedPayloadType; + BOOL ignorePayloadTypeChanges; PMutex reportMutex; PTimer reportTimer; Index: opal_v2_3_1/src/rtp/rtp.cxx =================================================================== --- opal_v2_3_1.orig/src/rtp/rtp.cxx +++ opal_v2_3_1/src/rtp/rtp.cxx @@ -27,6 +27,12 @@ * Contributor(s): ______________________________________. * * $Log: rtp.cxx,v $ + * Revision 2.25.2.6 2006/08/29 18:38:27 dsandras + * Added function to better deal with reinvites. + * + * Revision 2.25.2.5 2006/06/05 20:13:48 dsandras + * Backport from HEAD. + * * Revision 2.32 2006/06/22 00:26:26 csoutheren * Fix formatting * @@ -777,6 +783,7 @@ RTP_Session::RTP_Session(unsigned id, RT ignoreOtherSources = TRUE; ignoreOutOfOrderPackets = TRUE; + ignorePayloadTypeChanges = TRUE; syncSourceOut = PRandom::Number(); syncSourceIn = 0; allowSyncSourceInChange = FALSE; @@ -814,6 +821,8 @@ RTP_Session::RTP_Session(unsigned id, RT minimumReceiveTimeAccum = 0xffffffff; packetsLostSinceLastRR = 0; lastTransitTime = 0; + + lastReceivedPayloadType = RTP_DataFrame::MaxPayloadType; } @@ -1043,13 +1052,22 @@ RTP_Session::SendReceiveStatus RTP_Sessi return e_ProcessPacket; } - RTP_Session::SendReceiveStatus RTP_Session::OnReceiveData(const RTP_DataFrame & frame) { // Check that the PDU is the right version if (frame.GetVersion() != RTP_DataFrame::ProtocolVersion) return e_IgnorePacket; // Non fatal error, just ignore + // Check if expected payload type + if (lastReceivedPayloadType == RTP_DataFrame::MaxPayloadType) + lastReceivedPayloadType = frame.GetPayloadType(); + + if (lastReceivedPayloadType != frame.GetPayloadType() && !ignorePayloadTypeChanges) { + + PTRACE(4, "RTP\tReceived payload type " << frame.GetPayloadType() << ", but was expecting " << lastReceivedPayloadType); + return e_IgnorePacket; + } + // Check for if a control packet rather than data packet. if (frame.GetPayloadType() > RTP_DataFrame::MaxPayloadType) return e_IgnorePacket; // Non fatal error, just ignore @@ -1527,7 +1545,7 @@ void RTP_SessionManager::ReleaseSession( mutex.Wait(); - if (sessions.Contains(sessionID)) { + while (sessions.Contains(sessionID)) { if (sessions[sessionID].DecrementReference()) { PTRACE(3, "RTP\tDeleting session " << sessionID); sessions[sessionID].SetJitterBufferSize(0, 0); Index: opal_v2_3_1/src/sip/sipcon.cxx =================================================================== --- opal_v2_3_1.orig/src/sip/sipcon.cxx +++ opal_v2_3_1/src/sip/sipcon.cxx @@ -1572,9 +1572,7 @@ void SIPConnection::OnTransactionFailed( void SIPConnection::OnReceivedPDU(SIP_PDU & pdu) { - SIPTransaction * transaction = transactions.GetAt(pdu.GetTransactionID()); - PTRACE(4, "SIP\tHandling PDU " << pdu << " (" << - (transaction != NULL ? "with" : "no") << " transaction)"); + PTRACE(4, "SIP\tHandling PDU " << pdu); switch (pdu.GetMethod()) { case SIP_PDU::Method_INVITE : @@ -1607,8 +1605,11 @@ void SIPConnection::OnReceivedPDU(SIP_PD // Shouldn't have got this! break; case SIP_PDU::NumMethods : // if no method, must be response - if (transaction != NULL) - transaction->OnReceivedResponse(pdu); + { + SIPTransaction * transaction = transactions.GetAt(pdu.GetTransactionID()); + if (transaction != NULL) + transaction->OnReceivedResponse(pdu); + } break; } } ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@suse.de