mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-03 04:50:52 +08:00
fix(auth): address index logic bug and remove redundant conditions
- Updated loop iteration in `AuthSelector` to correct index management for selecting candidates. - Fixed cursor index reset condition for large values to prevent overflow. - Removed unnecessary conditional reassignment of `allowRemote` in management handler for clarity and correctness.
This commit is contained in:
@@ -73,9 +73,6 @@ func (h *Handler) Middleware() gin.HandlerFunc {
|
|||||||
h.attemptsMu.Unlock()
|
h.attemptsMu.Unlock()
|
||||||
|
|
||||||
allowRemote := h.cfg.RemoteManagement.AllowRemote
|
allowRemote := h.cfg.RemoteManagement.AllowRemote
|
||||||
if !allowRemote {
|
|
||||||
allowRemote = true
|
|
||||||
}
|
|
||||||
if !allowRemote {
|
if !allowRemote {
|
||||||
c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"error": "remote management disabled"})
|
c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"error": "remote management disabled"})
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ func (s *RoundRobinSelector) Pick(ctx context.Context, provider, model string, o
|
|||||||
}
|
}
|
||||||
available := make([]*Auth, 0, len(auths))
|
available := make([]*Auth, 0, len(auths))
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
for i := range auths {
|
for i := 0; i < len(auths); i++ {
|
||||||
candidate := auths[i]
|
candidate := auths[i]
|
||||||
if candidate.Unavailable && candidate.NextRetryAfter.After(now) {
|
if candidate.Unavailable && candidate.NextRetryAfter.After(now) {
|
||||||
continue
|
continue
|
||||||
@@ -42,7 +42,13 @@ func (s *RoundRobinSelector) Pick(ctx context.Context, provider, model string, o
|
|||||||
key := provider + ":" + model
|
key := provider + ":" + model
|
||||||
s.mu.Lock()
|
s.mu.Lock()
|
||||||
index := s.cursors[key]
|
index := s.cursors[key]
|
||||||
s.cursors[key] = (index + 1) % len(available)
|
|
||||||
|
if index >= 2_147_483_640 {
|
||||||
|
index = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
s.cursors[key] = index + 1
|
||||||
s.mu.Unlock()
|
s.mu.Unlock()
|
||||||
|
// log.Debugf("available: %d, index: %d, key: %d", len(available), index, index%len(available))
|
||||||
return available[index%len(available)], nil
|
return available[index%len(available)], nil
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user