@@ -152,7 +152,7 @@ Config::Config(const ConfigFile& file)
152
152
: valuesSource(*getDefaultMemoryPool ()),
153
153
notifyDatabase(*getDefaultMemoryPool ()),
154
154
serverMode(-1 ),
155
- defaultConfig(false )
155
+ defaultConfig(true )
156
156
{
157
157
memset (sourceIdx, 0 , sizeof (sourceIdx));
158
158
valuesSource.add (NULL );
@@ -180,6 +180,7 @@ Config::Config(const ConfigFile& file)
180
180
}
181
181
182
182
loadValues (file, CONFIG_FILE);
183
+ fixDefaults ();
183
184
}
184
185
185
186
Config::Config (const ConfigFile& file, const char * srcName, const Config& base, const PathName& notify)
@@ -294,7 +295,7 @@ static const char* txtServerModes[6] =
294
295
295
296
void Config::setupDefaultConfig ()
296
297
{
297
- defaultConfig = true ;
298
+ fb_assert ( defaultConfig) ;
298
299
299
300
for (unsigned i = 0 ; i < MAX_CONFIG_KEY; i++)
300
301
defaults[i] = entries[i].default_value ;
@@ -305,26 +306,45 @@ void Config::setupDefaultConfig()
305
306
serverMode = bootBuild ? MODE_CLASSIC : MODE_SUPER;
306
307
pDefault->strVal = txtServerModes[2 * serverMode];
307
308
308
- pDefault = &defaults[KEY_TEMP_CACHE_LIMIT];
309
+ defaults[KEY_REMOTE_FILE_OPEN_ABILITY].boolVal = bootBuild;
310
+
311
+ // pDefault = &entries[KEY_WIRE_CRYPT].default_value;
312
+ // if (!*pDefault)
313
+ // *pDefault == (ConfigValue) (xxx == WC_CLIENT) ? WIRE_CRYPT_ENABLED : WIRE_CRYPT_REQUIRED;
314
+
315
+ }
316
+
317
+ void Config::fixDefaults ()
318
+ {
319
+ fb_assert (defaultConfig);
320
+
321
+ ConfigValue* pDefault = &defaults[KEY_TEMP_CACHE_LIMIT];
322
+ ConfigValue* pValue = &values[KEY_TEMP_CACHE_LIMIT];
309
323
if (pDefault->intVal < 0 )
310
324
pDefault->intVal = (serverMode != MODE_SUPER) ? 8388608 : 67108864 ; // bytes
311
325
312
- defaults[KEY_REMOTE_FILE_OPEN_ABILITY].boolVal = bootBuild;
326
+ if (pValue->intVal < 0 )
327
+ pValue->intVal = pDefault->intVal ;
328
+
313
329
314
330
pDefault = &defaults[KEY_DEFAULT_DB_CACHE_PAGES];
331
+ pValue = &values[KEY_DEFAULT_DB_CACHE_PAGES];
315
332
if (pDefault->intVal < 0 )
316
333
pDefault->intVal = (serverMode != MODE_SUPER) ? 256 : 2048 ; // pages
317
334
335
+ if (pValue->intVal < 0 )
336
+ pValue->intVal = pDefault->intVal ;
337
+
338
+
318
339
pDefault = &defaults[KEY_GC_POLICY];
340
+ pValue = &values[KEY_GC_POLICY];
319
341
if (!pDefault->strVal )
320
342
{
321
343
pDefault->strVal = (serverMode == MODE_SUPER) ? GCPolicyCombined : GCPolicyCooperative;
322
344
}
323
345
324
- // pDefault = &entries[KEY_WIRE_CRYPT].default_value;
325
- // if (!*pDefault)
326
- // *pDefault == (ConfigValue) (xxx == WC_CLIENT) ? WIRE_CRYPT_ENABLED : WIRE_CRYPT_REQUIRED;
327
-
346
+ if (!pValue->strVal )
347
+ pValue->strVal = pDefault->strVal ;
328
348
}
329
349
330
350
void Config::checkIntForLoBound (ConfigKey key, SINT64 loBound, bool setDefault)
0 commit comments