version 1.20.2.1, 2016/08/02 10:13:32
|
version 1.21, 2016/08/08 13:21:13
|
Line 153 try2read:
|
Line 153 try2read:
|
pfd.events = POLLIN | POLLPRI; |
pfd.events = POLLIN | POLLPRI; |
memset(buf, 0, blen); |
memset(buf, 0, blen); |
memset(&sa2, 0, sizeof sa2); |
memset(&sa2, 0, sizeof sa2); |
|
salen = E_SOCKADDR_MAX; |
#ifndef __linux__ |
#ifndef __linux__ |
salen = sa2.ss.ss_len = (u_char) MIN(sizeof(sockaddr_t), 0xff); | sa2.ss.ss_len = salen; |
#endif |
#endif |
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)) { |
Line 253 try2read:
|
Line 254 try2read:
|
|
|
/* check RPC packet header */ |
/* check RPC packet header */ |
if (type == SOCK_RAW) { |
if (type == SOCK_RAW) { |
|
#ifdef IPV6_REMOVE_HEADER |
hlen = sa->sa.sa_family == AF_INET ? |
hlen = sa->sa.sa_family == AF_INET ? |
sizeof(struct ip) : sizeof(struct ip6_hdr); |
sizeof(struct ip) : sizeof(struct ip6_hdr); |
|
#else |
|
hlen = sa->sa.sa_family == AF_INET ? |
|
sizeof(struct ip) : 0; |
|
#endif |
ret -= hlen; |
ret -= hlen; |
if (ret > 0) |
if (ret > 0) |
memmove(buf, buf + hlen, blen - hlen); |
memmove(buf, buf + hlen, blen - hlen); |
Line 348 rpc_Write(int sock, int type, int flags, sockaddr_t *
|
Line 354 rpc_Write(int sock, int type, int flags, sockaddr_t *
|
return -1; |
return -1; |
} |
} |
|
|
ret = sendto(sock, buf, blen, flags, &sa->sa, sizeof sa->sa); | ret = sendto(sock, buf, blen, flags, &sa->sa, e_addrlen(sa)); |
break; |
break; |
default: |
default: |
rpc_SetErr(EINVAL, "Invalid argument(s)!"); |
rpc_SetErr(EINVAL, "Invalid argument(s)!"); |