diff options
author | Max Kellermann <max@duempel.org> | 2008-08-28 20:03:56 +0200 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2008-09-01 18:35:18 -0700 |
commit | d6c92ea1348730de5ed8d31b40c92eb5b8e71944 (patch) | |
tree | 82b070f01045e5fd527e51198848ef3c709caf7a /src | |
parent | 3682efe7a705043f9005c456cfc806aeefa788ff (diff) | |
download | mpd-d6c92ea1348730de5ed8d31b40c92eb5b8e71944.tar.gz mpd-d6c92ea1348730de5ed8d31b40c92eb5b8e71944.tar.xz mpd-d6c92ea1348730de5ed8d31b40c92eb5b8e71944.zip |
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.
Diffstat (limited to 'src')
-rw-r--r-- | src/client.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/client.c b/src/client.c index 6457fb373..531177ab2 100644 --- a/src/client.c +++ b/src/client.c @@ -719,7 +719,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); @@ -735,10 +735,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) |