agent: clone partial consul config

The agent configuration for the consul server is a partial configuration
which needs to be cloned to avoid data races.

This is a stop-gap measure before moving the configuration into
a separate package.
This commit is contained in:
Frank Schroeder 2017-06-30 11:09:52 +02:00 committed by Frank Schröder
parent 727b6444ad
commit 7f7c0ad65e
1 changed files with 6 additions and 1 deletions

View File

@ -551,8 +551,13 @@ func (a *Agent) reloadWatches(cfg *Config) error {
func (a *Agent) consulConfig() (*consul.Config, error) {
// Start with the provided config or default config
base := consul.DefaultConfig()
// a.config.ConsulConfig, if set, is a partial configuration for the
// consul server or client. Therefore, clone and augment it but
// don't use it as base directly.
if a.config.ConsulConfig != nil {
base = a.config.ConsulConfig
base = new(consul.Config)
*base = *a.config.ConsulConfig
}
// This is set when the agent starts up