From: Sean Hefty Date: Thu, 16 Aug 2012 21:23:58 +0000 (-0700) Subject: Refresh of waitall-buggy X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=3226b1f523058674e3040ef4d3e19b58d71300a6;p=~shefty%2Flibrdmacm.git Refresh of waitall-buggy --- diff --git a/src/rsocket.c b/src/rsocket.c index 13fd0da0..8c9e8475 100644 --- a/src/rsocket.c +++ b/src/rsocket.c @@ -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);