return FEC segments to xmitBuf when session closes

This commit is contained in:
xtaci
2019-11-05 14:41:57 +08:00
parent ef2b8b8eb4
commit ddb5eedad0
2 changed files with 10 additions and 0 deletions
+7
View File
@@ -209,6 +209,13 @@ func (dec *fecDecoder) freeRange(first, n int, q []fecElement) []fecElement {
return q[:len(q)-n]
}
// release all segments back to xmitBuf
func (dec *fecDecoder) release() {
if n := len(dec.rx); n > 0 {
dec.rx = dec.freeRange(0, n, dec.rx)
}
}
type (
// fecEncoder for encoding outgoing packets
fecEncoder struct {
+3
View File
@@ -360,6 +360,9 @@ func (s *UDPSession) Close() error {
s.uncork()
// release pending segments
s.kcp.ReleaseTX()
if s.fecDecoder != nil {
s.fecDecoder.release()
}
s.mu.Unlock()
if s.l != nil { // belongs to listener