(addr net.Addr)
| 227 | } |
| 228 | |
| 229 | func (c *Client) getFreeConn(addr net.Addr) (cn *conn, ok bool) { |
| 230 | c.mu.Lock() |
| 231 | defer c.mu.Unlock() |
| 232 | if c.freeconn == nil { |
| 233 | return nil, false |
| 234 | } |
| 235 | freelist, ok := c.freeconn[addr.String()] |
| 236 | if !ok || len(freelist) == 0 { |
| 237 | return nil, false |
| 238 | } |
| 239 | cn = freelist[len(freelist)-1] |
| 240 | c.freeconn[addr.String()] = freelist[:len(freelist)-1] |
| 241 | return cn, true |
| 242 | } |
| 243 | |
| 244 | func (c *Client) netTimeout() time.Duration { |
| 245 | if c.Timeout != 0 { |