Bladeren bron

fix panic when there is no available handler

Darien Raymond 8 jaren geleden
bovenliggende
commit
02028bf8be
3 gewijzigde bestanden met toevoegingen van 7 en 1 verwijderingen
  1. 3 0
      app/proxyman/inbound/always.go
  2. 3 0
      app/proxyman/inbound/dynamic.go
  3. 1 1
      proxy/vmess/inbound/inbound.go

+ 3 - 0
app/proxyman/inbound/always.go

@@ -80,6 +80,9 @@ func (h *AlwaysOnInboundHandler) Close() {
 }
 
 func (h *AlwaysOnInboundHandler) GetRandomInboundProxy() (proxy.Inbound, net.Port, int) {
+	if len(h.workers) == 0 {
+		return nil, 0, 0
+	}
 	w := h.workers[dice.Roll(len(h.workers))]
 	return w.Proxy(), w.Port(), 9999
 }

+ 3 - 0
app/proxyman/inbound/dynamic.go

@@ -163,6 +163,9 @@ func (h *DynamicInboundHandler) GetRandomInboundProxy() (proxy.Inbound, v2net.Po
 	h.workerMutex.RLock()
 	defer h.workerMutex.RUnlock()
 
+	if len(h.worker) == 0 {
+		return nil, 0, 0
+	}
 	w := h.worker[dice.Roll(len(h.worker))]
 	expire := h.receiverConfig.AllocationStrategy.GetRefreshValue() - uint32(time.Since(h.lastRefresh)/time.Minute)
 	return w.Proxy(), w.Port(), int(expire)

+ 1 - 1
proxy/vmess/inbound/inbound.go

@@ -252,7 +252,7 @@ func (v *VMessInboundHandler) generateCommand(ctx context.Context, request *prot
 			}
 			proxyHandler, port, availableMin := handler.GetRandomInboundProxy()
 			inboundHandler, ok := proxyHandler.(*VMessInboundHandler)
-			if ok {
+			if ok && inboundHandler != nil {
 				if availableMin > 255 {
 					availableMin = 255
 				}