Instead of putting dead clients on a list and checking it every loop,

use event_once to queue a callback to deal with them. Also dead clients
with references would never actually be freed because the wrap-up
functions (the callback for stdin, or status_prompt_clear) would never
be called. So call them in server_client_lost.
This commit is contained in:
nicm
2015-06-05 18:01:12 +00:00
parent b0782df8a6
commit 8c93b768e4
5 changed files with 37 additions and 16 deletions

View File

@ -132,7 +132,7 @@ cmd_load_buffer_callback(struct client *c, int closed, void *data)
return;
c->stdin_callback = NULL;
c->references--;
server_client_deref(c);
if (c->flags & CLIENT_DEAD)
return;