Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

validateSettings() doesn't validate rateLimits[].period — zero period silently degrades to a 1ms backoff hint

Abierto Apto para principiantes
#811 1 comentario 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
82/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
typescript
Área
backend

Línea de trabajo

Empieza en src/utils/settings-config.ts, donde validateSettings() ya comprueba pow.periodMs > 0, y lee el tipo RateLimit en src/@types/settings.ts. Añade un bucle junto a esa comprobación sobre cada array limits.*.rateLimits (más limits.admin.loginRateLimits), agregando una incidencia { path, message } cuando period no sea mayor que 0. Está terminado cuando un período cero o negativo hace fallar la validación al iniciar, con la ruta indicada en la incidencia, y las pruebas existentes de la configuración siguen pasando.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Problem

validateSettings() (src/utils/settings-config.ts) enforces pow.periodMs > 0, but nothing validates period on any rateLimits[] entry. The RateLimit type (src/@types/settings.ts) declares period: number as required, so period: 0 passes type checks and startup validation without a word.

Since #807, a rejected request carries a retry-after hint computed as Math.max(1, Math.ceil(period)) ms. With period: 0 that emits a protocol-valid 1ms backoff — the misconfiguration is silently masked instead of failing loudly at startup. (It also degenerates the EWMA decay itself: λ = ln(2)/0, so prior activity decays to zero instantly and every event is judged in isolation.)

Affected arrays

All of these accept a RateLimit[] whose period is never validated:

  • limits.event.rateLimits
  • limits.message.rateLimits
  • limits.connection.rateLimits
  • limits.invoice.rateLimits
  • limits.admissionCheck.rateLimits
  • limits.invite.rateLimits
  • limits.admin.rateLimits and limits.admin.loginRateLimits

Suggested fix

In validateSettings(), next to the existing pow.periodMs check, iterate each rate-limit array and push a { path: 'limits.….rateLimits[i].period', message: 'period must be greater than 0' } issue when !(period > 0) — same style as the existing checks.


From Muse

Lenguaje dominante
TypeScript
Estrellas
829
Forks
234
Merge medio
4 d 5 h
PR fusionados (30 d)
22

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de cameri/nostream

Todos los issues de cameri/nostream

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.