~singpolyma/biboumi

e971f64f92c640d3ee634b01eeba7fbf056fdaac — Florent Le Coz 9 years ago 44b72b7
Catch all exception produced by a received message (irc or xmpp)
2 files changed, 14 insertions(+), 2 deletions(-)

M src/irc/irc_client.cpp
M src/xmpp/xmpp_parser.cpp
M src/irc/irc_client.cpp => src/irc/irc_client.cpp +7 -1
@@ 93,7 93,13 @@ void IrcClient::parse_in_buffer(const size_t)
      this->in_buf = this->in_buf.substr(pos + 2, std::string::npos);
      auto cb = irc_callbacks.find(message.command);
      if (cb != irc_callbacks.end())
        (this->*(cb->second))(message);
        {
          try {
            (this->*(cb->second))(message);
          } catch (const std::exception& e) {
            log_error("Unhandled exception: " << e.what());
          }
        }
      else
        log_info("No handler for command " << message.command);
    }

M src/xmpp/xmpp_parser.cpp => src/xmpp/xmpp_parser.cpp +7 -1
@@ 131,7 131,13 @@ void XmppParser::char_data(const XML_Char* data, int len)
void XmppParser::stanza_event(const Stanza& stanza) const
{
  for (const auto& callback: this->stanza_callbacks)
    callback(stanza);
    {
      try {
        callback(stanza);
      } catch (const std::exception& e) {
        log_debug("Unhandled exception: " << e.what());
      }
    }
}

void XmppParser::stream_open_event(const XmlNode& node) const