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,
const void *data, size_t length)
{
struct sllnode *buf;
struct sllnode **buf_r;
assert(client->deferred_send != NULL);
@ -738,10 +738,10 @@ static void client_defer_output(struct client *client,
return;
}
buf = client->deferred_send;
while (buf->next)
buf = buf->next;
buf->next = new_sllnode(data, length);
buf_r = &client->deferred_send;
while (*buf_r != NULL)
buf_r = &(*buf_r)->next;
*buf_r = new_sllnode(data, length);
}
static void client_write_output(struct client *client)