|
|
@@ -60,16 +60,17 @@ func (this *SendingWindow) Remove(idx uint32) {
|
|
|
}
|
|
|
seg.Release()
|
|
|
this.data[pos] = nil
|
|
|
- if pos == this.start {
|
|
|
- if this.start == this.last {
|
|
|
- this.len = 0
|
|
|
- this.start = 0
|
|
|
- this.last = 0
|
|
|
- } else {
|
|
|
- delta := this.next[pos] - this.start
|
|
|
- this.start = this.next[pos]
|
|
|
- this.len -= delta
|
|
|
+ if pos == this.start && pos == this.last {
|
|
|
+ this.len = 0
|
|
|
+ this.start = 0
|
|
|
+ this.last = 0
|
|
|
+ } else if pos == this.start {
|
|
|
+ delta := this.next[pos] - this.start
|
|
|
+ if this.next[pos] < this.start {
|
|
|
+ delta = this.next[pos] + this.cap - this.start
|
|
|
}
|
|
|
+ this.start = this.next[pos]
|
|
|
+ this.len -= delta
|
|
|
} else if pos == this.last {
|
|
|
this.last = this.prev[pos]
|
|
|
} else {
|