Avoid the "poller_fd::closed" feature
Reliability enhancement for Linux. This feature was created for ponymap, however we don't care about an extra syscall in most places. Doing it right even saves lines.
This commit is contained in:
parent
ec842db0fb
commit
c3d62b8799
|
@ -1862,9 +1862,8 @@ server_destroy (struct server *self)
|
||||||
|
|
||||||
if (self->socket != -1)
|
if (self->socket != -1)
|
||||||
{
|
{
|
||||||
xclose (self->socket);
|
|
||||||
self->socket_event.closed = true;
|
|
||||||
poller_fd_reset (&self->socket_event);
|
poller_fd_reset (&self->socket_event);
|
||||||
|
xclose (self->socket);
|
||||||
}
|
}
|
||||||
str_free (&self->read_buffer);
|
str_free (&self->read_buffer);
|
||||||
str_free (&self->write_buffer);
|
str_free (&self->write_buffer);
|
||||||
|
@ -4844,13 +4843,11 @@ irc_destroy_transport (struct server *s)
|
||||||
s->transport->cleanup (s);
|
s->transport->cleanup (s);
|
||||||
s->transport = NULL;
|
s->transport = NULL;
|
||||||
|
|
||||||
|
poller_fd_reset (&s->socket_event);
|
||||||
xclose (s->socket);
|
xclose (s->socket);
|
||||||
s->socket = -1;
|
s->socket = -1;
|
||||||
s->state = IRC_DISCONNECTED;
|
s->state = IRC_DISCONNECTED;
|
||||||
|
|
||||||
s->socket_event.closed = true;
|
|
||||||
poller_fd_reset (&s->socket_event);
|
|
||||||
|
|
||||||
str_reset (&s->read_buffer);
|
str_reset (&s->read_buffer);
|
||||||
str_reset (&s->write_buffer);
|
str_reset (&s->write_buffer);
|
||||||
}
|
}
|
||||||
|
|
7
kike.c
7
kike.c
|
@ -693,9 +693,8 @@ server_context_free (struct server_context *self)
|
||||||
|
|
||||||
for (size_t i = 0; i < self->n_listen_fds; i++)
|
for (size_t i = 0; i < self->n_listen_fds; i++)
|
||||||
{
|
{
|
||||||
xclose (self->listen_fds[i]);
|
|
||||||
self->listen_events[i].closed = true;
|
|
||||||
poller_fd_reset (&self->listen_events[i]);
|
poller_fd_reset (&self->listen_events[i]);
|
||||||
|
xclose (self->listen_fds[i]);
|
||||||
}
|
}
|
||||||
free (self->listen_fds);
|
free (self->listen_fds);
|
||||||
free (self->listen_events);
|
free (self->listen_events);
|
||||||
|
@ -745,9 +744,8 @@ irc_initiate_quit (struct server_context *ctx)
|
||||||
|
|
||||||
for (size_t i = 0; i < ctx->n_listen_fds; i++)
|
for (size_t i = 0; i < ctx->n_listen_fds; i++)
|
||||||
{
|
{
|
||||||
xclose (ctx->listen_fds[i]);
|
|
||||||
ctx->listen_events[i].closed = true;
|
|
||||||
poller_fd_reset (&ctx->listen_events[i]);
|
poller_fd_reset (&ctx->listen_events[i]);
|
||||||
|
xclose (ctx->listen_fds[i]);
|
||||||
}
|
}
|
||||||
ctx->n_listen_fds = 0;
|
ctx->n_listen_fds = 0;
|
||||||
|
|
||||||
|
@ -933,6 +931,7 @@ client_kill (struct client *c, const char *reason)
|
||||||
xclose (c->socket_fd);
|
xclose (c->socket_fd);
|
||||||
c->socket_fd = -1;
|
c->socket_fd = -1;
|
||||||
|
|
||||||
|
// We don't fork any children, this is okay
|
||||||
c->socket_event.closed = true;
|
c->socket_event.closed = true;
|
||||||
poller_fd_reset (&c->socket_event);
|
poller_fd_reset (&c->socket_event);
|
||||||
client_cancel_timers (c);
|
client_cancel_timers (c);
|
||||||
|
|
|
@ -203,8 +203,8 @@ bot_context_free (struct bot_context *self)
|
||||||
|
|
||||||
if (self->irc_fd != -1)
|
if (self->irc_fd != -1)
|
||||||
{
|
{
|
||||||
xclose (self->irc_fd);
|
|
||||||
poller_fd_reset (&self->irc_event);
|
poller_fd_reset (&self->irc_event);
|
||||||
|
xclose (self->irc_fd);
|
||||||
}
|
}
|
||||||
if (self->ssl)
|
if (self->ssl)
|
||||||
SSL_free (self->ssl);
|
SSL_free (self->ssl);
|
||||||
|
@ -1585,13 +1585,11 @@ on_irc_disconnected (struct bot_context *ctx)
|
||||||
ctx->ssl_ctx = NULL;
|
ctx->ssl_ctx = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
poller_fd_reset (&ctx->irc_event);
|
||||||
xclose (ctx->irc_fd);
|
xclose (ctx->irc_fd);
|
||||||
ctx->irc_fd = -1;
|
ctx->irc_fd = -1;
|
||||||
ctx->irc_registered = false;
|
ctx->irc_registered = false;
|
||||||
|
|
||||||
ctx->irc_event.closed = true;
|
|
||||||
poller_fd_reset (&ctx->irc_event);
|
|
||||||
|
|
||||||
// TODO: inform plugins about the disconnect event
|
// TODO: inform plugins about the disconnect event
|
||||||
|
|
||||||
// All of our timers have lost their meaning now
|
// All of our timers have lost their meaning now
|
||||||
|
|
Loading…
Reference in New Issue