Mercurial > hg > orthanc
diff OrthancServer/ServerContext.cpp @ 3947:cf6eb4fc6841 transcoding
fix issue #179: use a shared mutex to avoid deadlock in python plugins
author | Alain Mazy <alain@mazy.be> |
---|---|
date | Tue, 19 May 2020 16:19:05 +0200 |
parents | 0b3256c3ee14 |
children | 5fe8c6d3212e |
line wrap: on
line diff
--- a/OrthancServer/ServerContext.cpp Tue May 19 13:44:56 2020 +0200 +++ b/OrthancServer/ServerContext.cpp Tue May 19 16:19:05 2020 +0200 @@ -84,7 +84,7 @@ { const ServerIndexChange& change = dynamic_cast<const ServerIndexChange&>(*obj.get()); - boost::recursive_mutex::scoped_lock lock(that->listenersMutex_); + boost::shared_lock<boost::shared_mutex> lock(that->listenersMutex_); for (ServerListeners::iterator it = that->listeners_.begin(); it != that->listeners_.end(); ++it) { @@ -331,7 +331,7 @@ if (!done_) { { - boost::recursive_mutex::scoped_lock lock(listenersMutex_); + boost::unique_lock<boost::shared_mutex> lock(listenersMutex_); listeners_.clear(); } @@ -418,7 +418,7 @@ bool accepted = true; { - boost::recursive_mutex::scoped_lock lock(listenersMutex_); + boost::shared_lock<boost::shared_mutex> lock(listenersMutex_); for (ServerListeners::iterator it = listeners_.begin(); it != listeners_.end(); ++it) { @@ -508,7 +508,7 @@ if (status == StoreStatus_Success || status == StoreStatus_AlreadyStored) { - boost::recursive_mutex::scoped_lock lock(listenersMutex_); + boost::shared_lock<boost::shared_mutex> lock(listenersMutex_); for (ServerListeners::iterator it = listeners_.begin(); it != listeners_.end(); ++it) { @@ -858,7 +858,7 @@ #if ORTHANC_ENABLE_PLUGINS == 1 void ServerContext::SetPlugins(OrthancPlugins& plugins) { - boost::recursive_mutex::scoped_lock lock(listenersMutex_); + boost::unique_lock<boost::shared_mutex> lock(listenersMutex_); plugins_ = &plugins; @@ -871,7 +871,7 @@ void ServerContext::ResetPlugins() { - boost::recursive_mutex::scoped_lock lock(listenersMutex_); + boost::unique_lock<boost::shared_mutex> lock(listenersMutex_); plugins_ = NULL;