Преглед на файлове

ensure that detour list has not changed

v2ray преди 9 години
родител
ревизия
f478db2b2e
променени са 1 файла, в които са добавени 4 реда и са изтрити 2 реда
  1. 4 2
      proxy/vmess/outbound/receiver.go

+ 4 - 2
proxy/vmess/outbound/receiver.go

@@ -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
 	}