fix race and parityshard leaks

This commit is contained in:
xtaci
2019-11-07 13:30:11 +08:00
parent 68589db576
commit 2ed35ac44d
2 changed files with 3 additions and 2 deletions
+1 -1
View File
@@ -156,7 +156,7 @@ func (dec *fecDecoder) decode(in fecPacket) (recovered [][]byte) {
dlen := len(shards[k])
shards[k] = shards[k][:maxlen]
copy(shards[k][dlen:], dec.zeros)
} else {
} else if k < dec.dataShards {
shards[k] = xmitBuf.Get().([]byte)[:0]
}
}
+2 -1
View File
@@ -663,9 +663,10 @@ func (s *UDPSession) kcpInput(data []byte) {
if f.flag() == typeParity {
fecParityShards++
}
recovers := s.fecDecoder.decode(f)
// lock
s.mu.Lock()
recovers := s.fecDecoder.decode(f)
if f.flag() == typeData {
if ret := s.kcp.Input(data[fecHeaderSizePlus2:], true, s.ackNoDelay); ret != 0 {
kcpInErrors++