version 1.12, 2013/11/11 22:48:53
|
version 1.12.4.1, 2013/11/14 22:29:31
|
Line 223 rpc_Write(int sock, int type, int flags, sockaddr_t *
|
Line 223 rpc_Write(int sock, int type, int flags, sockaddr_t *
|
|
|
pfd.fd = sock; |
pfd.fd = sock; |
pfd.events = POLLOUT; |
pfd.events = POLLOUT; |
| for (len = blen; len > 0; len -= ret, buf += ret) { |
if (type == SOCK_STREAM) { | if ((ret = poll(&pfd, 1, DEF_RPC_TIMEOUT * 1000)) < 1 || |
for (len = blen; len > 0; len -= ret, buf += ret) { | pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) { |
if ((ret = poll(&pfd, 1, DEF_RPC_TIMEOUT * 1000)) < 1 || | if (!ret) |
pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) { | continue; |
if (!ret) | if (ret > 0) |
continue; | rpc_SetErr(EPIPE, "Disconnected RPC session\n"); |
if (ret > 0) | else |
rpc_SetErr(EPIPE, "Disconnected RPC session\n"); | |
else | |
LOGERR; | |
return -1; | |
} else | |
ret = send(sock, buf, len, flags); | |
if (ret == -1) { | |
LOGERR; |
LOGERR; |
return -1; | return -1; |
} | |
} |
} |
if (ret > -1) | if (type == SOCK_STREAM) |
ret = blen - len; | ret = send(sock, buf, len, flags); |
} else if (sa) { | else if (sa) |
do { | ret = sendto(sock, buf, len, flags, &sa->sa, sa->sa.sa_len); |
if ((ret = poll(&pfd, 1, DEF_RPC_TIMEOUT * 1000)) < 1 || | else { |
pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) { | rpc_SetErr(EINVAL, "Invalid argument(s)!"); |
if (!ret) | return -1; |
continue; | } |
if (ret > 0) | if (ret == -1) { |
rpc_SetErr(EPIPE, "Disconnected RPC session\n"); | LOGERR; |
else | return -1; |
LOGERR; | } |
return -1; | |
} else | |
ret = sendto(sock, buf, blen, flags, &sa->sa, sa->sa.sa_len); | |
} while (0); | |
} else { | |
rpc_SetErr(EINVAL, "Invalid argument(s)!"); | |
return -1; | |
} |
} |
if (ret == -1) { | ret = blen - len; |
LOGERR; | if (ret != blen) { |
return -1; | |
} else if (ret != blen) { | |
rpc_SetErr(EPROCUNAVAIL, "RPC request, should be send %d bytes, " |
rpc_SetErr(EPROCUNAVAIL, "RPC request, should be send %d bytes, " |
"really sended %d bytes", len, ret); |
"really sended %d bytes", len, ret); |
return -1; |
return -1; |