rdr, size, _, err := kc.Get(locator)
var data []byte
if err == nil {
- data := make([]byte, size, BLOCKSIZE)
+ data = make([]byte, size, BLOCKSIZE)
_, err = io.ReadFull(rdr, data)
err2 := rdr.Close()
if err == nil {
}
func (c *BlockCache) setup() {
+ c.mtx.Lock()
c.cache = make(map[string]*cacheBlock)
+ c.mtx.Unlock()
}
func (c *BlockCache) Clear() {
- c.mtx.Lock()
c.setup()
- c.mtx.Unlock()
}
type timeSlice []time.Time
func RunFakeKeepServer(st http.Handler) (ks KeepServer) {
var err error
- ks.listener, err = net.ListenTCP("tcp", &net.TCPAddr{Port: 0})
+ // If we don't explicitly bind it to localhost, ks.listener.Addr() will
+ // bind to 0.0.0.0 or [::] which is not a valid address for Dial()
+ ks.listener, err = net.ListenTCP("tcp", &net.TCPAddr{IP: []byte{127, 0, 0, 1}, Port: 0})
if err != nil {
panic(fmt.Sprintf("Could not listen on any port"))
}