diff --git a/sim_sock.c b/sim_sock.c index cf33c058..bcc67358 100644 --- a/sim_sock.c +++ b/sim_sock.c @@ -715,9 +715,17 @@ for (; preferred != NULL; preferred = preferred->ai_next) { } if (preferred == NULL) preferred = result; +#else +retry: #endif newsock = sim_create_sock (preferred->ai_family); /* create socket */ if (newsock == INVALID_SOCKET) { /* socket error? */ +#ifndef IPV6_V6ONLY + if (preferred->ai_next) { + preferred = preferred->ai_next; + goto retry; + } +#endif p_freeaddrinfo(result); return newsock; } diff --git a/sim_sock.h b/sim_sock.h index 9befed49..b8af1a23 100644 --- a/sim_sock.h +++ b/sim_sock.h @@ -53,7 +53,11 @@ #define WSAGetLastError() errno /* Windows macros */ #define closesocket close #define SOCKET int32 +#if defined(__hpux) +#define WSAEWOULDBLOCK EAGAIN +#else #define WSAEWOULDBLOCK EWOULDBLOCK +#endif #define WSAEINPROGRESS EINPROGRESS #define WSAETIMEDOUT ETIMEDOUT #define WSAECONNREFUSED ECONNREFUSED