From 55df05f29fca3a389936f26d4ce175d5ae43fda0 Mon Sep 17 00:00:00 2001 From: Adrian Gallagher Date: Mon, 4 Jun 2018 19:21:31 +1000 Subject: [PATCH] Fix config race --- config/config.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/config/config.go b/config/config.go index e34e1a0b..0d20ef5b 100644 --- a/config/config.go +++ b/config/config.go @@ -56,6 +56,7 @@ var ( Cfg Config IsInitialSetup bool testBypass bool + m sync.Mutex ) // WebserverConfig struct holds the prestart variables for the webserver. @@ -105,7 +106,6 @@ type Config struct { SMS SMSGlobalConfig `json:"SMSGlobal"` Webserver WebserverConfig `json:"Webserver"` Exchanges []ExchangeConfig `json:"Exchanges"` - m sync.Mutex } // ExchangeConfig holds all the information needed for each enabled Exchange. @@ -227,8 +227,8 @@ func (c *Config) GetCurrencyPairDisplayConfig() *CurrencyPairFormatConfig { // GetExchangeConfig returns exchange configurations by its indivdual name func (c *Config) GetExchangeConfig(name string) (ExchangeConfig, error) { - c.m.Lock() - defer c.m.Unlock() + m.Lock() + defer m.Unlock() for i := range c.Exchanges { if c.Exchanges[i].Name == name { return c.Exchanges[i], nil @@ -239,8 +239,8 @@ func (c *Config) GetExchangeConfig(name string) (ExchangeConfig, error) { // UpdateExchangeConfig updates exchange configurations func (c *Config) UpdateExchangeConfig(e ExchangeConfig) error { - c.m.Lock() - defer c.m.Unlock() + m.Lock() + defer m.Unlock() for i := range c.Exchanges { if c.Exchanges[i].Name == e.Name { c.Exchanges[i] = e @@ -479,7 +479,9 @@ func (c *Config) ReadConfig(configPath string) error { } if c.EncryptConfig == configFileEncryptionPrompt { + m.Lock() IsInitialSetup = true + m.Unlock() if c.PromptForConfigEncryption() { c.EncryptConfig = configFileEncryptionEnabled return c.SaveConfig(defaultPath)