aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/exception.hpp16
-rw-r--r--src/messaging/IMAPFolder.cpp2
2 files changed, 18 insertions, 0 deletions
diff --git a/src/exception.hpp b/src/exception.hpp
index 815fd1d4..41e113ac 100644
--- a/src/exception.hpp
+++ b/src/exception.hpp
@@ -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).
*/
diff --git a/src/messaging/IMAPFolder.cpp b/src/messaging/IMAPFolder.cpp
index 4aef1afe..7544dc2c 100644
--- a/src/messaging/IMAPFolder.cpp
+++ b/src/messaging/IMAPFolder.cpp
@@ -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;