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

@ -117,7 +117,7 @@ cmd_confirm_before_free(void *data)
struct cmd_confirm_before_data *cdata = data;
struct client *c = cdata->client;
c->references--;
server_client_deref(c);
free(cdata->cmd);
free(cdata);