Hello community,

here is the log from the commit of package opal for openSUSE:Factory checked in 
at 2012-12-19 11:15:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/opal (Old)
 and      /work/SRC/openSUSE:Factory/.opal.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "opal", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/opal/opal.changes        2012-12-10 
12:19:59.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.opal.new/opal.changes   2012-12-19 
11:15:40.000000000 +0100
@@ -1,0 +2,6 @@
+Thu Dec 13 10:15:24 UTC 2012 - [email protected]
+
+- Add opal-server-flood.patch: Fix server flood in some configurations
+  Upstream r28644 and r28650 also bgo#690144
+
+-------------------------------------------------------------------

New:
----
  opal-server-flood.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ opal.spec ++++++
--- /var/tmp/diff_new_pack.hQ29KR/_old  2012-12-19 11:15:42.000000000 +0100
+++ /var/tmp/diff_new_pack.hQ29KR/_new  2012-12-19 11:15:42.000000000 +0100
@@ -58,6 +58,8 @@
 Patch2:         opal-fix-ambiguous.patch
 # PATCH-FIX-UPSTREAM opal-use-pkgconfig-for-PTLib.patch [email protected]  
-- Use pkgconfig for PTLib, taken from upstream svn, fixes build.
 Patch4:         opal-use-pkgconfig-for-PTLib.patch 
+# PATCH-FIX-UPSTREAM opal-server-flood.patch [email protected] -- Fix server 
flood, upstream r28644 and r28650, bgo#690144
+Patch5:         opal-server-flood.patch
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
 
 %description
@@ -99,6 +101,7 @@
 %patch1 -p1
 %patch2 -p1
 %patch4 -p1
+%patch5 -p1
 # this subdir contains GPL - to avoid license issues delete it before build
 rm -rf plugins/LID/VPB
 


++++++ opal-server-flood.patch ++++++
Index: opal-3.10.9/include/sip/sippdu.h
===================================================================
--- opal-3.10.9.orig/include/sip/sippdu.h
+++ opal-3.10.9/include/sip/sippdu.h
@@ -234,6 +234,7 @@ class SIPURLList : public std::list<SIPU
       bool reversed = false
     );
     PString ToString() const;
+    friend ostream & operator<<(ostream & strm, const SIPURLList & urls);
 };
 
 
Index: opal-3.10.9/src/sip/handlers.cxx
===================================================================
--- opal-3.10.9.orig/src/sip/handlers.cxx
+++ opal-3.10.9/src/sip/handlers.cxx
@@ -716,6 +716,7 @@ void SIPRegisterHandler::OnReceivedOK(SI
   for (SIPURLList::iterator reply = replyContacts.begin(); reply != 
replyContacts.end(); ) {
     if (reply->GetHostAddress() == externalAddress) {
       externalAddress.MakeEmpty(); // Clear this so no further action taken
+      m_externalAddress.MakeEmpty();
       ++reply;
     }
     else if (std::find(requestedContacts.begin(), requestedContacts.end(), 
*reply) != requestedContacts.end())
@@ -749,27 +750,29 @@ void SIPRegisterHandler::OnReceivedOK(SI
     return;
   }
 
-  // Remember (possibly new) NAT address
-  m_externalAddress == externalAddress;
-
   if (GetExpire() == 0) {
     // If we had discovered we are behind NAT and had unregistered, 
re-REGISTER with new addresses
-    PTRACE(2, "SIP\tRe-registering with NAT address " << externalAddress);
+    PTRACE(2, "SIP\tRe-registering NAT address change (" << m_contactAddresses 
<< ") to " << externalAddress);
     for (SIPURLList::iterator contact = m_contactAddresses.begin(); contact != 
m_contactAddresses.end(); ++contact)
       contact->SetHostAddress(externalAddress);
+    m_contactAddresses.unique();
     SetExpire(m_originalExpireTime);
   }
   else {
     /* If we got here then we have done a successful register, but registrar 
indicated
        that we are behind firewall. Unregister what we just registered */
-    PTRACE(2, "SIP\tRemote indicated change of REGISTER Contact header 
required due to NAT");
     for (SIPURLList::iterator contact = replyContacts.begin(); contact != 
replyContacts.end(); ++contact)
       contact->GetFieldParameters().Remove("expires");
+    PTRACE(2, "SIP\tRemote indicated change of REGISTER Contact address(s) (" 
<< replyContacts
+           << ") required due to NAT address " << externalAddress << ", 
previous=" << m_externalAddress);
     m_contactAddresses = replyContacts;
     SetExpire(0);
   }
 
-  SendRequest(previousState);
+  // Remember (possibly new) NAT address
+  m_externalAddress == externalAddress;
+
+  SendRequest(Refreshing);
   SendStatus(SIP_PDU::Information_Trying, previousState);
 }
 
Index: opal-3.10.9/src/sip/sippdu.cxx
===================================================================
--- opal-3.10.9.orig/src/sip/sippdu.cxx
+++ opal-3.10.9/src/sip/sippdu.cxx
@@ -691,8 +691,15 @@ bool SIPURLList::FromString(const PStrin
 PString SIPURLList::ToString() const
 {
   PStringStream strm;
+  strm << *this;
+  return strm;
+}
+
+
+ostream & operator<<(ostream & strm, const SIPURLList & urls)
+{
   bool outputCommas = false;
-  for (const_iterator it = begin(); it != end(); ++it) {
+  for (SIPURLList::const_iterator it = urls.begin(); it != urls.end(); ++it) {
     if (it->IsEmpty())
       continue;
 
-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to