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) {
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);