diff options
Diffstat (limited to 'src/backend')
-rw-r--r-- | src/backend/libpq/ip.c | 49 | ||||
-rw-r--r-- | src/backend/libpq/pqcomm.c | 61 |
2 files changed, 16 insertions, 94 deletions
diff --git a/src/backend/libpq/ip.c b/src/backend/libpq/ip.c index 20f5df311a8..3c3b872c1de 100644 --- a/src/backend/libpq/ip.c +++ b/src/backend/libpq/ip.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/libpq/ip.c,v 1.2 2003/01/09 14:35:03 petere Exp $ + * $Header: /cvsroot/pgsql/src/backend/libpq/ip.c,v 1.3 2003/03/29 11:31:51 petere Exp $ * * This file and the IPV6 implementation were initially provided by * Nigel Kukard <nkukard@lbsd.net>, Linux Based Systems Design @@ -44,9 +44,9 @@ #define LOG stderr #endif -#if defined(HAVE_UNIX_SOCKETS) && defined(HAVE_IPV6) +#if defined(HAVE_UNIX_SOCKETS) static int getaddrinfo_unix(const char *path, const struct addrinfo *hintsp, - struct addrinfo **result); + struct addrinfo **result); #endif /* HAVE_UNIX_SOCKETS */ /* @@ -54,48 +54,17 @@ static int getaddrinfo_unix(const char *path, const struct addrinfo *hintsp, */ int getaddrinfo2(const char *hostname, const char *servname, -#ifdef HAVE_IPV6 const struct addrinfo *hintp, struct addrinfo **result) -#else - int family, SockAddr *result) -#endif { #ifdef HAVE_UNIX_SOCKETS -#ifdef HAVE_IPV6 if (hintp != NULL && hintp->ai_family == AF_UNIX) return getaddrinfo_unix(servname, hintp, result); -#else - if (family == AF_UNIX) - return 0; -#endif else { #endif /* HAVE_UNIX_SOCKETS */ -#ifdef HAVE_IPV6 /* NULL has special meaning to getaddrinfo */ return getaddrinfo((!hostname || hostname[0] == '\0') ? NULL : hostname, servname, hintp, result); -#else - if (hostname[0] == '\0') - result->in.sin_addr.s_addr = htonl(INADDR_ANY); - else - { - struct hostent *hp; - - hp = gethostbyname(hostname); - if ((hp == NULL) || (hp->h_addrtype != AF_INET)) - { - elog(LOG, "getaddrinfo2: gethostbyname(%s) failed\n", hostname); - return STATUS_ERROR; - } - memmove((char *) &(result->in.sin_addr), (char *) hp->h_addr, - hp->h_length); - } - - result->in.sin_port = htons((unsigned short)atoi(servname)); - return 0; -#endif /* HAVE_IPV6 */ - #ifdef HAVE_UNIX_SOCKETS } #endif /* HAVE_UNIX_SOCKETS */ @@ -105,7 +74,6 @@ getaddrinfo2(const char *hostname, const char *servname, /* * freeaddrinfo2 - free IPv6 addrinfo structures */ -#ifdef HAVE_IPV6 void freeaddrinfo2(int hint_ai_family, struct addrinfo *ai) { @@ -126,10 +94,9 @@ freeaddrinfo2(int hint_ai_family, struct addrinfo *ai) #endif /* HAVE_UNIX_SOCKETS */ freeaddrinfo(ai); } -#endif -#if defined(HAVE_UNIX_SOCKETS) && defined(HAVE_IPV6) +#if defined(HAVE_UNIX_SOCKETS) /* ------- * getaddrinfo_unix - get unix socket info using IPv6 * @@ -140,7 +107,7 @@ freeaddrinfo2(int hint_ai_family, struct addrinfo *ai) */ static int getaddrinfo_unix(const char *path, const struct addrinfo *hintsp, - struct addrinfo **result) + struct addrinfo **result) { struct addrinfo hints; struct addrinfo *aip; @@ -159,9 +126,9 @@ getaddrinfo_unix(const char *path, const struct addrinfo *hintsp, if (hints.ai_socktype == 0) hints.ai_socktype = SOCK_STREAM; - if (!(hints.ai_family == AF_UNIX)) + if (hints.ai_family != AF_UNIX) { - elog(LOG, "hints.ai_family is invalied getaddrinfo_unix()\n"); + elog(LOG, "hints.ai_family is invalid in getaddrinfo_unix()\n"); return EAI_ADDRFAMILY; } @@ -197,7 +164,7 @@ getaddrinfo_unix(const char *path, const struct addrinfo *hintsp, return 0; } -#endif /* HAVE_UNIX_SOCKETS && HAVE_IPV6 */ +#endif /* HAVE_UNIX_SOCKETS */ /* ---------- * SockAddr_ntop - set IP address string from SockAddr diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c index 8c6e1dc6d0b..20954a4ecf1 100644 --- a/src/backend/libpq/pqcomm.c +++ b/src/backend/libpq/pqcomm.c @@ -29,7 +29,7 @@ * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: pqcomm.c,v 1.147 2003/01/25 05:19:46 tgl Exp $ + * $Id: pqcomm.c,v 1.148 2003/03/29 11:31:51 petere Exp $ * *------------------------------------------------------------------------- */ @@ -96,13 +96,6 @@ static int Lock_AF_UNIX(unsigned short portNumber, char *unixSocketName); static int Setup_AF_UNIX(void); #endif /* HAVE_UNIX_SOCKETS */ -#ifdef HAVE_IPV6 -#define FREEADDRINFO2(family, addrs) freeaddrinfo2((family), (addrs)) -#else -/* do nothing */ -#define FREEADDRINFO2(family, addrs) do {} while (0) -#endif - /* * Configuration options @@ -208,13 +201,6 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber, int ret; char portNumberStr[64]; char *service; - - /* - * IPv6 address lookups use a hint structure, while IPv4 creates an - * address structure directly. - */ - -#ifdef HAVE_IPV6 struct addrinfo *addrs = NULL; struct addrinfo hint; @@ -225,16 +211,6 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber, hint.ai_family = family; hint.ai_flags = AI_PASSIVE; hint.ai_socktype = SOCK_STREAM; -#else - SockAddr saddr; - size_t len; - - Assert(family == AF_INET || family == AF_UNIX); - - /* Initialize address structure */ - MemSet((char *) &saddr, 0, sizeof(saddr)); - saddr.sa.sa_family = family; -#endif /* HAVE_IPV6 */ #ifdef HAVE_UNIX_SOCKETS if (family == AF_UNIX) @@ -242,38 +218,21 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber, if (Lock_AF_UNIX(portNumber, unixSocketName) != STATUS_OK) return STATUS_ERROR; service = sock_path; -#ifndef HAVE_IPV6 - UNIXSOCK_PATH(saddr.un, portNumber, unixSocketName); - len = UNIXSOCK_LEN(saddr.un); -#endif } else #endif /* HAVE_UNIX_SOCKETS */ { snprintf(portNumberStr, sizeof(portNumberStr), "%d", portNumber); service = portNumberStr; -#ifndef HAVE_IPV6 - len = sizeof(saddr.in); -#endif } - /* Look up name using IPv6 or IPv4 routines */ -#ifdef HAVE_IPV6 ret = getaddrinfo2(hostName, service, &hint, &addrs); if (ret || addrs == NULL) -#else - ret = getaddrinfo2(hostName, service, family, &saddr); - if (ret) -#endif { elog(LOG, "server socket failure: getaddrinfo2()%s: %s", -#ifdef HAVE_IPV6 (family == AF_INET6) ? " using IPv6" : "", gai_strerror(ret)); if (addrs != NULL) - FREEADDRINFO2(hint.ai_family, addrs); -#else - "", hostName); -#endif + freeaddrinfo2(hint.ai_family, addrs); return STATUS_ERROR; } @@ -281,7 +240,7 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber, { elog(LOG, "server socket failure: socket(): %s", strerror(errno)); - FREEADDRINFO2(hint.ai_family, addrs); + freeaddrinfo2(hint.ai_family, addrs); return STATUS_ERROR; } @@ -292,17 +251,13 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber, { elog(LOG, "server socket failure: setsockopt(SO_REUSEADDR): %s", strerror(errno)); - FREEADDRINFO2(hint.ai_family, addrs); + freeaddrinfo2(hint.ai_family, addrs); return STATUS_ERROR; } } -#ifdef HAVE_IPV6 Assert(addrs->ai_next == NULL && addrs->ai_family == family); err = bind(fd, addrs->ai_addr, addrs->ai_addrlen); -#else - err = bind(fd, (struct sockaddr *) &saddr.sa, len); -#endif if (err < 0) { elog(LOG, "server socket failure: bind(): %s\n" @@ -313,7 +268,7 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber, sock_path); else elog(LOG, "\tIf not, wait a few seconds and retry."); - FREEADDRINFO2(hint.ai_family, addrs); + freeaddrinfo2(hint.ai_family, addrs); return STATUS_ERROR; } @@ -322,7 +277,7 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber, { if (Setup_AF_UNIX() != STATUS_OK) { - FREEADDRINFO2(hint.ai_family, addrs); + freeaddrinfo2(hint.ai_family, addrs); return STATUS_ERROR; } } @@ -342,12 +297,12 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber, { elog(LOG, "server socket failure: listen(): %s", strerror(errno)); - FREEADDRINFO2(hint.ai_family, addrs); + freeaddrinfo2(hint.ai_family, addrs); return STATUS_ERROR; } *fdP = fd; - FREEADDRINFO2(hint.ai_family, addrs); + freeaddrinfo2(hint.ai_family, addrs); return STATUS_OK; } |