diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/database/database.hpp | 1 | ||||
-rw-r--r-- | src/xmpp/biboumi_component.cpp | 8 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/database/database.hpp b/src/database/database.hpp index 810af16..fb62c34 100644 --- a/src/database/database.hpp +++ b/src/database/database.hpp @@ -22,6 +22,7 @@ class Database { public: using time_point = std::chrono::system_clock::time_point; + struct RecordNotFound: public std::exception {}; struct Uuid: Column<std::string> { static constexpr auto name = "uuid_"; }; diff --git a/src/xmpp/biboumi_component.cpp b/src/xmpp/biboumi_component.cpp index cd6d570..405ac15 100644 --- a/src/xmpp/biboumi_component.cpp +++ b/src/xmpp/biboumi_component.cpp @@ -467,8 +467,12 @@ void BiboumiComponent::handle_iq(const Stanza& stanza) #ifdef USE_DATABASE else if ((query = stanza.get_child("query", MAM_NS))) { - if (this->handle_mam_request(stanza)) - stanza_error.disable(); + try { + if (this->handle_mam_request(stanza)) + stanza_error.disable(); + } catch (const Database::RecordNotFound& exc) { + error_name = "item-not-found"; + } } else if ((query = stanza.get_child("query", MUC_OWNER_NS))) { |