diff --git a/src/backend/postmaster/postmaster.c b/src/backend/postmaster/postmaster.c
index c1ac2ed59772823790f83ed694a51db0e69aea65..d14f6db1630068cc96124914037d817a53bf5053 100644
--- a/src/backend/postmaster/postmaster.c
+++ b/src/backend/postmaster/postmaster.c
@@ -37,7 +37,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.456 2005/06/29 22:51:55 tgl Exp $
+ *	  $PostgreSQL: pgsql/src/backend/postmaster/postmaster.c,v 1.457 2005/06/30 10:02:22 petere Exp $
  *
  * NOTES
  *
@@ -711,6 +711,7 @@ PostmasterMain(int argc, char *argv[])
 		char	   *rawstring;
 		List	   *elemlist;
 		ListCell   *l;
+		int			success = 0;
 
 		/* Need a modifiable copy of ListenAddresses */
 		rawstring = pstrdup(ListenAddresses);
@@ -738,12 +739,18 @@ PostmasterMain(int argc, char *argv[])
 										  (unsigned short) PostPortNumber,
 										  UnixSocketDir,
 										  ListenSocket, MAXLISTEN);
-			if (status != STATUS_OK)
+			if (status == STATUS_OK)
+				success++;
+			else
 				ereport(WARNING,
 					 (errmsg("could not create listen socket for \"%s\"",
 							 curhost)));
 		}
 
+		if (!success && list_length(elemlist))
+			ereport(FATAL,
+					(errmsg("could not create any TCP/IP sockets")));
+
 		list_free(elemlist);
 		pfree(rawstring);
 	}