]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
Refresh of waitall-buggy
authorSean Hefty <sean.hefty@intel.com>
Thu, 16 Aug 2012 21:23:58 +0000 (14:23 -0700)
committerSean Hefty <sean.hefty@intel.com>
Thu, 16 Aug 2012 21:23:58 +0000 (14:23 -0700)
src/rsocket.c

index 13fd0da048b65ea174a2c3c9ba3de8dd281f6bab..8c9e84759f7294385086986684d9cbb597289357 100644 (file)
@@ -1143,7 +1143,7 @@ ssize_t rrecv(int socket, void *buf, size_t len, int flags)
                if (flags & MSG_PEEK) {
                        // fixme or will peek same data in waitall loop
                        left -= rs_peek(rs, &buf, left);
-                       continue;
+                       break;
                }
 
                for (; left && rs_have_rdata(rs); left -= rsize) {
@@ -1164,12 +1164,13 @@ ssize_t rrecv(int socket, void *buf, size_t len, int flags)
                                buf += end_size;
                                rsize -= end_size;
                                left -= end_size;
+                               rs->rbuf_bytes_avail += end_size;
                        }
                        memcpy(buf, &rs->rbuf[rs->rbuf_offset], rsize);
                        rs->rbuf_offset += rsize;
                        buf += rsize;
+                       rs->rbuf_bytes_avail += rsize;
                }
-               rs->rbuf_bytes_avail += len - left; // <- fixme in waitall loop
 
        } while ((flags & MSG_WAITALL) && (rs->state & rs_connect_rd) && left);