ensure that errno is set correctly after hdhomerun_sock_connect

This commit is contained in:
Aman Gupta 2018-09-27 16:23:45 -07:00
commit b9d5d04fea

View file

@ -332,13 +332,19 @@ bool hdhomerun_sock_connect(struct hdhomerun_sock_t *sock, uint32_t remote_addr,
poll_event.events = POLLOUT; poll_event.events = POLLOUT;
poll_event.revents = 0; poll_event.revents = 0;
if (poll(&poll_event, 1, (int)timeout) <= 0) { int ret = poll(&poll_event, 1, (int)timeout);
if (ret < 0) {
return false;
} else if (ret == 0) {
errno = ETIMEDOUT;
return false; return false;
} }
if ((poll_event.revents & POLLOUT) == 0) { if (connect(sock->sock, (struct sockaddr *)&sock_addr, sizeof(sock_addr)) != 0) {
if (errno != EISCONN) {
return false; return false;
} }
}
return true; return true;
} }