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.
This commit is contained in:
parent
7756cb8cd4
commit
1e515d8357
2 changed files with 12 additions and 0 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue