~singpolyma/biboumi

16be9af3fcd23fa8590692cbe84af20cfe6a60b2 — Florent Le Coz 8 years ago aeae88d
Send unavailable presence to all muc when the IRC server closes the connection
3 files changed, 7 insertions(+), 2 deletions(-)

M src/irc/irc_client.cpp
M src/network/poller.cpp
M src/network/socket_handler.cpp
M src/irc/irc_client.cpp => src/irc/irc_client.cpp +2 -0
@@ 46,6 46,8 @@ void IrcClient::on_connection_close()
{
  static const std::string message = "Connection closed by remote server.";
  this->send_gateway_message(message);
  const IrcMessage error{"ERROR", {message}};
  this->on_error(error);
  log_warning(message);
}


M src/network/poller.cpp => src/network/poller.cpp +4 -2
@@ 155,13 155,15 @@ int Poller::poll(const std::chrono::milliseconds& timeout)
      else if (this->fds[i].revents & POLLIN)
        {
          auto socket_handler = this->socket_handlers.at(this->fds[i].fd);
          socket_handler->on_recv();
          if (socket_handler->is_connected())
            socket_handler->on_recv();
          nb_events--;
        }
      else if (this->fds[i].revents & POLLOUT)
        {
          auto socket_handler = this->socket_handlers.at(this->fds[i].fd);
          socket_handler->on_send();
          if (socket_handler->is_connected())
            socket_handler->on_send();
          nb_events--;
        }
    }

M src/network/socket_handler.cpp => src/network/socket_handler.cpp +1 -0
@@ 100,6 100,7 @@ void SocketHandler::on_send()
  if (res == -1)
    {
      log_error("send failed: " << strerror(errno));
      this->on_connection_close();
      this->close();
    }
  else