diff --git a/daemon/container.go b/daemon/container.go index 239091f10b..57b3684d4d 100644 --- a/daemon/container.go +++ b/daemon/container.go @@ -808,11 +808,16 @@ func (container *Container) GetPtyMaster() (*os.File, error) { } func (container *Container) HostConfig() *runconfig.HostConfig { - return container.hostConfig + container.Lock() + res := container.hostConfig + container.Unlock() + return res } func (container *Container) SetHostConfig(hostConfig *runconfig.HostConfig) { + container.Lock() container.hostConfig = hostConfig + container.Unlock() } func (container *Container) DisableLink(name string) { diff --git a/daemon/daemon.go b/daemon/daemon.go index 51852749f4..c21ba3a38c 100644 --- a/daemon/daemon.go +++ b/daemon/daemon.go @@ -72,9 +72,11 @@ func (c *contStore) Delete(id string) { func (c *contStore) List() []*Container { containers := new(History) + c.Lock() for _, cont := range c.s { containers.Add(cont) } + c.Unlock() containers.Sort() return *containers } diff --git a/server/server.go b/server/server.go index af62db879d..76a51e796f 100644 --- a/server/server.go +++ b/server/server.go @@ -2402,12 +2402,14 @@ func (srv *Server) LogEvent(action, id, from string) *utils.JSONMessage { now := time.Now().UTC().Unix() jm := utils.JSONMessage{Status: action, ID: id, From: from, Time: now} srv.AddEvent(jm) + srv.Lock() for _, c := range srv.listeners { select { // non blocking channel case c <- jm: default: } } + srv.Unlock() return &jm }