summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/server.c b/src/server.c
index 9154a3c..7001b62 100644
--- a/src/server.c
+++ b/src/server.c
@@ -260,7 +260,10 @@ static ssize_t reread_cmd(struct server_conn *conn, size_t max)
*/
static ssize_t reread_n(struct server_conn *conn, size_t n)
{
- ssize_t r = reread(conn, n);
+ if (conn->strbuf.n >= n)
+ return n;
+
+ ssize_t r = reread(conn, n - conn->strbuf.n);
if (r < 0)
return r;