🐛 `QUOTA` support is broken for types other than `STORAGE`
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 5/5
- Geschätzter Aufwand
- Über eine Woche
- Anfängerfreundlichkeit
- 30/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- ruby
- Bereich
- api, networking
Rechercherichtung
Beginne mit dem Quota-Response-Parser und den Einstiegspunkten Net::IMAP #getquota, #getquotaroot und #setquota und verwende RFC2087 und RFC9208 als Protokollreferenzen. Als abgeschlossen gilt die Aufgabe, wenn mehrere Ressourcentypen ohne Absturz geparst werden, QuotaResponse und abwärtskompatibles Verhalten über die Konfiguration unterstützt werden und das Setzen von Quotas die angeforderten Ressourcentypen akzeptiert.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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
- Vorherrschende Sprache
- Ruby
- Sterne
- 121
- Forks
- 47
- Ø Merge
- 19 Std. 25 Min.
- Gemergte PRs (30 T.)
- 3
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus ruby/net-imap
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
-
Cannot use FakeServerOffen
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 25/100
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 15/100
-
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 20/100
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
Ähnliche Issues
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
Maintainer antworten meist innerhalb von 1 Tag
-
Websockify heartbeat for vnc_containerEvtl. vergeben @robinkar hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
Maintainer antworten meist innerhalb von 1 Tag
-
needs verification
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
Maintainer antworten meist innerhalb von 7 Tagen
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
akitaonrails/ai-book-2026#13 ·
-
Mend: dependency security vulnerability
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 63/100
Maintainer antworten meist innerhalb von 1 Tag