Module: sems
Branch: master
Commit: 1cd15d7b5785122ef4920f254acccc468ad7b8d1
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sems/?a=commit;h=1cd15d7b5785122ef4920f254acccc468ad7b8d1

Author: Stefan Sayer <[email protected]>
Committer: Stefan Sayer <[email protected]>
Date:   Fri Apr 20 12:46:13 2012 +0200

b/f: have subscriptions protected until SUBSCRIBE sent

this prevents corruption in the (extremely rare) case that a reply
to SUBSCRIBE or a NOTIFY is already processed while the method to
send the SUBSCRIBE is still being processed (with the little overhead
of a bit more lock contention)

---

 core/AmSipSubscriptionContainer.cpp |    4 +---
 1 files changed, 1 insertions(+), 3 deletions(-)

diff --git a/core/AmSipSubscriptionContainer.cpp 
b/core/AmSipSubscriptionContainer.cpp
index 5e1fa7d..48bf051 100644
--- a/core/AmSipSubscriptionContainer.cpp
+++ b/core/AmSipSubscriptionContainer.cpp
@@ -60,18 +60,16 @@ string 
_AmSipSubscriptionContainer::createSubscription(const AmSipSubscriptionIn
 
   subscriptions_mut.lock();
   subscriptions[handle] = new_sub;
-  subscriptions_mut.unlock();
-
   AmEventDispatcher::instance()->addEventQueue(handle, this);
   if (!new_sub->doSubscribe()) {
     DBG("subscribe failed - removing subscription\b");
     AmEventDispatcher::instance()->delEventQueue(handle);
-    subscriptions_mut.lock();
     subscriptions.erase(handle);
     subscriptions_mut.unlock();
     delete new_sub;
     return "";
   }
+  subscriptions_mut.unlock();
 
   return handle;
 }

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to