Fix the condition for stopping the writev_retry.
authorYousong Zhou <yszhou4tech@gmail.com>
Thu, 25 Jul 2013 12:38:08 +0000 (20:38 +0800)
committerFelix Fietkau <nbd@openwrt.org>
Sun, 4 Aug 2013 08:53:24 +0000 (10:53 +0200)
All iov's were sent only after the last were sent (iov_len == 0). We
could have 'cur_len == 0' if the sent iov's were sent wholly but not all
iov's were sent (how about all but the last).

Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
libubus-io.c

index ca5fdaf..09f2dbf 100644 (file)
@@ -77,7 +77,7 @@ static int writev_retry(int fd, struct iovec *iov, int iov_len)
                        cur_len -= iov->iov_len;
                        iov_len--;
                        iov++;
-                       if (!cur_len || !iov_len)
+                       if (!iov_len)
                                return len;
                }
                iov->iov_len -= cur_len;