diff --git a/lib/modules/Sql.pmod/pgsql_util.pmod b/lib/modules/Sql.pmod/pgsql_util.pmod index 0b9ca3433a43ae86f89a4c67e495035071971342..fd1071b8501ac2279b9d9670032fb7fe4a52fd1a 100644 --- a/lib/modules/Sql.pmod/pgsql_util.pmod +++ b/lib/modules/Sql.pmod/pgsql_util.pmod @@ -93,18 +93,24 @@ private Regexp iregexp(string expr) { return Regexp(ret->read()); } +private Thread.Mutex cachemutex = Thread.Mutex(); private string cached_pass, cached_salt, cached_SaltedPassword; private int cached_iters; final string get_salted_password(string pass, string salt, int iters) { - return cached_pass == pass && cached_salt == salt && cached_iters == iters - && cached_SaltedPassword; + Thread.MutexKey lock = cachemutex->lock(); + string ret = cached_pass == pass && cached_salt == salt + && cached_iters == iters && cached_SaltedPassword; + lock = 0; + return ret; } final void set_salted_password(string pass, string salt, int iters, string SaltedPassword) { + Thread.MutexKey lock = cachemutex->lock(); cached_pass = pass; cached_salt = salt; cached_iters = iters; cached_SaltedPassword = SaltedPassword; + lock = 0; } final void closestatement(bufcon|conxsess plugbuffer,string oldprep) {