client: client_defer_output() can create the first defer buffer

client_defer_output() was designed to add new buffers to an existing
deferred_send buffer.  Tweak it and allow it to create a new buffer
list.
This commit is contained in:
Max Kellermann 2008-08-28 20:03:56 +02:00
parent 20f06162dd
commit 4516bd117c

View File

@ -722,7 +722,7 @@ int client_print(int fd, const char *buffer, size_t buflen)
static void client_defer_output(struct client *client, static void client_defer_output(struct client *client,
const void *data, size_t length) const void *data, size_t length)
{ {
struct sllnode *buf; struct sllnode **buf_r;
assert(client->deferred_send != NULL); assert(client->deferred_send != NULL);
@ -738,10 +738,10 @@ static void client_defer_output(struct client *client,
return; return;
} }
buf = client->deferred_send; buf_r = &client->deferred_send;
while (buf->next) while (*buf_r != NULL)
buf = buf->next; buf_r = &(*buf_r)->next;
buf->next = new_sllnode(data, length); *buf_r = new_sllnode(data, length);
} }
static void client_write_output(struct client *client) static void client_write_output(struct client *client)