🐛 `QUOTA` support is broken for types other than `STORAGE`
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 30/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- À l'abandon
- Stack technique
- ruby
- Domaine
- api, networking
Piste de recherche
Commencez par l’analyseur de réponses de quota et les points d’entrée Net::IMAP #getquota, #getquotaroot et #setquota, en utilisant RFC2087 et RFC9208 comme références du protocole. Le travail est considéré comme terminé lorsque plusieurs types de ressources sont analysés sans plantage, que QuotaResponse et le comportement rétrocompatible sont pris en charge via la configuration, et que la définition des quotas accepte les types de ressources demandés.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Support for the QUOTA extension is broken in several ways: it assumes STORAGE is the only possible quota resource type (which was not true, even for RFC2087) and the response parser will crash the connection if multiple resource types are returned. Fixing this is backward incompatible, so it will need to be hidden behind new config attribute.
Response Parser
Currently, the response parser for quota-response only allows zero or one quota-resource. It implicitly assumes that resource type is STORAGE, so it doesn't store the resource type. And it crashes for more than one resource type.
-
QUOTAresponse should be parsed consistently withRFC2087andRFC9208, into a newQuotaResponsetype.
Response Data
MailboxQuota must be deprecated: the #mailbox attribute is misleadingly named (it should be #quota_root), the class is misleadingly named (again: it provides information about a "quota root", which does not have a 1-to-1 relationship with mailbox), and it can only list usage and limit for a single resource type
-
QuotaResponse = Data.define(:quota_root, :resources)-
#to_deprecated_mailbox_quotafor backwards compatibility
-
-
QuotaResponse::Resource = Data.define(:name, :usage, :limit)
Net::IMAP command methods
-
#getquota: Useuse_deprecated_mailbox_quotaconfig:- when
:silent, return only theSTORAGEresource (nilif noSTORAGEresource) - when
true, same as:silentbut issue a warning for nonSTORAGEresource types - when
false, returnQuotaResponserather thanMailboxQuota
- when
-
#getquotaroot: Useuse_deprecated_mailbox_quotaconfig (same as#getquota) -
#setquota: support any number of any resource types via*restargs
Additional
Separately from this bug, there are some other QUOTA related issues (TODO: move these to separate issues/PRs):
- RFC9208 support
- new capabilities:
QUOTA=RES-*andQUOTASET- document at class level, and on all three quota methods
-
QuotaResponse: Add accessors "attributes" for every type in the IANA quota resource type registry:-
def storage = resources.find { "STORAGE".casecmp?(it.name) } -
def message = resources.find { "MESSAGE".casecmp?(it.name) } -
def mailbox = resources.find { "MAILBOX".casecmp?(it.name) } -
def annotation_storage = resources.find { "ANNOTATION-STORAGE".casecmp?(it.name) }
-
- new response code:
OVERQUOTA- document on
ResponseCodeclass - add (trivial) support in response parser
- document on
-
#setquota:- support IANA-registered resource types via keyword args
- new capabilities:
-
#getquotaroot:- Rather than return an array of mixed
MailboxQuotaRootandQuotaResponseobjects, return a single hash-like object that combines them.-
Config#getquotaroot_returns_quotaroot_data
-
-
Config#setquota_returns_quota_responses=> return matching untaggedQUOTAresponses
- Rather than return an array of mixed
- Langage dominant
- Ruby
- Étoiles
- 121
- Forks
- 47
- Merge moyen
- 19 h 25 min
- PR mergées (30 j)
- 3
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
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 ruby/net-imap
-
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
-
Cannot use FakeServerOuverte
Difficulté 3/5 1-2 jours Accessibilité débutants 25/100
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 15/100
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 20/100
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
Toutes les issues de ruby/net-imap
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
Les mainteneurs répondent en général sous 1 jour
-
Websockify heartbeat for vnc_containerPeut-être pris @robinkar l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
Les mainteneurs répondent en général sous 1 jour
-
needs verification
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 7 jours
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
akitaonrails/ai-book-2026#13 ·
-
Mend: dependency security vulnerability
Difficulté 2/5 1-3 heures Accessibilité débutants 63/100
Les mainteneurs répondent en général sous 1 jour