client: check "expired" after command execution

The old code tried to write a response to the client, without even
checking if it was already closed.  Now that we have added more
assertions, these may fail...  perform the "expired" check earlier.
This commit is contained in:
Max Kellermann 2008-08-29 09:36:40 +02:00
parent 76ecc30243
commit e743d71b89

View File

@ -343,11 +343,14 @@ static int client_process_line(struct client *client)
DEBUG("client %i: process command "
"list returned %i\n", client->num, ret);
if (ret == COMMAND_RETURN_CLOSE ||
client_is_expired(client)) {
client_close(client);
return COMMAND_RETURN_CLOSE;
}
if (ret == 0)
commandSuccess(client->fd);
else if (ret == COMMAND_RETURN_CLOSE
|| client_is_expired(client))
client_close(client);
client_write_output(client);
free_cmd_list(client->cmd_list);
@ -385,12 +388,16 @@ static int client_process_line(struct client *client)
&(client->permission), line);
DEBUG("client %i: command returned %i\n",
client->num, ret);
if (ret == COMMAND_RETURN_CLOSE ||
client_is_expired(client)) {
client_close(client);
return COMMAND_RETURN_CLOSE;
}
if (ret == 0)
commandSuccess(client->fd);
else if (ret == COMMAND_RETURN_CLOSE
|| client_is_expired(client)) {
client_close(client);
}
client_write_output(client);
}
}