diff options
author | Benoit Foucher <benoit@zeroc.com> | 2020-05-11 14:04:45 +0200 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2020-05-11 14:04:45 +0200 |
commit | 92a82a7cc87607a323d42c80482fc8dded0429c9 (patch) | |
tree | 598c6f7045f625fcaa0f70ea20807a9547048983 /cpp/test | |
parent | Bumped network tracing for IceDiscovery/simple test (diff) | |
download | ice-92a82a7cc87607a323d42c80482fc8dded0429c9.tar.bz2 ice-92a82a7cc87607a323d42c80482fc8dded0429c9.tar.xz ice-92a82a7cc87607a323d42c80482fc8dded0429c9.zip |
Added synchronization for _sessions data member, fixes #843
Diffstat (limited to 'cpp/test')
-rw-r--r-- | cpp/test/Glacier2/dynamicFiltering/TestControllerI.cpp | 16 | ||||
-rw-r--r-- | cpp/test/Glacier2/dynamicFiltering/TestControllerI.h | 2 |
2 files changed, 12 insertions, 6 deletions
diff --git a/cpp/test/Glacier2/dynamicFiltering/TestControllerI.cpp b/cpp/test/Glacier2/dynamicFiltering/TestControllerI.cpp index e7490d220c3..35f1876fd1a 100644 --- a/cpp/test/Glacier2/dynamicFiltering/TestControllerI.cpp +++ b/cpp/test/Glacier2/dynamicFiltering/TestControllerI.cpp @@ -70,15 +70,17 @@ TestControllerI::step(const Glacier2::SessionPrx& currentSession, const TestToke bool found = false; SessionTuple session; - for(vector<SessionTuple>::const_iterator i = _sessions.begin(); i != _sessions.end() && !found; ++i) { - if(i->session == currentSession) + IceUtil::Mutex::Lock sync(_mutex); + for(vector<SessionTuple>::const_iterator i = _sessions.begin(); i != _sessions.end() && !found; ++i) { - session = *i; - found = true; + if(i->session == currentSession) + { + session = *i; + found = true; + } } } - assert(found); // @@ -159,13 +161,15 @@ TestControllerI::shutdown(const Ice::Current& current) void TestControllerI::addSession(const SessionTuple& s) { + IceUtil::Mutex::Lock sync(_mutex); _sessions.push_back(s); } void TestControllerI::notifyDestroy(const Glacier2::SessionControlPrx& control) { - for(vector<SessionTuple>::iterator i = _sessions.begin(); i != _sessions.end(); ++i) + IceUtil::Mutex::Lock sync(_mutex); + for (vector<SessionTuple>::iterator i = _sessions.begin(); i != _sessions.end(); ++i) { if(i->sessionControl == control) { diff --git a/cpp/test/Glacier2/dynamicFiltering/TestControllerI.h b/cpp/test/Glacier2/dynamicFiltering/TestControllerI.h index 371992ebb89..7b4e62be61e 100644 --- a/cpp/test/Glacier2/dynamicFiltering/TestControllerI.h +++ b/cpp/test/Glacier2/dynamicFiltering/TestControllerI.h @@ -86,6 +86,8 @@ public: void notifyDestroy(const Glacier2::SessionControlPrx&); private: + + IceUtil::Mutex _mutex; std::vector<SessionTuple> _sessions; std::vector<TestConfiguration> _configurations; |