Database fallback for clientprefs is now more "intelligent" (bug 3564, r=pred).
This commit is contained in:
parent
7d3ebce7d1
commit
50e1c5ba1f
@ -46,6 +46,7 @@ CookieTypeHandler g_CookieTypeHandler;
|
|||||||
HandleType_t g_CookieIterator = 0;
|
HandleType_t g_CookieIterator = 0;
|
||||||
CookieIteratorHandler g_CookieIteratorHandler;
|
CookieIteratorHandler g_CookieIteratorHandler;
|
||||||
DbDriver g_DriverType;
|
DbDriver g_DriverType;
|
||||||
|
static const DatabaseInfo *storage_local = NULL;
|
||||||
|
|
||||||
bool ClientPrefs::SDK_OnLoad(char *error, size_t maxlength, bool late)
|
bool ClientPrefs::SDK_OnLoad(char *error, size_t maxlength, bool late)
|
||||||
{
|
{
|
||||||
@ -58,6 +59,20 @@ bool ClientPrefs::SDK_OnLoad(char *error, size_t maxlength, bool late)
|
|||||||
{
|
{
|
||||||
DBInfo = dbi->FindDatabaseConf("default");
|
DBInfo = dbi->FindDatabaseConf("default");
|
||||||
|
|
||||||
|
if (DBInfo == NULL ||
|
||||||
|
(strcmp(DBInfo->host, "localhost") == 0 &&
|
||||||
|
strcmp(DBInfo->database, "sourcemod") == 0 &&
|
||||||
|
strcmp(DBInfo->user, "root") == 0 &&
|
||||||
|
strcmp(DBInfo->pass, "") == 0 &&
|
||||||
|
strcmp(DBInfo->driver, "") == 0))
|
||||||
|
{
|
||||||
|
storage_local = dbi->FindDatabaseConf("storage-local");
|
||||||
|
if (DBInfo == NULL)
|
||||||
|
{
|
||||||
|
DBInfo = storage_local;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (DBInfo == NULL)
|
if (DBInfo == NULL)
|
||||||
{
|
{
|
||||||
snprintf(error, maxlength, "Could not find \"clientprefs\" or \"default\" database configs");
|
snprintf(error, maxlength, "Could not find \"clientprefs\" or \"default\" database configs");
|
||||||
@ -176,6 +191,14 @@ void ClientPrefs::DatabaseConnect()
|
|||||||
|
|
||||||
Database = Driver->Connect(DBInfo, true, error, sizeof(error));
|
Database = Driver->Connect(DBInfo, true, error, sizeof(error));
|
||||||
|
|
||||||
|
if (Database == NULL &&
|
||||||
|
DBInfo != storage_local &&
|
||||||
|
storage_local != NULL)
|
||||||
|
{
|
||||||
|
DBInfo = storage_local;
|
||||||
|
Database = Driver->Connect(DBInfo, true, error, sizeof(error));
|
||||||
|
}
|
||||||
|
|
||||||
if (Database == NULL)
|
if (Database == NULL)
|
||||||
{
|
{
|
||||||
g_pSM->LogError(myself, error);
|
g_pSM->LogError(myself, error);
|
||||||
|
Loading…
Reference in New Issue
Block a user