(c *conn)
| 1114 | } |
| 1115 | |
| 1116 | func (g *connGroup) releaseConn(c *conn) bool { |
| 1117 | idleTimeout := g.pool.idleTimeout |
| 1118 | |
| 1119 | g.mutex.Lock() |
| 1120 | defer g.mutex.Unlock() |
| 1121 | |
| 1122 | if g.closed { |
| 1123 | return false |
| 1124 | } |
| 1125 | |
| 1126 | if c.timer != nil { |
| 1127 | c.timer.Reset(idleTimeout) |
| 1128 | } else { |
| 1129 | c.timer = time.AfterFunc(idleTimeout, func() { |
| 1130 | if g.removeConn(c) { |
| 1131 | c.close() |
| 1132 | } |
| 1133 | }) |
| 1134 | } |
| 1135 | |
| 1136 | g.idleConns = append(g.idleConns, c) |
| 1137 | return true |
| 1138 | } |
| 1139 | |
| 1140 | func (g *connGroup) connect(ctx context.Context, addr net.Addr) (*conn, error) { |
| 1141 | deadline := time.Now().Add(g.pool.dialTimeout) |
no test coverage detected