Prevent from renaming 'INBOX' folder in IMAP (illegal_operation exception).

This commit is contained in:
Vincent Richard 2004-11-14 14:31:23 +00:00
parent 85dfb65a7f
commit de09abb036
2 changed files with 18 additions and 0 deletions

View File

@ -415,6 +415,22 @@ public:
};
/** Illegal operation: cannot run this operation on the object.
*/
class illegal_operation : public messaging_exception
{
public:
illegal_operation(const string& msg = "")
: messaging_exception(msg.empty()
? "Illegal operation."
: "Illegal operation: " + msg + "."
) {}
~illegal_operation() throw() {}
};
/** Command error: operation failed (this is specific to the underlying protocol).
*/

View File

@ -1228,6 +1228,8 @@ void IMAPFolder::rename(const folder::path& newPath)
throw exceptions::illegal_state("Store disconnected");
else if (isOpen())
throw exceptions::illegal_state("Folder open");
else if (m_path.getSize() == 1 && m_name.getBuffer() == "INBOX")
throw exceptions::illegal_operation("Cannot rename 'INBOX' folder");
// Build the request text
std::ostringstream command;