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:
Luis Pater
2025-09-23 10:21:45 +08:00
parent 72ffeb73d3
commit 5bf7a9575c
2 changed files with 8 additions and 5 deletions

View File

@@ -73,9 +73,6 @@ func (h *Handler) Middleware() gin.HandlerFunc {
h.attemptsMu.Unlock()
allowRemote := h.cfg.RemoteManagement.AllowRemote
if !allowRemote {
allowRemote = true
}
if !allowRemote {
c.AbortWithStatusJSON(http.StatusForbidden, gin.H{"error": "remote management disabled"})
return

View File

@@ -26,7 +26,7 @@ func (s *RoundRobinSelector) Pick(ctx context.Context, provider, model string, o
}
available := make([]*Auth, 0, len(auths))
now := time.Now()
for i := range auths {
for i := 0; i < len(auths); i++ {
candidate := auths[i]
if candidate.Unavailable && candidate.NextRetryAfter.After(now) {
continue
@@ -42,7 +42,13 @@ func (s *RoundRobinSelector) Pick(ctx context.Context, provider, model string, o
key := provider + ":" + model
s.mu.Lock()
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()
// log.Debugf("available: %d, index: %d, key: %d", len(available), index, index%len(available))
return available[index%len(available)], nil
}