Fix double-free on failed server_client_close
Even if server_client_close fails, it is needed for client_free to remove the dangling reference from h->clients.
This commit is contained in:
parent
65031ca350
commit
59a67a7541
|
@ -152,13 +152,13 @@ static void client_free(struct client *const c)
|
|||
static int remove_client_from_list(struct handler *const h,
|
||||
struct client *const c)
|
||||
{
|
||||
int ret = -1;
|
||||
int ret = 0;
|
||||
|
||||
if (server_client_close(h->server, c->c))
|
||||
{
|
||||
fprintf(stderr, "%s: server_client_close failed\n",
|
||||
__func__);
|
||||
goto end;
|
||||
ret = -1;
|
||||
}
|
||||
|
||||
for (struct client *cl = h->clients, *prev = NULL; cl;
|
||||
|
@ -175,9 +175,6 @@ static int remove_client_from_list(struct handler *const h,
|
|||
}
|
||||
}
|
||||
|
||||
ret = 0;
|
||||
|
||||
end:
|
||||
client_free(c);
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue