~singpolyma/biboumi

2c4ffbf25ae2647c586c9069c182444152c28622 — louiz’ 2 years ago 8013bb1
Consider the nick change only if it is NOT a join
1 files changed, 13 insertions(+), 12 deletions(-)

M src/xmpp/biboumi_component.cpp
M src/xmpp/biboumi_component.cpp => src/xmpp/biboumi_component.cpp +13 -12
@@ 159,18 159,6 @@ void BiboumiComponent::handle_presence(const Stanza& stanza)
          const std::string own_nick = bridge->get_own_nick(iid);
          const XmlNode* x = stanza.get_child("x", MUC_NS);
          const IrcClient* irc = bridge->find_irc_client(iid.get_server());
          if (irc)
            {
              const auto chan = irc->find_channel(iid.get_local());
              if (chan->joined)
                bridge->send_irc_nick_change(iid, to.resource, from.resource);
              else if (!x)
                { // send an error if we are not joined yet, instead of treating it as a join
                  this->send_stanza_error("presence", from_str, to_str, id,
                                          "modify", "not-acceptable",
                                          "You are not joined to this MUC.");
                }
            }
          // if there is no <x/>, this is a presence status update, we don’t care about those
          if (x)
            {


@@ 202,6 190,19 @@ void BiboumiComponent::handle_presence(const Stanza& stanza)
              bridge->join_irc_channel(iid, to.resource, password ? password->get_inner(): "",
                                       from.resource, history_limit);
            }
          else
            {
              if (irc)
                {
                  const auto chan = irc->find_channel(iid.get_local());
                  if (chan && chan->joined)
                    bridge->send_irc_nick_change(iid, to.resource, from.resource);
                  else
                    { // send an error if we are not joined yet, instead of treating it as a join
                      this->send_stanza_error("presence", from_str, to_str, id, "modify", "not-acceptable", "You are not joined to this MUC.");
                    }
                }
            }
        }
      else if (type == "unavailable")
        {