From db36771c63040933d43bc12adc4ad840472004d3 Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Tue, 31 May 2011 00:23:39 +0300 Subject: [PATCH] auth stuff is now saved only when modified --- src/auth.cpp | 22 +++++++++++++++++++++- src/auth.h | 2 ++ src/server.cpp | 3 ++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/auth.cpp b/src/auth.cpp index 49985e697..5d61243c6 100644 --- a/src/auth.cpp +++ b/src/auth.cpp @@ -77,7 +77,8 @@ u64 stringToPrivs(std::string str) } AuthManager::AuthManager(const std::string &authfilepath): - m_authfilepath(authfilepath) + m_authfilepath(authfilepath), + m_modified(false) { m_mutex.Init(); @@ -138,6 +139,8 @@ void AuthManager::load() ad.privs = privs; m_authdata[name] = ad; } + + m_modified = false; } void AuthManager::save() @@ -162,6 +165,8 @@ void AuthManager::save() AuthData ad = i.getNode()->getValue(); os<getValue(); ad.pwd = password; n->setValue(ad); + + m_modified = true; } u64 AuthManager::getPrivs(const std::string &username) @@ -240,5 +251,14 @@ void AuthManager::setPrivs(const std::string &username, u64 privs) AuthData ad = n->getValue(); ad.privs = privs; n->setValue(ad); + + m_modified = true; } +bool AuthManager::isModified() +{ + JMutexAutoLock lock(m_mutex); + return m_modified; +} + + diff --git a/src/auth.h b/src/auth.h index 472409d46..62dced2a3 100644 --- a/src/auth.h +++ b/src/auth.h @@ -89,10 +89,12 @@ public: const std::string &password); u64 getPrivs(const std::string &username); void setPrivs(const std::string &username, u64 privs); + bool isModified(); private: JMutex m_mutex; std::string m_authfilepath; core::map m_authdata; + bool m_modified; }; #endif diff --git a/src/server.cpp b/src/server.cpp index 9bcac5a64..e668db0c3 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -1728,7 +1728,8 @@ void Server::AsyncRunStep() ScopeProfiler sp(&g_profiler, "Server: saving stuff"); // Auth stuff - m_authmanager.save(); + if(m_authmanager.isModified()) + m_authmanager.save(); // Map JMutexAutoLock lock(m_env_mutex);