From dd64744e69a485897e78ec86da8a25cab8ec94f5 Mon Sep 17 00:00:00 2001 From: Clemens Zeidler Date: Wed, 16 Mar 2011 20:24:13 +0000 Subject: [PATCH] Check first if the QUOTA extension is available. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40979 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../inbound_protocols/imap/imap_lib/IMAPFolders.cpp | 9 +++++++-- .../inbound_protocols/imap/imap_lib/IMAPFolders.h | 2 ++ .../inbound_protocols/imap/imap_lib/IMAPHandler.cpp | 4 +--- .../inbound_protocols/imap/imap_lib/IMAPHandler.h | 4 ++-- .../inbound_protocols/imap/imap_lib/IMAPMailbox.cpp | 1 - 5 files changed, 12 insertions(+), 8 deletions(-) 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),