client: check "expired" flag again in client_write_output()

When client_defer_output() aborts the connection to the client,
client_write_output() called client_write_deferred() anyway.  This
caused an assertion failure.  Fix it by checking for the "expired"
flag again after client_defer_output() returns.
This commit is contained in:
Max Kellermann 2009-06-04 08:59:33 +02:00
parent 427dd81678
commit faaf9dafe1

View File

@ -776,6 +776,9 @@ static void client_write_output(struct client *client)
client_defer_output(client, client->send_buf, client_defer_output(client, client->send_buf,
client->send_buf_used); client->send_buf_used);
if (client_is_expired(client))
return;
/* try to flush the deferred buffers now; the current /* try to flush the deferred buffers now; the current
server command may take too long to finish, and server command may take too long to finish, and
meanwhile try to feed output to the client, meanwhile try to feed output to the client,