~singpolyma/biboumi

5ef674c4862f1ad265e76ea6fabc20e180871243 — louiz’ 5 years ago e3ee824
Revert "Add a linger_time configuration option on IRC servers"

This reverts commit 5d801ddcd025f68d2ec91edf0462091a32c779c1.
M database/database.xml => database/database.xml +0 -1
@@ 24,7 24,6 @@
        <field name="realname" type="string" length="1024" default=""/>
        <field name="verifyCert" type="boolean" default="true"/>
        <field name="trustedFingerprint" type="string"/>
        <field name="lingerTime" type="integer" default="0"/>

        <field name="encodingOut" type="string" default="ISO-8859-1"/>
        <field name="encodingIn"  type="string" default="ISO-8859-1"/>

M src/bridge/bridge.cpp => src/bridge/bridge.cpp +1 -21
@@ 12,7 12,6 @@
#include <database/database.hpp>
#include "result_set_management.hpp"
#include <algorithm>
#include <utils/timed_events.hpp>

using namespace std::string_literals;



@@ 892,7 891,7 @@ void Bridge::send_muc_leave(const Iid& iid, const std::string& nick,
    }
  IrcClient* irc = this->find_irc_client(iid.get_server());
  if (self && irc && irc->number_of_joined_channels() == 0)
    this->quit_or_start_linger_timer(iid.get_server());
    irc->send_quit_command("");
}

void Bridge::send_nick_change(Iid&& iid,


@@ 1244,22 1243,3 @@ void Bridge::set_record_history(const bool val)
  this->record_history = val;
}
#endif

void Bridge::quit_or_start_linger_timer(const std::string& irc_hostname)
{
#ifdef USE_DATABASE
  auto options = Database::get_irc_server_options(this->get_bare_jid(),
                                                  irc_hostname);
  const auto timeout = std::chrono::seconds(options.lingerTime.value());
#else
  const auto timeout = 0s;
#endif

  const auto event_name = "IRCLINGER:" + irc_hostname + ".." + this->get_bare_jid();
  TimedEvent event(std::chrono::steady_clock::now() + timeout, [this, irc_hostname]() {
    IrcClient* irc = this->find_irc_client(irc_hostname);
    if (irc)
      irc->send_quit_command("");
  }, event_name);
  TimedEventsManager::instance().add_event(std::move(event));
}

M src/bridge/bridge.hpp => src/bridge/bridge.hpp +0 -5
@@ 236,11 236,6 @@ public:
#ifdef USE_DATABASE
  void set_record_history(const bool val);
#endif
  /**
   * Start a timer that will send a QUIT command after the
   * configured linger time is expired.
   */
  void quit_or_start_linger_timer(const std::string& irc_hostname);

private:
  /**

M src/xmpp/biboumi_adhoc_commands.cpp => src/xmpp/biboumi_adhoc_commands.cpp +0 -14
@@ 319,16 319,6 @@ void ConfigureIrcServerStep1(XmppComponent&, AdhocSession& session, XmlNode& com
      XmlSubNode encoding_in_value(encoding_in, "value");
      encoding_in_value.set_inner(options.encodingIn.value());
    }

  XmlSubNode linger_time(x, "field");
  linger_time["var"] = "linger_time";
  linger_time["type"] = "text-single";
  linger_time["desc"] = "The number of seconds to wait before sending a QUIT command, after the last channel on that server has been left.";
  linger_time["label"] = "Linger time";
  {
    XmlSubNode linger_time_value(linger_time, "value");
    linger_time_value.set_inner(std::to_string(options.lingerTime.value()));
  }
}

void ConfigureIrcServerStep2(XmppComponent&, AdhocSession& session, XmlNode& command_node)


@@ 408,10 398,6 @@ void ConfigureIrcServerStep2(XmppComponent&, AdhocSession& session, XmlNode& com
                   value && !value->get_inner().empty())
            options.encodingIn = value->get_inner();

          else if (field->get_tag("var") == "linger_time" &&
                   value && !value->get_inner().empty())
            options.lingerTime = value->get_inner();

        }

      options.update();

M tests/end_to_end/__main__.py => tests/end_to_end/__main__.py +0 -1
@@ 2277,7 2277,6 @@ if __name__ == '__main__':
                                             "/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='text-single'][@var='realname']/dataform:value[text()='realname']",
                                             "/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='text-single'][@var='encoding_in']/dataform:value[text()='latin-1']",
                                             "/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='text-single'][@var='encoding_out']/dataform:value[text()='UTF-8']",
                                             "/iq/commands:command/dataform:x[@type='form']/dataform:field[@type='text-single'][@var='linger_time']/dataform:value[text()='0']",
                                             "/iq/commands:command/commands:actions/commands:next",
                                             ),
                             after = partial(save_value, "sessionid", partial(extract_attribute, "/iq[@type='result']/commands:command[@node='configure']", "sessionid"))