summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2006-10-19 17:26:43 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2006-10-19 17:26:43 +0000
commit375cb7cfb018ba69f874cd39d2c5f28e2de6301a (patch)
tree15488fd9c91dd0169be25612504771c5454197d6
parent10a6e431d3d0905e8df5f9db639ca93ede70c28a (diff)
downloadpostgresql-375cb7cfb018ba69f874cd39d2c5f28e2de6301a.tar.gz
Work around reported problem that AIX's getaddrinfo() doesn't seem to zero
sin_port in the returned IP address struct when servname is NULL. This has been observed to cause failure to bind the stats collection socket, and could perhaps cause other issues too. Per reports from Brad Nicholson and Chris Browne.
-rw-r--r--src/backend/libpq/ip.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/backend/libpq/ip.c b/src/backend/libpq/ip.c
index 14123c2fe0..eca35e3ea3 100644
--- a/src/backend/libpq/ip.c
+++ b/src/backend/libpq/ip.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/backend/libpq/ip.c,v 1.31 2004/12/31 21:59:50 pgsql Exp $
+ * $PostgreSQL: pgsql/src/backend/libpq/ip.c,v 1.31.4.1 2006/10/19 17:26:43 tgl Exp $
*
* This file and the IPV6 implementation were initially provided by
* Nigel Kukard <nkukard@lbsd.net>, Linux Based Systems Design
@@ -75,6 +75,15 @@ getaddrinfo_all(const char *hostname, const char *servname,
return getaddrinfo_unix(servname, hintp, result);
#endif
+#ifdef _AIX
+ /*
+ * It seems AIX's getaddrinfo doesn't reliably zero sin_port when servname
+ * is NULL, so force the issue.
+ */
+ if (servname == NULL)
+ servname = "0";
+#endif
+
/* NULL has special meaning to getaddrinfo(). */
return getaddrinfo((!hostname || hostname[0] == '\0') ? NULL : hostname,
servname, hintp, result);