In fixed mode, server messages come from biboumi’s hostname directly

Instead of irc.example.com@biboumi, because that’s actually user named
“irc.example.com”, in that case.
And that fixes the raw messages in fixed mode.

fix #3286
This commit is contained in:
louiz’
2017-08-27 14:32:29 +02:00
parent 2c717d347d
commit 25243f53c2
4 changed files with 67 additions and 29 deletions
+4 -1
View File
@@ -281,6 +281,7 @@ void BiboumiComponent::handle_message(const Stanza& stanza)
{
if (body && !body->get_inner().empty())
{
const auto fixed_irc_server = Config::get("fixed_irc_server", "");
// a message for nick!server
if (iid.type == Iid::Type::User && !iid.get_local().empty())
{
@@ -296,9 +297,11 @@ void BiboumiComponent::handle_message(const Stanza& stanza)
bridge->set_preferred_from_jid(user_iid.get_local(), to_str);
}
else if (iid.type == Iid::Type::Server)
bridge->send_raw_message(iid.get_server(), body->get_inner());
else if (iid.type == Iid::Type::None && !fixed_irc_server.empty())
{ // Message sent to the server JID
// Convert the message body into a raw IRC message
bridge->send_raw_message(iid.get_server(), body->get_inner());
bridge->send_raw_message(fixed_irc_server, body->get_inner());
}
}
}
+6 -1
View File
@@ -277,7 +277,12 @@ void XmppComponent::send_message(const std::string& from, Xmpp::body&& body, con
if (fulljid)
message["from"] = from;
else
message["from"] = from + "@" + this->served_hostname;
{
if (!from.empty())
message["from"] = from + "@" + this->served_hostname;
else
message["from"] = this->served_hostname;
}
if (!type.empty())
message["type"] = type;
XmlSubNode body_node(message, "body");