fixed invalid received length
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 21 Nov 2004 20:02:08 +0000 (20:02 +0000)
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>
Sun, 21 Nov 2004 20:02:08 +0000 (20:02 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1155 c046a42c-6fe2-441c-8c8c-71466251a162

slirp/socket.c

index fe03d44..6713c4d 100644 (file)
@@ -175,8 +175,12 @@ soread(so)
         * a close will be detected on next iteration.
         * A return of -1 wont (shouldn't) happen, since it didn't happen above
         */
-       if (n == 2 && nn == iov[0].iov_len)
-          nn += recv(so->s, iov[1].iov_base, iov[1].iov_len,0);
+       if (n == 2 && nn == iov[0].iov_len) {
+            int ret;
+            ret = recv(so->s, iov[1].iov_base, iov[1].iov_len,0);
+            if (ret > 0)
+                nn += ret;
+        }
        
        DEBUG_MISC((dfd, " ... read nn = %d bytes\n", nn));
 #endif