validateSettings() doesn't validate rateLimits[].period — zero period silently degrades to a 1ms backoff hint
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 82/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- typescript
- Domaine
- backend
Piste de recherche
Commence dans src/utils/settings-config.ts, où validateSettings() vérifie déjà pow.periodMs > 0, puis lis le type RateLimit dans src/@types/settings.ts. Ajoute une boucle à côté de cette vérification sur chaque tableau limits.*.rateLimits (ainsi que limits.admin.loginRateLimits), en ajoutant un problème { path, message } lorsque period n'est pas supérieur à 0. C'est terminé lorsqu'une période nulle ou négative fait échouer la validation au démarrage, avec le chemin indiqué dans le problème, et que les tests existants des paramètres passent toujours.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.rateLimitslimits.message.rateLimitslimits.connection.rateLimitslimits.invoice.rateLimitslimits.admissionCheck.rateLimitslimits.invite.rateLimitslimits.admin.rateLimitsandlimits.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
- Langage dominant
- TypeScript
- Étoiles
- 829
- Forks
- 234
- Merge moyen
- 4 j 5 h
- PR mergées (30 j)
- 22
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de cameri/nostream
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
feat(nip77): negentropy reconciliation core for the PostgreSQL backendPeut-être pris @Priyanshubhartistm l’a pris il y a 2 jours. Ouverteenhancement
cameri/nostream#801 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
feat(admin): bounded NIP-66 probe history and Network Health timelinePeut-être pris @Ferryx349 l’a pris il y a 2 jours. OuverteAdmin Console enhancement
cameri/nostream#800 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Store relay settings overrides in PostgreSQL (SETTINGS_BACKEND=db)Peut-être à nouveau libre @Ferryx349 l’a pris il y a 35 jours, et aucune pull request n’est ouverte. Ouverteenhancement
cameri/nostream#757 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
feat(nip85): Web-of-Trust spam mitigation enginePeut-être à nouveau libre @Ferryx349 l’a pris il y a 66 jours, et aucune pull request n’est ouverte. Ouverteenhancement
cameri/nostream#720 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de cameri/nostream
Issues similaires
-
effort:S priority:P2
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
dam-agents/dam#4562 ·
Les mainteneurs répondent en général sous 1 jour
-
bug p3 triaged
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour
-
bug javascript P2-medium python release:v3.1
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
adrirubio/claude-deck#546 ·
Les mainteneurs répondent en général sous 1 jour
-
area: desktop area: website priority: P2 type: feature
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
appandflow/stim#3411 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour