🐛 `QUOTA` support is broken for types other than `STORAGE`
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 30/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Stack tecnológico
- ruby
- Área
- api, networking
Línea de trabajo
Comienza con el analizador de respuestas de cuota y los puntos de entrada Net::IMAP #getquota, #getquotaroot y #setquota, utilizando RFC2087 y RFC9208 como referencias del protocolo. Se considera terminado cuando se puedan analizar varios tipos de recursos sin que se produzcan errores, QuotaResponse y el comportamiento compatible con versiones anteriores estén disponibles mediante la configuración, y la configuración de cuotas acepte los tipos de recursos solicitados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Ruby
- Estrellas
- 121
- Forks
- 47
- Merge medio
- 19 h 25 min
- PR fusionados (30 d)
- 3
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de ruby/net-imap
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
-
Cannot use FakeServerAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 25/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 15/100
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
Todos los issues de ruby/net-imap
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
Websockify heartbeat for vnc_containerPosiblemente ocupada @robinkar la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
needs verification
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 7 días
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 88/100
akitaonrails/ai-book-2026#13 ·
-
Mend: dependency security vulnerability
Dificultad 2/5 1-3 horas Aptitud para principiantes 63/100
Los mantenedores suelen responder en 1 día