From 1e515d8357c32b56e31775931b3ce71c5812971c Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Mon, 18 Mar 2013 06:07:27 -0700 Subject: [PATCH] HP-UX socket fixes from Mikulas Patocka. 1. getaddrinfo returns IPv6 address even if IPv6 is not configured. The socket syscalls fails to create IPv6 socket. This is fixed by retrying for all possible addresses returned by getaddrinfo. 2. On HP-UX EAGAIN is used, not EWOULDBLOCK. --- sim_sock.c | 8 ++++++++ sim_sock.h | 4 ++++ 2 files changed, 12 insertions(+) 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