Commit 16be9af3 authored by louiz’'s avatar louiz’

Send unavailable presence to all muc when the IRC server closes the connection

parent aeae88dd
......@@ -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);
}
......
......@@ -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--;
}
}
......
......@@ -100,6 +100,7 @@ void SocketHandler::on_send()
if (res == -1)
{
log_error("send failed: " << strerror(errno));
this->on_connection_close();
this->close();
}
else
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment