From 5c588f89e79e02cba392abe3d00688772321f88b Mon Sep 17 00:00:00 2001 From: Loïc Blot Date: Wed, 15 Apr 2020 08:01:11 +0200 Subject: Verify database connection on interval (#9665) --- src/database/database-postgresql.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/database/database-postgresql.h') diff --git a/src/database/database-postgresql.h b/src/database/database-postgresql.h index db0b505c9..5a8b89a51 100644 --- a/src/database/database-postgresql.h +++ b/src/database/database-postgresql.h @@ -32,12 +32,13 @@ public: Database_PostgreSQL(const std::string &connect_string); ~Database_PostgreSQL(); + virtual void pingDatabase(); + void beginSave(); void endSave(); bool initialized() const; - protected: // Conversion helpers inline int pg_to_int(PGresult *res, int row, int col) @@ -82,7 +83,6 @@ protected: } void createTableIfNotExists(const std::string &table_name, const std::string &definition); - void verifyDatabase(); // Database initialization void connectToDatabase(); @@ -113,6 +113,8 @@ public: MapDatabasePostgreSQL(const std::string &connect_string); virtual ~MapDatabasePostgreSQL() = default; + virtual void pingDatabase() { Database_PostgreSQL::pingDatabase(); } + bool saveBlock(const v3s16 &pos, const std::string &data); void loadBlock(const v3s16 &pos, std::string *block); bool deleteBlock(const v3s16 &pos); @@ -132,6 +134,8 @@ public: PlayerDatabasePostgreSQL(const std::string &connect_string); virtual ~PlayerDatabasePostgreSQL() = default; + virtual void pingDatabase() { Database_PostgreSQL::pingDatabase(); } + void savePlayer(RemotePlayer *player); bool loadPlayer(RemotePlayer *player, PlayerSAO *sao); bool removePlayer(const std::string &name); -- cgit v1.2.3 From e564bf8eadb5aee7a90b2184b03316917c580aed Mon Sep 17 00:00:00 2001 From: Loïc Blot Date: Mon, 27 Apr 2020 06:54:48 +0200 Subject: Add PostgreSQL authentication backend (#9756) * Add PostgreSQL authentication backend --- src/database/database-postgresql.cpp | 175 +++++++++++++++++++++++++++++++++++ src/database/database-postgresql.h | 24 +++++ src/serverenvironment.cpp | 8 ++ 3 files changed, 207 insertions(+) (limited to 'src/database/database-postgresql.h') diff --git a/src/database/database-postgresql.cpp b/src/database/database-postgresql.cpp index c1b81586d..ca750b466 100644 --- a/src/database/database-postgresql.cpp +++ b/src/database/database-postgresql.cpp @@ -166,6 +166,11 @@ void Database_PostgreSQL::endSave() checkResults(PQexec(m_conn, "COMMIT;")); } +void Database_PostgreSQL::rollback() +{ + checkResults(PQexec(m_conn, "ROLLBACK;")); +} + MapDatabasePostgreSQL::MapDatabasePostgreSQL(const std::string &connect_string): Database_PostgreSQL(connect_string), MapDatabase() @@ -637,4 +642,174 @@ void PlayerDatabasePostgreSQL::listPlayers(std::vector &res) PQclear(results); } +AuthDatabasePostgreSQL::AuthDatabasePostgreSQL(const std::string &connect_string) : + Database_PostgreSQL(connect_string), AuthDatabase() +{ + connectToDatabase(); +} + +void AuthDatabasePostgreSQL::createDatabase() +{ + createTableIfNotExists("auth", + "CREATE TABLE auth (" + "id SERIAL," + "name TEXT UNIQUE," + "password TEXT," + "last_login INT NOT NULL DEFAULT 0," + "PRIMARY KEY (id)" + ");"); + + createTableIfNotExists("user_privileges", + "CREATE TABLE user_privileges (" + "id INT," + "privilege TEXT," + "PRIMARY KEY (id, privilege)," + "CONSTRAINT fk_id FOREIGN KEY (id) REFERENCES auth (id) ON DELETE CASCADE" + ");"); +} + +void AuthDatabasePostgreSQL::initStatements() +{ + prepareStatement("auth_read", "SELECT id, name, password, last_login FROM auth WHERE name = $1"); + prepareStatement("auth_write", "UPDATE auth SET name = $1, password = $2, last_login = $3 WHERE id = $4"); + prepareStatement("auth_create", "INSERT INTO auth (name, password, last_login) VALUES ($1, $2, $3) RETURNING id"); + prepareStatement("auth_delete", "DELETE FROM auth WHERE name = $1"); + + prepareStatement("auth_list_names", "SELECT name FROM auth ORDER BY name DESC"); + + prepareStatement("auth_read_privs", "SELECT privilege FROM user_privileges WHERE id = $1"); + prepareStatement("auth_write_privs", "INSERT INTO user_privileges (id, privilege) VALUES ($1, $2)"); + prepareStatement("auth_delete_privs", "DELETE FROM user_privileges WHERE id = $1"); +} + +bool AuthDatabasePostgreSQL::getAuth(const std::string &name, AuthEntry &res) +{ + pingDatabase(); + + const char *values[] = { name.c_str() }; + PGresult *result = execPrepared("auth_read", 1, values, false, false); + int numrows = PQntuples(result); + if (numrows == 0) { + PQclear(result); + return false; + } + + res.id = pg_to_uint(result, 0, 0); + res.name = std::string(PQgetvalue(result, 0, 1), PQgetlength(result, 0, 1)); + res.password = std::string(PQgetvalue(result, 0, 2), PQgetlength(result, 0, 2)); + res.last_login = pg_to_int(result, 0, 3); + + PQclear(result); + + std::string playerIdStr = itos(res.id); + const char *privsValues[] = { playerIdStr.c_str() }; + PGresult *results = execPrepared("auth_read_privs", 1, privsValues, false); + + numrows = PQntuples(results); + for (int row = 0; row < numrows; row++) + res.privileges.emplace_back(PQgetvalue(results, row, 0)); + + PQclear(results); + + return true; +} + +bool AuthDatabasePostgreSQL::saveAuth(const AuthEntry &authEntry) +{ + pingDatabase(); + + beginSave(); + + std::string lastLoginStr = itos(authEntry.last_login); + std::string idStr = itos(authEntry.id); + const char *values[] = { + authEntry.name.c_str() , + authEntry.password.c_str(), + lastLoginStr.c_str(), + idStr.c_str(), + }; + execPrepared("auth_write", 4, values); + + writePrivileges(authEntry); + + endSave(); + return true; +} + +bool AuthDatabasePostgreSQL::createAuth(AuthEntry &authEntry) +{ + pingDatabase(); + + std::string lastLoginStr = itos(authEntry.last_login); + const char *values[] = { + authEntry.name.c_str() , + authEntry.password.c_str(), + lastLoginStr.c_str() + }; + + beginSave(); + + PGresult *result = execPrepared("auth_create", 3, values, false, false); + + int numrows = PQntuples(result); + if (numrows == 0) { + errorstream << "Strange behaviour on auth creation, no ID returned." << std::endl; + PQclear(result); + rollback(); + return false; + } + + authEntry.id = pg_to_uint(result, 0, 0); + PQclear(result); + + writePrivileges(authEntry); + + endSave(); + return true; +} + +bool AuthDatabasePostgreSQL::deleteAuth(const std::string &name) +{ + pingDatabase(); + + const char *values[] = { name.c_str() }; + execPrepared("auth_delete", 1, values); + + // privileges deleted by foreign key on delete cascade + return true; +} + +void AuthDatabasePostgreSQL::listNames(std::vector &res) +{ + pingDatabase(); + + PGresult *results = execPrepared("auth_list_names", 0, + NULL, NULL, NULL, false, false); + + int numrows = PQntuples(results); + + for (int row = 0; row < numrows; ++row) + res.emplace_back(PQgetvalue(results, row, 0)); + + PQclear(results); +} + +void AuthDatabasePostgreSQL::reload() +{ + // noop for PgSQL +} + +void AuthDatabasePostgreSQL::writePrivileges(const AuthEntry &authEntry) +{ + std::string authIdStr = itos(authEntry.id); + const char *values[] = { authIdStr.c_str() }; + execPrepared("auth_delete_privs", 1, values); + + for (const std::string &privilege : authEntry.privileges) { + const char *values[] = { authIdStr.c_str(), privilege.c_str() }; + execPrepared("auth_write_privs", 2, values); + } +} + + #endif // USE_POSTGRESQL diff --git a/src/database/database-postgresql.h b/src/database/database-postgresql.h index 5a8b89a51..340f0a7b8 100644 --- a/src/database/database-postgresql.h +++ b/src/database/database-postgresql.h @@ -36,6 +36,7 @@ public: void beginSave(); void endSave(); + void rollback(); bool initialized() const; @@ -148,3 +149,26 @@ protected: private: bool playerDataExists(const std::string &playername); }; + +class AuthDatabasePostgreSQL : private Database_PostgreSQL, public AuthDatabase +{ +public: + AuthDatabasePostgreSQL(const std::string &connect_string); + virtual ~AuthDatabasePostgreSQL() = default; + + virtual void pingDatabase() { Database_PostgreSQL::pingDatabase(); } + + virtual bool getAuth(const std::string &name, AuthEntry &res); + virtual bool saveAuth(const AuthEntry &authEntry); + virtual bool createAuth(AuthEntry &authEntry); + virtual bool deleteAuth(const std::string &name); + virtual void listNames(std::vector &res); + virtual void reload(); + +protected: + virtual void createDatabase(); + virtual void initStatements(); + +private: + virtual void writePrivileges(const AuthEntry &authEntry); +}; diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index 08d796118..27432e973 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -2187,6 +2187,14 @@ AuthDatabase *ServerEnvironment::openAuthDatabase( if (name == "sqlite3") return new AuthDatabaseSQLite3(savedir); +#if USE_POSTGRESQL + if (name == "postgresql") { + std::string connect_string; + conf.getNoEx("pgsql_auth_connection", connect_string); + return new AuthDatabasePostgreSQL(connect_string); + } +#endif + if (name == "files") return new AuthDatabaseFiles(savedir); -- cgit v1.2.3 From 6e4d8de10442eecf71ba36ad015872a135a53338 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Tue, 7 Jul 2020 17:50:52 +0100 Subject: Revert "Verify database connection on interval (#9665)" Fixes #10113 This reverts commit 5c588f89e79e02cba392abe3d00688772321f88b. --- src/database/database-postgresql.cpp | 40 +++++++++++++++--------------------- src/database/database-postgresql.h | 8 ++------ src/database/database-sqlite3.cpp | 26 +++++++++++------------ src/database/database-sqlite3.h | 12 +++-------- src/database/database.h | 4 ---- src/map.cpp | 5 ----- src/map.h | 1 - src/serverenvironment.cpp | 5 ----- src/serverenvironment.h | 1 - 9 files changed, 35 insertions(+), 67 deletions(-) (limited to 'src/database/database-postgresql.h') diff --git a/src/database/database-postgresql.cpp b/src/database/database-postgresql.cpp index ca750b466..6acfb5937 100644 --- a/src/database/database-postgresql.cpp +++ b/src/database/database-postgresql.cpp @@ -90,19 +90,13 @@ void Database_PostgreSQL::connectToDatabase() initStatements(); } -void Database_PostgreSQL::pingDatabase() -{ - // Verify DB connection with ping - try { - ping(); - } catch (const DatabaseException &e) { - // If ping failed, show the error and try reconnect - PQreset(m_conn); - - errorstream << e.what() << std::endl - << "Reconnecting to database " << m_connect_string << std::endl; - connectToDatabase(); - } +void Database_PostgreSQL::verifyDatabase() +{ + if (PQstatus(m_conn) == CONNECTION_OK) + return; + + PQreset(m_conn); + ping(); } void Database_PostgreSQL::ping() @@ -157,7 +151,7 @@ void Database_PostgreSQL::createTableIfNotExists(const std::string &table_name, void Database_PostgreSQL::beginSave() { - pingDatabase(); + verifyDatabase(); checkResults(PQexec(m_conn, "BEGIN;")); } @@ -238,7 +232,7 @@ bool MapDatabasePostgreSQL::saveBlock(const v3s16 &pos, const std::string &data) return false; } - pingDatabase(); + verifyDatabase(); s32 x, y, z; x = htonl(pos.X); @@ -262,7 +256,7 @@ bool MapDatabasePostgreSQL::saveBlock(const v3s16 &pos, const std::string &data) void MapDatabasePostgreSQL::loadBlock(const v3s16 &pos, std::string *block) { - pingDatabase(); + verifyDatabase(); s32 x, y, z; x = htonl(pos.X); @@ -286,7 +280,7 @@ void MapDatabasePostgreSQL::loadBlock(const v3s16 &pos, std::string *block) bool MapDatabasePostgreSQL::deleteBlock(const v3s16 &pos) { - pingDatabase(); + verifyDatabase(); s32 x, y, z; x = htonl(pos.X); @@ -304,7 +298,7 @@ bool MapDatabasePostgreSQL::deleteBlock(const v3s16 &pos) void MapDatabasePostgreSQL::listAllLoadableBlocks(std::vector &dst) { - pingDatabase(); + verifyDatabase(); PGresult *results = execPrepared("list_all_loadable_blocks", 0, NULL, NULL, NULL, false, false); @@ -446,7 +440,7 @@ void PlayerDatabasePostgreSQL::initStatements() bool PlayerDatabasePostgreSQL::playerDataExists(const std::string &playername) { - pingDatabase(); + verifyDatabase(); const char *values[] = { playername.c_str() }; PGresult *results = execPrepared("load_player", 1, values, false); @@ -462,7 +456,7 @@ void PlayerDatabasePostgreSQL::savePlayer(RemotePlayer *player) if (!sao) return; - pingDatabase(); + verifyDatabase(); v3f pos = sao->getBasePosition(); std::string pitch = ftos(sao->getLookPitch()); @@ -546,7 +540,7 @@ void PlayerDatabasePostgreSQL::savePlayer(RemotePlayer *player) bool PlayerDatabasePostgreSQL::loadPlayer(RemotePlayer *player, PlayerSAO *sao) { sanity_check(sao); - pingDatabase(); + verifyDatabase(); const char *values[] = { player->getName() }; PGresult *results = execPrepared("load_player", 1, values, false, false); @@ -621,7 +615,7 @@ bool PlayerDatabasePostgreSQL::removePlayer(const std::string &name) if (!playerDataExists(name)) return false; - pingDatabase(); + verifyDatabase(); const char *values[] = { name.c_str() }; execPrepared("remove_player", 1, values); @@ -631,7 +625,7 @@ bool PlayerDatabasePostgreSQL::removePlayer(const std::string &name) void PlayerDatabasePostgreSQL::listPlayers(std::vector &res) { - pingDatabase(); + verifyDatabase(); PGresult *results = execPrepared("load_player_list", 0, NULL, false); diff --git a/src/database/database-postgresql.h b/src/database/database-postgresql.h index 340f0a7b8..409e62fe0 100644 --- a/src/database/database-postgresql.h +++ b/src/database/database-postgresql.h @@ -32,14 +32,13 @@ public: Database_PostgreSQL(const std::string &connect_string); ~Database_PostgreSQL(); - virtual void pingDatabase(); - void beginSave(); void endSave(); void rollback(); bool initialized() const; + protected: // Conversion helpers inline int pg_to_int(PGresult *res, int row, int col) @@ -84,6 +83,7 @@ protected: } void createTableIfNotExists(const std::string &table_name, const std::string &definition); + void verifyDatabase(); // Database initialization void connectToDatabase(); @@ -114,8 +114,6 @@ public: MapDatabasePostgreSQL(const std::string &connect_string); virtual ~MapDatabasePostgreSQL() = default; - virtual void pingDatabase() { Database_PostgreSQL::pingDatabase(); } - bool saveBlock(const v3s16 &pos, const std::string &data); void loadBlock(const v3s16 &pos, std::string *block); bool deleteBlock(const v3s16 &pos); @@ -135,8 +133,6 @@ public: PlayerDatabasePostgreSQL(const std::string &connect_string); virtual ~PlayerDatabasePostgreSQL() = default; - virtual void pingDatabase() { Database_PostgreSQL::pingDatabase(); } - void savePlayer(RemotePlayer *player); bool loadPlayer(RemotePlayer *player, PlayerSAO *sao); bool removePlayer(const std::string &name); diff --git a/src/database/database-sqlite3.cpp b/src/database/database-sqlite3.cpp index 116096f68..4560743b9 100644 --- a/src/database/database-sqlite3.cpp +++ b/src/database/database-sqlite3.cpp @@ -121,7 +121,7 @@ Database_SQLite3::Database_SQLite3(const std::string &savedir, const std::string void Database_SQLite3::beginSave() { - pingDatabase(); + verifyDatabase(); SQLRES(sqlite3_step(m_stmt_begin), SQLITE_DONE, "Failed to start SQLite3 transaction"); sqlite3_reset(m_stmt_begin); @@ -129,7 +129,7 @@ void Database_SQLite3::beginSave() void Database_SQLite3::endSave() { - pingDatabase(); + verifyDatabase(); SQLRES(sqlite3_step(m_stmt_end), SQLITE_DONE, "Failed to commit SQLite3 transaction"); sqlite3_reset(m_stmt_end); @@ -171,7 +171,7 @@ void Database_SQLite3::openDatabase() "Failed to enable sqlite3 foreign key support"); } -void Database_SQLite3::pingDatabase() +void Database_SQLite3::verifyDatabase() { if (m_initialized) return; @@ -247,7 +247,7 @@ inline void MapDatabaseSQLite3::bindPos(sqlite3_stmt *stmt, const v3s16 &pos, in bool MapDatabaseSQLite3::deleteBlock(const v3s16 &pos) { - pingDatabase(); + verifyDatabase(); bindPos(m_stmt_delete, pos); @@ -263,7 +263,7 @@ bool MapDatabaseSQLite3::deleteBlock(const v3s16 &pos) bool MapDatabaseSQLite3::saveBlock(const v3s16 &pos, const std::string &data) { - pingDatabase(); + verifyDatabase(); #ifdef __ANDROID__ /** @@ -290,7 +290,7 @@ bool MapDatabaseSQLite3::saveBlock(const v3s16 &pos, const std::string &data) void MapDatabaseSQLite3::loadBlock(const v3s16 &pos, std::string *block) { - pingDatabase(); + verifyDatabase(); bindPos(m_stmt_read, pos); @@ -311,7 +311,7 @@ void MapDatabaseSQLite3::loadBlock(const v3s16 &pos, std::string *block) void MapDatabaseSQLite3::listAllLoadableBlocks(std::vector &dst) { - pingDatabase(); + verifyDatabase(); while (sqlite3_step(m_stmt_list) == SQLITE_ROW) dst.push_back(getIntegerAsBlock(sqlite3_column_int64(m_stmt_list, 0))); @@ -439,7 +439,7 @@ void PlayerDatabaseSQLite3::initStatements() bool PlayerDatabaseSQLite3::playerDataExists(const std::string &name) { - pingDatabase(); + verifyDatabase(); str_to_sqlite(m_stmt_player_load, 1, name); bool res = (sqlite3_step(m_stmt_player_load) == SQLITE_ROW); sqlite3_reset(m_stmt_player_load); @@ -536,7 +536,7 @@ void PlayerDatabaseSQLite3::savePlayer(RemotePlayer *player) bool PlayerDatabaseSQLite3::loadPlayer(RemotePlayer *player, PlayerSAO *sao) { - pingDatabase(); + verifyDatabase(); str_to_sqlite(m_stmt_player_load, 1, player->getName()); if (sqlite3_step(m_stmt_player_load) != SQLITE_ROW) { @@ -600,7 +600,7 @@ bool PlayerDatabaseSQLite3::removePlayer(const std::string &name) void PlayerDatabaseSQLite3::listPlayers(std::vector &res) { - pingDatabase(); + verifyDatabase(); while (sqlite3_step(m_stmt_player_list) == SQLITE_ROW) res.push_back(sqlite_to_string(m_stmt_player_list, 0)); @@ -673,7 +673,7 @@ void AuthDatabaseSQLite3::initStatements() bool AuthDatabaseSQLite3::getAuth(const std::string &name, AuthEntry &res) { - pingDatabase(); + verifyDatabase(); str_to_sqlite(m_stmt_read, 1, name); if (sqlite3_step(m_stmt_read) != SQLITE_ROW) { sqlite3_reset(m_stmt_read); @@ -735,7 +735,7 @@ bool AuthDatabaseSQLite3::createAuth(AuthEntry &authEntry) bool AuthDatabaseSQLite3::deleteAuth(const std::string &name) { - pingDatabase(); + verifyDatabase(); str_to_sqlite(m_stmt_delete, 1, name); sqlite3_vrfy(sqlite3_step(m_stmt_delete), SQLITE_DONE); @@ -749,7 +749,7 @@ bool AuthDatabaseSQLite3::deleteAuth(const std::string &name) void AuthDatabaseSQLite3::listNames(std::vector &res) { - pingDatabase(); + verifyDatabase(); while (sqlite3_step(m_stmt_list_names) == SQLITE_ROW) { res.push_back(sqlite_to_string(m_stmt_list_names, 0)); diff --git a/src/database/database-sqlite3.h b/src/database/database-sqlite3.h index 647eddf7a..d7202a918 100644 --- a/src/database/database-sqlite3.h +++ b/src/database/database-sqlite3.h @@ -36,13 +36,13 @@ public: void beginSave(); void endSave(); - // Open and initialize the database if needed - virtual void pingDatabase(); - bool initialized() const { return m_initialized; } protected: Database_SQLite3(const std::string &savedir, const std::string &dbname); + // Open and initialize the database if needed + void verifyDatabase(); + // Convertors inline void str_to_sqlite(sqlite3_stmt *s, int iCol, const std::string &str) const { @@ -146,8 +146,6 @@ public: MapDatabaseSQLite3(const std::string &savedir); virtual ~MapDatabaseSQLite3(); - virtual void pingDatabase() { Database_SQLite3::pingDatabase(); } - bool saveBlock(const v3s16 &pos, const std::string &data); void loadBlock(const v3s16 &pos, std::string *block); bool deleteBlock(const v3s16 &pos); @@ -175,8 +173,6 @@ public: PlayerDatabaseSQLite3(const std::string &savedir); virtual ~PlayerDatabaseSQLite3(); - virtual void pingDatabase() { Database_SQLite3::pingDatabase(); } - void savePlayer(RemotePlayer *player); bool loadPlayer(RemotePlayer *player, PlayerSAO *sao); bool removePlayer(const std::string &name); @@ -212,8 +208,6 @@ public: AuthDatabaseSQLite3(const std::string &savedir); virtual ~AuthDatabaseSQLite3(); - virtual void pingDatabase() { Database_SQLite3::pingDatabase(); } - virtual bool getAuth(const std::string &name, AuthEntry &res); virtual bool saveAuth(const AuthEntry &authEntry); virtual bool createAuth(AuthEntry &authEntry); diff --git a/src/database/database.h b/src/database/database.h index 47605a07e..b7d551935 100644 --- a/src/database/database.h +++ b/src/database/database.h @@ -32,7 +32,6 @@ public: virtual void beginSave() = 0; virtual void endSave() = 0; virtual bool initialized() const { return true; } - virtual void pingDatabase() {} }; class MapDatabase : public Database @@ -58,8 +57,6 @@ class PlayerDatabase public: virtual ~PlayerDatabase() = default; - virtual void pingDatabase() {} - virtual void savePlayer(RemotePlayer *player) = 0; virtual bool loadPlayer(RemotePlayer *player, PlayerSAO *sao) = 0; virtual bool removePlayer(const std::string &name) = 0; @@ -86,5 +83,4 @@ public: virtual bool deleteAuth(const std::string &name) = 0; virtual void listNames(std::vector &res) = 0; virtual void reload() = 0; - virtual void pingDatabase() {} }; diff --git a/src/map.cpp b/src/map.cpp index 7c776b070..b9ab7c066 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -1907,11 +1907,6 @@ MapDatabase *ServerMap::createDatabase( throw BaseException(std::string("Database backend ") + name + " not supported."); } -void ServerMap::pingDatabase() -{ - dbase->pingDatabase(); -} - void ServerMap::beginSave() { dbase->beginSave(); diff --git a/src/map.h b/src/map.h index 77ee4da9e..4d9847063 100644 --- a/src/map.h +++ b/src/map.h @@ -387,7 +387,6 @@ public: Database functions */ static MapDatabase *createDatabase(const std::string &name, const std::string &savedir, Settings &conf); - void pingDatabase(); // Call these before and after saving of blocks void beginSave(); diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp index 2c6a39ee3..ad2ffc9a4 100644 --- a/src/serverenvironment.cpp +++ b/src/serverenvironment.cpp @@ -1228,11 +1228,6 @@ void ServerEnvironment::step(float dtime) } } - if (m_database_check_interval.step(dtime, 10.0f)) { - m_auth_database->pingDatabase(); - m_player_database->pingDatabase(); - m_map->pingDatabase(); - } /* Manage active block list */ diff --git a/src/serverenvironment.h b/src/serverenvironment.h index 4b453d39a..af742e290 100644 --- a/src/serverenvironment.h +++ b/src/serverenvironment.h @@ -436,7 +436,6 @@ private: IntervalLimiter m_object_management_interval; // List of active blocks ActiveBlockList m_active_blocks; - IntervalLimiter m_database_check_interval; IntervalLimiter m_active_blocks_management_interval; IntervalLimiter m_active_block_modifier_interval; IntervalLimiter m_active_blocks_nodemetadata_interval; -- cgit v1.2.3 From 42b0d612ef488dd5b4836fa303aeebe424f09e92 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Tue, 7 Jul 2020 19:30:35 +0100 Subject: Fix build due to revert error --- src/database/database-postgresql.cpp | 10 +++++----- src/database/database-postgresql.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/database/database-postgresql.h') diff --git a/src/database/database-postgresql.cpp b/src/database/database-postgresql.cpp index 6acfb5937..e1bb39928 100644 --- a/src/database/database-postgresql.cpp +++ b/src/database/database-postgresql.cpp @@ -678,7 +678,7 @@ void AuthDatabasePostgreSQL::initStatements() bool AuthDatabasePostgreSQL::getAuth(const std::string &name, AuthEntry &res) { - pingDatabase(); + verifyDatabase(); const char *values[] = { name.c_str() }; PGresult *result = execPrepared("auth_read", 1, values, false, false); @@ -710,7 +710,7 @@ bool AuthDatabasePostgreSQL::getAuth(const std::string &name, AuthEntry &res) bool AuthDatabasePostgreSQL::saveAuth(const AuthEntry &authEntry) { - pingDatabase(); + verifyDatabase(); beginSave(); @@ -732,7 +732,7 @@ bool AuthDatabasePostgreSQL::saveAuth(const AuthEntry &authEntry) bool AuthDatabasePostgreSQL::createAuth(AuthEntry &authEntry) { - pingDatabase(); + verifyDatabase(); std::string lastLoginStr = itos(authEntry.last_login); const char *values[] = { @@ -764,7 +764,7 @@ bool AuthDatabasePostgreSQL::createAuth(AuthEntry &authEntry) bool AuthDatabasePostgreSQL::deleteAuth(const std::string &name) { - pingDatabase(); + verifyDatabase(); const char *values[] = { name.c_str() }; execPrepared("auth_delete", 1, values); @@ -775,7 +775,7 @@ bool AuthDatabasePostgreSQL::deleteAuth(const std::string &name) void AuthDatabasePostgreSQL::listNames(std::vector &res) { - pingDatabase(); + verifyDatabase(); PGresult *results = execPrepared("auth_list_names", 0, NULL, NULL, NULL, false, false); diff --git a/src/database/database-postgresql.h b/src/database/database-postgresql.h index 409e62fe0..f47deda33 100644 --- a/src/database/database-postgresql.h +++ b/src/database/database-postgresql.h @@ -152,7 +152,7 @@ public: AuthDatabasePostgreSQL(const std::string &connect_string); virtual ~AuthDatabasePostgreSQL() = default; - virtual void pingDatabase() { Database_PostgreSQL::pingDatabase(); } + virtual void verifyDatabase() { Database_PostgreSQL::verifyDatabase(); } virtual bool getAuth(const std::string &name, AuthEntry &res); virtual bool saveAuth(const AuthEntry &authEntry); -- cgit v1.2.3