aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2006-10-19 17:26:32 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2006-10-19 17:26:32 +0000
commitdbb397f30f30829e99ccd9ef0529a2e1d9b98467 (patch)
tree60fb4db78eaf36e5457a6d9cbbb74e0b9b93f9b3
parent1e758d5263e54a5d79ef368473e7e70d009944de (diff)
downloadpostgresql-dbb397f30f30829e99ccd9ef0529a2e1d9b98467.tar.gz
postgresql-dbb397f30f30829e99ccd9ef0529a2e1d9b98467.zip
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 917bda82833..5f42676b360 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.36 2006/06/20 19:56:52 tgl Exp $
+ * $PostgreSQL: pgsql/src/backend/libpq/ip.c,v 1.37 2006/10/19 17:26:32 tgl Exp $
*
* This file and the IPV6 implementation were initially provided by
* Nigel Kukard <nkukard@lbsd.net>, Linux Based Systems Design
@@ -72,6 +72,15 @@ pg_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);