Commit 4516bd11 authored by Max Kellermann's avatar Max Kellermann

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.
parent 20f06162
...@@ -722,7 +722,7 @@ int client_print(int fd, const char *buffer, size_t buflen) ...@@ -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, ...@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment