- ret = write(s,
- send_buf,
- sizeof(send_buf));
- assert_int_not_equal(ret, -1);
-
- ret = read(s,
- recv_buf,
- sizeof(recv_buf));
- assert_int_not_equal(ret, -1);
-
+ do {
+ ret = write(s,
+ send_buf + nwrote,
+ sizeof(send_buf) - nwrote);
+ assert_int_not_equal(ret, -1);
+ nwrote += ret;
+
+ ret = read(s,
+ recv_buf + nread,
+ sizeof(recv_buf) - nread);
+ assert_int_not_equal(ret, -1);
+ nread += ret;
+ } while (nread < sizeof(recv_buf) && nwrote < sizeof(send_buf));
+
+ assert_int_equal(nread, sizeof(send_buf));