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;
 | 
			
		||||
CookieIteratorHandler g_CookieIteratorHandler;
 | 
			
		||||
DbDriver g_DriverType;
 | 
			
		||||
static const DatabaseInfo *storage_local = NULL;
 | 
			
		||||
 | 
			
		||||
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");
 | 
			
		||||
 | 
			
		||||
		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)
 | 
			
		||||
		{
 | 
			
		||||
			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));
 | 
			
		||||
 | 
			
		||||
	if (Database == NULL &&
 | 
			
		||||
		DBInfo != storage_local &&
 | 
			
		||||
		storage_local != NULL)
 | 
			
		||||
	{
 | 
			
		||||
		DBInfo = storage_local;
 | 
			
		||||
		Database = Driver->Connect(DBInfo, true, error, sizeof(error));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (Database == NULL)
 | 
			
		||||
	{
 | 
			
		||||
		g_pSM->LogError(myself, error);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user