Hi:
I have some confusion about sending reply to client。In the process of sending the
response,fouction svc_ioq_flushv() would be called. Here, use the writev() system call to
send reply via sockfd. I think we're using non-blocking socket here, but comment is
"/* blocking write */" and the transport is finish when return < 0. Why?
result = writev(xprt->xp_fd, wiov, iw);
remaining -= result;
if (result == fbytes) {
wiov += iw - 1;
iw = 0;
continue;
}
if (unlikely(result < 0)) {
__warnx(TIRPC_DEBUG_FLAG_ERROR,
"%s() writev failed (%d)\n",
__func__, errno);
cfconn_set_dead(xprt);
break;
}
I think when the return code is less than 0, we should judge whether the
error code is EAGAIN.