Преглед изворни кода

correctly handle sending window length

Darien Raymond пре 9 година
родитељ
комит
d716d02cd8
1 измењених фајлова са 5 додато и 0 уклоњено
  1. 5 0
      transport/internet/kcp/sending.go

+ 5 - 0
transport/internet/kcp/sending.go

@@ -40,6 +40,7 @@ func (v *SendingWindow) Release() {
 	if v == nil {
 		return
 	}
+	v.len = 0
 	for _, seg := range v.data {
 		seg.Release()
 	}
@@ -135,6 +136,10 @@ func (v *SendingWindow) HandleFastAck(number uint32, rto uint32) {
 }
 
 func (v *SendingWindow) Visit(visitor func(seg *DataSegment) bool) {
+	if v.IsEmpty() {
+		return
+	}
+
 	for i := v.start; ; i = v.next[i] {
 		if !visitor(&v.data[i]) || i == v.last {
 			break