From d32f184696519f909d1db56a060b39f0a08b41c5 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Fri, 5 Apr 2013 13:03:04 -0700 Subject: [PATCH] Fix a race condition when running the port allocator --- network.go | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/network.go b/network.go index 2cbe011fdb..5b4f312263 100644 --- a/network.go +++ b/network.go @@ -167,10 +167,6 @@ type PortAllocator struct { } func (alloc *PortAllocator) runFountain() { - if alloc.fountain != nil { - return - } - alloc.fountain = make(chan int) for { for port := portRangeStart; port < portRangeEnd; port++ { alloc.fountain <- port @@ -208,6 +204,7 @@ func (alloc *PortAllocator) Acquire(port int) (int, error) { func newPortAllocator() (*PortAllocator, error) { allocator := &PortAllocator{ inUse: make(map[int]struct{}), + fountain: make(chan int), } go allocator.runFountain() return allocator, nil