diff options
-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 aa7194502..b0cd8c8d7 100644 --- a/src/client.c +++ b/src/client.c @@ -759,19 +759,19 @@ static void client_write_output(struct client *client) void client_write(struct client *client, const char *buffer, size_t buflen) { - size_t copylen; - /* if the client is going to be closed, do nothing */ if (client_is_expired(client)) return; while (buflen > 0 && !client_is_expired(client)) { - size_t left; + size_t copylen; assert(client->send_buf_used < sizeof(client->send_buf)); - left = sizeof(client->send_buf) - client->send_buf_used; - copylen = buflen > left ? left : buflen; + copylen = sizeof(client->send_buf) - client->send_buf_used; + if (copylen > buflen) + copylen = buflen; + memcpy(client->send_buf + client->send_buf_used, buffer, copylen); buflen -= copylen; |