From 7301999c2a3876288f5f98cffbb5a62240116234 Mon Sep 17 00:00:00 2001 From: Vladislav Kolesnikov Date: Wed, 20 Jul 2016 19:49:59 +0300 Subject: [PATCH] added locks for all other accesses to controller.svcRecords Signed-off-by: Vladislav Kolesnikov --- libnetwork/network.go | 6 +++++- libnetwork/sandbox.go | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/libnetwork/network.go b/libnetwork/network.go index 09a63615ee..71cbced580 100644 --- a/libnetwork/network.go +++ b/libnetwork/network.go @@ -1105,9 +1105,13 @@ func (n *network) getSvcRecords(ep *endpoint) []etchosts.Record { } var recs []etchosts.Record - sr, _ := n.ctrlr.svcRecords[n.id] + epName := ep.Name() + n.ctrlr.Lock() + sr, _ := n.ctrlr.svcRecords[n.id] + n.ctrlr.Unlock() + for h, ip := range sr.svcMap { if strings.Split(h, ".")[0] == epName { continue diff --git a/libnetwork/sandbox.go b/libnetwork/sandbox.go index 12efbb59a2..a4a8933e28 100644 --- a/libnetwork/sandbox.go +++ b/libnetwork/sandbox.go @@ -413,7 +413,12 @@ func (sb *sandbox) ResolveIP(ip string) string { for _, ep := range sb.getConnectedEndpoints() { n := ep.getNetwork() - sr, ok := n.getController().svcRecords[n.ID()] + c := n.getController() + + c.Lock() + sr, ok := c.svcRecords[n.ID()] + c.Unlock() + if !ok { continue } @@ -454,7 +459,12 @@ func (sb *sandbox) ResolveService(name string) ([]*net.SRV, []net.IP, error) { for _, ep := range sb.getConnectedEndpoints() { n := ep.getNetwork() - sr, ok := n.getController().svcRecords[n.ID()] + c := n.getController() + + c.Lock() + sr, ok := c.svcRecords[n.ID()] + c.Unlock() + if !ok { continue }