version 1.12.4.1, 2013/11/14 22:29:31
|
version 1.12.4.2, 2013/11/14 22:43:19
|
Line 166 rpc_Read(int sock, int type, int flags, sockaddr_t * _
|
Line 166 rpc_Read(int sock, int type, int flags, sockaddr_t * _
|
memset(&sa2, 0, sizeof sa2); |
memset(&sa2, 0, sizeof sa2); |
salen = sa2.ss.ss_len = sizeof(sockaddr_t); |
salen = sa2.ss.ss_len = sizeof(sockaddr_t); |
|
|
if (type == SOCK_STREAM) { | for (len = blen; len > 0; len -= ret, buf += ret) { |
for (len = blen; len > 0; len -= ret, buf += ret) { | if ((ret = poll(&pfd, 1, DEF_RPC_TIMEOUT * 1000)) < 1 || |
if ((ret = poll(&pfd, 1, DEF_RPC_TIMEOUT * 1000)) < 1 || | pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) { |
pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) { | LOGERR; |
LOGERR; | return -1; |
return -1; | |
} else | |
ret = recv(sock, buf, len, flags); | |
if (ret == -1) { | |
LOGERR; | |
return -1; | |
} | |
} |
} |
if (ret > -1) | if (type == SOCK_STREAM) |
ret = blen - len; | ret = recv(sock, buf, len, flags); |
} else { | else { |
do { | ret = recvfrom(sock, buf, blen, flags, &sa2.sa, &salen); |
if ((ret = poll(&pfd, 1, DEF_RPC_TIMEOUT * 1000)) < 1 || | if (ret > -1 && e_addrcmp(sa, &sa2, 42)) { |
pfd.revents & (POLLERR | POLLHUP | POLLNVAL)) { | rpc_SetErr(ERPCMISMATCH, "Received RPC response from unknown address"); |
LOGERR; | |
return -1; |
return -1; |
} else |
|
ret = recvfrom(sock, buf, blen, flags, &sa2.sa, &salen); |
|
if (ret < 0) { |
|
LOGERR; |
|
return -1; |
|
} |
} |
if (e_addrcmp(sa, &sa2, 42)) | } |
rpc_SetErr(ERPCMISMATCH, "Received RPC response from unknown address"); | if (ret == -1) { |
else | LOGERR; |
break; | return -1; |
} while (42); | } |
} |
} |
|
ret = blen - len; |
|
|
return ret; |
return ret; |
} |
} |