summaryrefslogtreecommitdiff
path: root/cpp/test
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2020-05-11 14:04:45 +0200
committerBenoit Foucher <benoit@zeroc.com>2020-05-11 14:04:45 +0200
commit92a82a7cc87607a323d42c80482fc8dded0429c9 (patch)
tree598c6f7045f625fcaa0f70ea20807a9547048983 /cpp/test
parentBumped network tracing for IceDiscovery/simple test (diff)
downloadice-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.cpp16
-rw-r--r--cpp/test/Glacier2/dynamicFiltering/TestControllerI.h2
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;