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