- ret = recv_buffer(ct->rc4c.fd, buf, len);
- else
- ret = rc4_recv_buffer(&ct->rc4c, buf, len);
+ return read_nonblock(ct->rc4c.fd, buf, sz, rfds, n);
+
+ *n = 0;
+ ret = rc4_recv_buffer(&ct->rc4c, buf, sz);
+ /*
+ * rc4_recv_buffer is used with blocking fds elsewhere, so it
+ * does not use the nonblock-API. Therefore we need to
+ * check for EOF and EAGAIN.
+ */