diff --git a/conn.go b/conn.go index b62e096..7c274ca 100644 --- a/conn.go +++ b/conn.go @@ -373,7 +373,6 @@ func (c *Conn) close(err error) { pr.wg.Done() delete(c.reqs, seq) - releasePendingRequest(pr) } c.seq = 0 diff --git a/pool.go b/pool.go index 34781aa..4191001 100644 --- a/pool.go +++ b/pool.go @@ -52,7 +52,7 @@ func acquirePendingWrite(buf *bytebufferpool.ByteBuffer, wait bool) *pendingWrit return pw } -func releasePendingWrite(pw *pendingWrite) { pendingWritePool.Put(pw) } +func releasePendingWrite(pw *pendingWrite) { pw.err = nil; pendingWritePool.Put(pw) } type pendingRequest struct { dst []byte // dst to copy response to @@ -72,7 +72,11 @@ func acquirePendingRequest(dst []byte) *pendingRequest { return pr } -func releasePendingRequest(pr *pendingRequest) { pendingRequestPool.Put(pr) } +func releasePendingRequest(pr *pendingRequest) { + pr.dst = nil + pr.err = nil + pendingRequestPool.Put(pr) +} var zeroTime time.Time