|
|
@@ -133,7 +133,7 @@ type Client struct {
|
|
|
selector ServerSelector
|
|
|
|
|
|
lk sync.Mutex
|
|
|
- freeconn map[net.Addr][]*conn
|
|
|
+ freeconn map[string][]*conn
|
|
|
}
|
|
|
|
|
|
// Item is an item to be got or stored in a memcached server.
|
|
|
@@ -193,14 +193,14 @@ func (c *Client) putFreeConn(addr net.Addr, cn *conn) {
|
|
|
c.lk.Lock()
|
|
|
defer c.lk.Unlock()
|
|
|
if c.freeconn == nil {
|
|
|
- c.freeconn = make(map[net.Addr][]*conn)
|
|
|
+ c.freeconn = make(map[string][]*conn)
|
|
|
}
|
|
|
- freelist := c.freeconn[addr]
|
|
|
+ freelist := c.freeconn[addr.String()]
|
|
|
if len(freelist) >= maxIdleConnsPerAddr {
|
|
|
cn.nc.Close()
|
|
|
return
|
|
|
}
|
|
|
- c.freeconn[addr] = append(freelist, cn)
|
|
|
+ c.freeconn[addr.String()] = append(freelist, cn)
|
|
|
}
|
|
|
|
|
|
func (c *Client) getFreeConn(addr net.Addr) (cn *conn, ok bool) {
|
|
|
@@ -209,12 +209,12 @@ func (c *Client) getFreeConn(addr net.Addr) (cn *conn, ok bool) {
|
|
|
if c.freeconn == nil {
|
|
|
return nil, false
|
|
|
}
|
|
|
- freelist, ok := c.freeconn[addr]
|
|
|
+ freelist, ok := c.freeconn[addr.String()]
|
|
|
if !ok || len(freelist) == 0 {
|
|
|
return nil, false
|
|
|
}
|
|
|
cn = freelist[len(freelist)-1]
|
|
|
- c.freeconn[addr] = freelist[:len(freelist)-1]
|
|
|
+ c.freeconn[addr.String()] = freelist[:len(freelist)-1]
|
|
|
return cn, true
|
|
|
}
|
|
|
|