diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.cpp index 6f684799bc..b64fea79cb 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.cpp @@ -10,7 +10,7 @@ IMAPFolders::IMAPFolders() { - + fHandlerList.AddItem(&fCapabilityHandler); } @@ -18,7 +18,7 @@ IMAPFolders::IMAPFolders(IMAPProtocol& connection) : IMAPProtocol(connection) { - + fHandlerList.AddItem(&fCapabilityHandler); } @@ -88,6 +88,11 @@ IMAPFolders::UnsubscribeFolder(const char* folder) status_t IMAPFolders::GetQuota(double& used, double& total) { + if (fCapabilityHandler.Capabilities() == "") + ProcessCommand(fCapabilityHandler.Command()); + if (fCapabilityHandler.Capabilities().FindFirst("QUOTA") < 0) + return B_ERROR; + GetQuotaCommand quotaCommand; status_t status = ProcessCommand("aCommand); if (status != B_OK) diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.h b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.h index e6e2cfe9ca..5d72745689 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.h +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPFolders.h @@ -43,6 +43,8 @@ public: private: status_t _GetAllFolders(StringList& folders); status_t _GetSubscribedFolders(StringList& folders); + + CapabilityHandler fCapabilityHandler; }; diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.cpp index 8b7a425345..a0a81962c3 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.cpp @@ -105,10 +105,8 @@ MailboxSelectHandler::Handle(const BString& response) } -CapabilityHandler::CapabilityHandler(IMAPMailbox& mailbox) +CapabilityHandler::CapabilityHandler() : - IMAPMailboxCommand(mailbox), - fCapabilities("") { diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.h b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.h index 10352cc6ad..b172294e3b 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.h +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPHandler.h @@ -59,9 +59,9 @@ private: }; -class CapabilityHandler : public IMAPMailboxCommand { +class CapabilityHandler : public IMAPCommand { public: - CapabilityHandler(IMAPMailbox& mailbox); + CapabilityHandler(); BString Command(); bool Handle(const BString& response); diff --git a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPMailbox.cpp b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPMailbox.cpp index 3ad46e15ed..310d3750e1 100644 --- a/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPMailbox.cpp +++ b/src/add-ons/mail_daemon/inbound_protocols/imap/imap_lib/IMAPMailbox.cpp @@ -33,7 +33,6 @@ IMAPMailbox::IMAPMailbox(IMAPStorage& storage) fStorage(storage), fMailboxSelectHandler(*this), - fCapabilityHandler(*this), fExistsHandler(*this), fExpungeHandler(*this), fFlagsHandler(*this),