diff --git a/common/buf/reader.go b/common/buf/reader.go index 6b08d40c..ee13355b 100644 --- a/common/buf/reader.go +++ b/common/buf/reader.go @@ -148,12 +148,13 @@ func (r *BufferedReader) WriteTo(writer io.Writer) (int64, error) { return nBytes, err } +// Interrupt implements common.Interruptible. +func (r *BufferedReader) Interrupt() { + common.Interrupt(r.Reader) +} + // Close implements io.Closer. func (r *BufferedReader) Close() error { - if !r.Buffer.IsEmpty() { - ReleaseMulti(r.Buffer) - r.Buffer = nil - } return common.Close(r.Reader) } diff --git a/common/net/connection.go b/common/net/connection.go index 2678cbda..41fc55e9 100644 --- a/common/net/connection.go +++ b/common/net/connection.go @@ -115,7 +115,7 @@ func (c *connection) WriteMultiBuffer(mb buf.MultiBuffer) error { // Close implements net.Conn.Close(). func (c *connection) Close() error { common.Must(c.done.Close()) - common.Close(c.reader) + common.Interrupt(c.reader) common.Close(c.writer) if c.onClose != nil { return c.onClose.Close()