tplimpl: Fix map data race in URLLock

This commit is contained in:
Bjørn Erik Pedersen 2017-03-31 10:40:33 +02:00
parent 79b34c2f1e
commit 42a4f6f9cb

View file

@ -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.