r = poll(&pfd, 1, timeout);
if (r == 1 && pfd.revents & (POLLIN | POLLERR | POLLHUP)) {
/* In case of POLLERR or POLLHUP we let accept() catch the error! */
- unsigned char a_[128];
- struct sockaddr *addr = (void *)a_;
- socklen_t addrlen = sizeof a_;
- r = accept(sock, addr, &addrlen);
+ struct sockaddr_storage addr;
+ struct sockaddr *paddr = (struct sockaddr *)&addr;
+ socklen_t addrlen = sizeof addr;
+ r = accept(sock, paddr, &addrlen);
if (r < 0) {
r = EAI_SYSTEM;
}
else {
- ADDR2STR(addr, addrlen, stra, 100);
+ ADDR2STR(paddr, addrlen, stra, 100);
NETLOG_DBG("accept(%d) -> (%d, %s): Ok", sock, r, stra);
}
}
exit(EXIT_FAILURE);
}
while (1) {
- struct sockaddr_in6 addr;
+ struct sockaddr_storage addr;
struct sockaddr *paddr = (struct sockaddr *)&addr;
socklen_t addrlen = sizeof addr;
for (n = 1; n > 0; ) {