Close the reader when we drop the connection

This commit is contained in:
M. Mert Yildiran
2022-06-02 06:32:51 +03:00
parent 97ce9d71c1
commit b27080d448
2 changed files with 17 additions and 0 deletions

View File

@@ -13,6 +13,7 @@ type golangReader struct {
data []byte
progress *api.ReadProgress
tcpID *api.TcpID
isClosed bool
isClient bool
captureTime time.Time
extension *api.Extension
@@ -42,6 +43,13 @@ func (r *golangReader) send(b []byte) {
r.msgQueue <- b
}
func (r *golangReader) close() {
if !r.isClosed {
r.isClosed = true
close(r.msgQueue)
}
}
func (r *golangReader) Read(p []byte) (int, error) {
var b []byte

View File

@@ -139,6 +139,15 @@ func (p *tlsPoller) pollGolangReadWrite(rd *ringbuf.Reader, emitter api.Emitter,
if p.golangReadWriteMap.Len()+1 > golangMapLimit {
pair := p.golangReadWriteMap.Oldest()
c := pair.Value.(*golangConnection)
clientReader := c.clientReader
if clientReader != nil {
clientReader.close()
}
serverReader := c.serverReader
if serverReader != nil {
serverReader.close()
}
p.golangReadWriteMap.Delete(pair.Key)
}