commit 42a4f6f9cbefb56698b9a4274473020188031754
parent 79b34c2f1e0ba91ff5f4f879dc42eddfd82cc563
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date: Fri, 31 Mar 2017 10:40:33 +0200
tplimpl: Fix map data race in URLLock
Diffstat:
1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/tpl/tplimpl/template_resources.go b/tpl/tplimpl/template_resources.go
@@ -46,12 +46,17 @@ type remoteLock struct {
// URLLock locks an URL during download
func (l *remoteLock) URLLock(url string) {
+ var (
+ lock *sync.Mutex
+ ok bool
+ )
l.Lock()
- if _, ok := l.m[url]; !ok {
- l.m[url] = &sync.Mutex{}
+ if lock, ok = l.m[url]; !ok {
+ lock = &sync.Mutex{}
+ l.m[url] = lock
}
l.Unlock()
- l.m[url].Lock()
+ lock.Lock()
}
// URLUnlock unlocks an URL when the download has been finished. Use only in defer calls.