Commit 163ace55 authored by louiz’'s avatar louiz’

Handle all unknown IRC command by forwarding the arguments as a message body

This way, the users can receive the result of any IRC command (although not
parsed nor formatted in anyway) when biboumi doesn’t support it

fix #2884
parent 0a6b673b
......@@ -8,6 +8,7 @@
#include <utils/tolower.hpp>
#include <utils/split.hpp>
#include <sstream>
#include <iostream>
#include <stdexcept>
......@@ -154,7 +155,11 @@ void IrcClient::parse_in_buffer(const size_t)
}
}
else
log_info("No handler for command " << message.command);
{
log_info("No handler for command " << message.command <<
", forwarding the arguments to the user");
this->on_unknown_message(message);
}
// Try to find a waiting_iq, which response will be triggered by this IrcMessage
this->bridge->trigger_on_irc_message(this->hostname, message);
}
......@@ -797,6 +802,22 @@ void IrcClient::on_user_mode(const IrcMessage& message)
" is [" + message.arguments[1] + "]");
}
void IrcClient::on_unknown_message(const IrcMessage& message)
{
if (message.arguments.size() < 2)
return ;
std::string from = message.prefix;
const std::string to = message.arguments[0];
std::stringstream ss;
for (auto it = message.arguments.begin() + 1; it != message.arguments.end(); ++it)
{
ss << *it;
if (it + 1 != message.arguments.end())
ss << " ";
}
this->bridge->send_xmpp_message(this->hostname, from, ss.str());
}
size_t IrcClient::number_of_joined_channels() const
{
if (this->dummy_channel.joined)
......
......@@ -211,6 +211,7 @@ public:
*/
void on_channel_mode(const IrcMessage& message);
void on_quit(const IrcMessage& message);
void on_unknown_message(const IrcMessage& message);
/**
* Return the number of joined channels
*/
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment