~singpolyma/biboumi

e196d2f1f400f5c9634ed42fcbdf5c5fb63a13fb — Florent Le Coz 9 years ago 3b1bf74
Do not send data if we are connected, send it only once we actually are
M src/irc/irc_client.cpp => src/irc/irc_client.cpp +1 -0
@@ 45,6 45,7 @@ void IrcClient::on_connected()
  this->send_nick_command(this->username);
  this->send_user_command(this->username, this->username);
  this->send_gateway_message("Connected to IRC server.");
  this->send_pending_data();
}

void IrcClient::on_connection_close()

M src/network/socket_handler.cpp => src/network/socket_handler.cpp +8 -1
@@ 238,7 238,14 @@ void SocketHandler::send_data(std::string&& data)
  if (data.empty())
    return ;
  this->out_buf.emplace_back(std::move(data));
  this->poller->watch_send_events(this);
  if (this->connected)
    this->poller->watch_send_events(this);
}

void SocketHandler::send_pending_data()
{
  if (this->connected && !this->out_buf.empty())
    this->poller->watch_send_events(this);
}

bool SocketHandler::is_connected() const

M src/network/socket_handler.hpp => src/network/socket_handler.hpp +4 -0
@@ 52,6 52,10 @@ public:
   */
  void send_data(std::string&& data);
  /**
   * Watch the socket for send events, if our out buffer is not empty.
   */
  void send_pending_data();
  /**
   * Returns the socket that should be handled by the poller.
   */
  socket_t get_socket() const;

M src/xmpp/xmpp_component.cpp => src/xmpp/xmpp_component.cpp +4 -0
@@ 82,6 82,9 @@ void XmppComponent::on_connected()
  node["to"] = this->served_hostname;
  this->send_stanza(node);
  this->doc_open = true;
  // We may have some pending data to send: this happens when we try to send
  // some data before we are actually connected.  We send that data right now, if any
  this->send_pending_data();
}

void XmppComponent::on_connection_close()


@@ 161,6 164,7 @@ void XmppComponent::on_remote_stream_open(const XmlNode& node)
void XmppComponent::on_remote_stream_close(const XmlNode& node)
{
  log_debug("XMPP DOCUMENT CLOSE " << node.to_string());
  this->doc_open = false;
}

void XmppComponent::on_stanza(const Stanza& stanza)