osaf/services/saf/smfsv/smfd/SmfCampaign.cc |  16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)


If the the campaign return parsing error shortly after the campaign thread is 
started. The campaign thread writing to error string can interfere with smfd 
thread clearing the same error string.

diff --git a/osaf/services/saf/smfsv/smfd/SmfCampaign.cc 
b/osaf/services/saf/smfsv/smfd/SmfCampaign.cc
--- a/osaf/services/saf/smfsv/smfd/SmfCampaign.cc
+++ b/osaf/services/saf/smfsv/smfd/SmfCampaign.cc
@@ -335,6 +335,14 @@ SmfCampaign::adminOperation(const SaImmA
                                }
                        }
 
+                        if (m_adminOpBusy == true) {
+                                LOG_ER("Campaign temporary busy handling 
another admin op");
+                                return SA_AIS_ERR_BUSY;
+                        }
+                        /*Clear error string here to not interfere with the 
error string handling
+                          in the campaign thread started below.*/
+                       setError("");
+  
                        if (SmfCampaignThread::instance() == NULL) {
                                TRACE("Starting campaign thread %s", 
this->getDn().c_str());
                                if (SmfCampaignThread::start(this) != 0) {
@@ -343,13 +351,7 @@ SmfCampaign::adminOperation(const SaImmA
                                }
                        }
 
-                        if (m_adminOpBusy == true) {
-                                LOG_ER("Campaign temporary busy handling 
another admin op");
-                                return SA_AIS_ERR_BUSY;
-                        }
-
-                       SmfCampaignThread::instance()->campaign()->setError("");
-            m_adminOpBusy = true; /* reset by campaign thread when admin op 
taken care of */
+                        m_adminOpBusy = true; /* reset by campaign thread when 
admin op taken care of */
 
                        TRACE("Sending execute event to thread");
                        CAMPAIGN_EVT *evt = new CAMPAIGN_EVT();

------------------------------------------------------------------------------
Android apps run on BlackBerry 10
Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
Now with support for Jelly Bean, Bluetooth, Mapview and more.
Get your Android app in front of a whole new audience.  Start now.
http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to