|
|
@@ -110,8 +110,10 @@ func (this *ReceiverManager) pickDetour() *Receiver {
|
|
|
if rec.Expired() {
|
|
|
this.detourAccess.Lock()
|
|
|
detourLen := len(this.detours)
|
|
|
- this.detours[idx] = this.detours[detourLen-1]
|
|
|
- this.detours = this.detours[:detourLen-1]
|
|
|
+ if detourLen > idx && this.detours[idx].Expired() {
|
|
|
+ this.detours[idx] = this.detours[detourLen-1]
|
|
|
+ this.detours = this.detours[:detourLen-1]
|
|
|
+ }
|
|
|
this.detourAccess.Unlock()
|
|
|
return nil
|
|
|
}
|