diff options
Diffstat (limited to 'cups/http-addrlist.c')
-rw-r--r-- | cups/http-addrlist.c | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/cups/http-addrlist.c b/cups/http-addrlist.c index e5fc940e..d9a96c4e 100644 --- a/cups/http-addrlist.c +++ b/cups/http-addrlist.c @@ -1,7 +1,7 @@ /* * HTTP address list routines for CUPS. * - * Copyright 2007-2017 by Apple Inc. + * Copyright 2007-2018 by Apple Inc. * Copyright 1997-2007 by Easy Software Products, all rights reserved. * * These coded instructions, statements, and computer programs are the @@ -24,9 +24,9 @@ #ifdef HAVE_POLL # include <poll.h> #endif /* HAVE_POLL */ -#ifndef WIN32 +#ifndef _WIN32 # include <fcntl.h> -#endif /* WIN32 */ +#endif /* _WIN32 */ /* @@ -61,14 +61,14 @@ httpAddrConnect2( int *cancel) /* I - Pointer to "cancel" variable */ { int val; /* Socket option value */ -#ifndef WIN32 - int flags; /* Socket flags */ -#endif /* !WIN32 */ - int remaining; /* Remaining timeout */ +#ifndef _WIN32 int i, j, /* Looping vars */ - nfds, /* Number of file descriptors */ - fds[100], /* Socket file descriptors */ + flags, /* Socket flags */ result; /* Result from select() or poll() */ +#endif /* !_WIN32 */ + int remaining; /* Remaining timeout */ + int nfds, /* Number of file descriptors */ + fds[100]; /* Socket file descriptors */ http_addrlist_t *addrs[100]; /* Addresses */ #ifndef HAVE_POLL int max_fd = -1; /* Highest file descriptor */ @@ -84,8 +84,10 @@ httpAddrConnect2( # endif /* HAVE_POLL */ #endif /* O_NONBLOCK */ #ifdef DEBUG +# ifndef _WIN32 socklen_t len; /* Length of value */ http_addr_t peer; /* Peer address */ +# endif /* !_WIN32 */ char temp[256]; /* Temporary address string */ #endif /* DEBUG */ @@ -213,11 +215,11 @@ httpAddrConnect2( return (addrlist); } -#ifdef WIN32 +#ifdef _WIN32 if (WSAGetLastError() != WSAEINPROGRESS && WSAGetLastError() != WSAEWOULDBLOCK) #else if (errno != EINPROGRESS && errno != EWOULDBLOCK) -#endif /* WIN32 */ +#endif /* _WIN32 */ { DEBUG_printf(("1httpAddrConnect2: Unable to connect to %s:%d: %s", httpAddrString(&(addrlist->addr), temp, sizeof(temp)), httpAddrPort(&(addrlist->addr)), strerror(errno))); httpAddrClose(NULL, fds[nfds]); @@ -225,9 +227,9 @@ httpAddrConnect2( continue; } -#ifndef WIN32 +#ifndef _WIN32 fcntl(fds[nfds], F_SETFL, flags); -#endif /* !WIN32 */ +#endif /* !_WIN32 */ #ifndef HAVE_POLL if (fds[nfds] > max_fd) @@ -296,11 +298,11 @@ httpAddrConnect2( DEBUG_printf(("1httpAddrConnect2: select() returned %d (%d)", result, errno)); # endif /* HAVE_POLL */ } -# ifdef WIN32 +# ifdef _WIN32 while (result < 0 && (WSAGetLastError() == WSAEINTR || WSAGetLastError() == WSAEWOULDBLOCK)); # else while (result < 0 && (errno == EINTR || errno == EAGAIN)); -# endif /* WIN32 */ +# endif /* _WIN32 */ if (result > 0) { @@ -377,11 +379,11 @@ httpAddrConnect2( httpAddrClose(NULL, fds[nfds]); } -#ifdef WIN32 +#ifdef _WIN32 _cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, "Connection failed", 0); #else _cupsSetError(IPP_STATUS_ERROR_SERVICE_UNAVAILABLE, strerror(errno), 0); -#endif /* WIN32 */ +#endif /* _WIN32 */ return (NULL); } @@ -618,6 +620,7 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p if (!temp) { httpAddrFreeList(first); + freeaddrinfo(results); _cupsSetError(IPP_STATUS_ERROR_INTERNAL, strerror(errno), 0); return (NULL); } @@ -848,11 +851,11 @@ httpAddrGetList(const char *hostname, /* I - Hostname, IP address, or NULL for p temp->addr.ipv6.sin6_family = AF_INET6; temp->addr.ipv6.sin6_port = htons(portnum); -# ifdef WIN32 +# ifdef _WIN32 temp->addr.ipv6.sin6_addr.u.Byte[15] = 1; # else temp->addr.ipv6.sin6_addr.s6_addr32[3] = htonl(1); -# endif /* WIN32 */ +# endif /* _WIN32 */ if (!first) first = temp; |