diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c
index a75631e5f056aed8038624b31004e658939088df..c3223bf82f95708e192b793459f2ccfa528e0e0a 100644
--- a/src/backend/libpq/pqcomm.c
+++ b/src/backend/libpq/pqcomm.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.24 1997/11/07 20:51:34 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.25 1997/11/10 02:21:18 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -582,15 +582,16 @@ static void do_unlink()
 int
 StreamServerPort(char *hostName, short portName, int *fdP)
 {
-	struct sockaddr_in sin;
-	struct sockaddr_un sun;
+        union {
+	  struct sockaddr_in in;
+	  struct sockaddr_un un;
+	} saddr;
 	int			fd, err, family;
+	size_t                  len;
 	int			one = 1;
 
 	family = hostName != NULL ? AF_INET : AF_UNIX;
 
-	MemSet((char *) &sin, 0, sizeof sin);
-
 	if ((fd = socket(family, SOCK_STREAM, 0)) < 0)
 	{
 		sprintf(PQerrormsg,
@@ -611,23 +612,21 @@ StreamServerPort(char *hostName, short portName, int *fdP)
 		pqdebug("%s", PQerrormsg);
 		return (STATUS_ERROR);
 	}
+	bzero(&saddr, sizeof(saddr));
 	if (family == AF_UNIX)
 	  {
-	    size_t len;
-	    bzero(&sun, sizeof(sun));
-	    sun.sun_family = family;
-	    len = UNIXSOCK_PATH(sun,portName);
-	    strcpy(sock_path, sun.sun_path);
-	    err = bind(fd, (struct sockaddr *) &sun, len);
+	    saddr.un.sun_family = family;
+	    len = UNIXSOCK_PATH(saddr.un,portName);
+	    strcpy(sock_path, saddr.un.sun_path);
 	  }
 	else
 	  {
-	    bzero(&sin, sizeof(sin));
-	    sin.sin_family = family;
-	    sin.sin_addr.s_addr = htonl(INADDR_ANY);
-	    sin.sin_port = htons(portName);
-	    err = bind(fd, (struct sockaddr *) &sin, sizeof sin);
+	    saddr.in.sin_family = family;
+	    saddr.in.sin_addr.s_addr = htonl(INADDR_ANY);
+	    saddr.in.sin_port = htons(portName);
+	    len = sizeof saddr.in;
 	  }
+	err = bind(fd, (struct sockaddr *) &saddr, len);
 	if (err < 0)
 	{
 		sprintf(PQerrormsg,