diff --git a/src/backend/libpq/hba.c b/src/backend/libpq/hba.c
index f607167b6e82faf54cfe9c09066b294a3d8968d5..f722bb52716199853055a05393916935ca0beb59 100644
--- a/src/backend/libpq/hba.c
+++ b/src/backend/libpq/hba.c
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.99 2003/04/17 22:26:01 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/libpq/hba.c,v 1.100 2003/04/25 01:24:00 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1212,7 +1212,7 @@ ident_inet(const struct in_addr remote_ip_addr,
 															ident_user);
 				}
 			}
-			close(sock_fd);
+			closesocket(sock_fd);
 		}
 	}
 	return ident_return;
diff --git a/src/backend/libpq/pqcomm.c b/src/backend/libpq/pqcomm.c
index 2cf2a36b7b3ca6dd86f78f9403af9a339785c041..bebff3653770083e18698f6ce1d2f9d7a269af75 100644
--- a/src/backend/libpq/pqcomm.c
+++ b/src/backend/libpq/pqcomm.c
@@ -30,7 +30,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- *	$Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.151 2003/04/22 00:08:06 tgl Exp $
+ *	$Header: /cvsroot/pgsql/src/backend/libpq/pqcomm.c,v 1.152 2003/04/25 01:24:00 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -150,7 +150,7 @@ pq_close(void)
 	if (MyProcPort != NULL)
 	{
 		secure_close(MyProcPort);
-		close(MyProcPort->sock);
+		closesocket(MyProcPort->sock);
 		/* make sure any subsequent attempts to do I/O fail cleanly */
 		MyProcPort->sock = -1;
 	}
@@ -228,7 +228,7 @@ StreamServerPort(int family, char *hostName, unsigned short portNumber,
 		snprintf(portNumberStr, sizeof(portNumberStr), "%d", portNumber);
 		service = portNumberStr;
 	}
-	
+
 	ret = getaddrinfo2(hostName, service, &hint, &addrs);
 	if (ret || addrs == NULL)
 	{
@@ -470,7 +470,7 @@ StreamConnection(int server_fd, Port *port)
 void
 StreamClose(int sock)
 {
-	close(sock);
+	closesocket(sock);
 }
 
 /*
diff --git a/src/backend/postmaster/pgstat.c b/src/backend/postmaster/pgstat.c
index 86d47db9efd14f7d83c45d95f906d63ec6930006..c5835226e64021cba6f4b976b73184dcbe88e467 100644
--- a/src/backend/postmaster/pgstat.c
+++ b/src/backend/postmaster/pgstat.c
@@ -16,7 +16,7 @@
  *
  *	Copyright (c) 2001, PostgreSQL Global Development Group
  *
- *	$Header: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v 1.32 2003/03/20 03:34:56 momjian Exp $
+ *	$Header: /cvsroot/pgsql/src/backend/postmaster/pgstat.c,v 1.33 2003/04/25 01:24:00 momjian Exp $
  * ----------
  */
 #include "postgres.h"
@@ -235,7 +235,7 @@ pgstat_init(void)
 
 startup_failed:
 	if (pgStatSock >= 0)
-		close(pgStatSock);
+		closesocket(pgStatSock);
 	pgStatSock = -1;
 
 	/* Adjust GUC variables to suppress useless activity */
@@ -359,10 +359,10 @@ void
 pgstat_close_sockets(void)
 {
 	if (pgStatPmPipe[0] >= 0)
-		close(pgStatPmPipe[0]);
+		closesocket(pgStatPmPipe[0]);
 	pgStatPmPipe[0] = -1;
 	if (pgStatPmPipe[1] >= 0)
-		close(pgStatPmPipe[1]);
+		closesocket(pgStatPmPipe[1]);
 	pgStatPmPipe[1] = -1;
 }
 
@@ -1120,7 +1120,7 @@ pgstat_main(void)
 	 * Close the writing end of the postmaster pipe, so we'll see it
 	 * closing when the postmaster terminates and can terminate as well.
 	 */
-	close(pgStatPmPipe[1]);
+	closesocket(pgStatPmPipe[1]);
 	pgStatPmPipe[1] = -1;
 
 	/*
@@ -1167,13 +1167,13 @@ pgstat_main(void)
 
 		case 0:
 			/* child becomes collector process */
-			close(pgStatPipe[1]);
-			close(pgStatSock);
+			closesocket(pgStatPipe[1]);
+			closesocket(pgStatSock);
 			break;
 
 		default:
 			/* parent becomes buffer process */
-			close(pgStatPipe[0]);
+			closesocket(pgStatPipe[0]);
 			pgstat_recvbuffer();
 			exit(0);
 	}
diff --git a/src/include/c.h b/src/include/c.h
index 833312b9d6a756d30b0d7a2b4ad3ed27fd9cfdfb..8352ebac2a44320dae4d10ac2bb34e5658653c74 100644
--- a/src/include/c.h
+++ b/src/include/c.h
@@ -12,7 +12,7 @@
  * Portions Copyright (c) 1996-2002, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $Id: c.h,v 1.139 2003/04/22 02:18:09 momjian Exp $
+ * $Id: c.h,v 1.140 2003/04/25 01:24:00 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -721,6 +721,13 @@ int pgunlink(const char *path);
 #define unlink(from, to)	pgunlink(from, to)
 #endif
 
+/*
+ *	Win32 requires a special close for sockets and pipes, while on Unix
+ *	close() does them all.
+ */
+#ifndef WIN32
+#define	closesocket close
+#endif
   
 /* These are for things that are one way on Unix and another on NT */
 #define NULL_DEV		"/dev/null"
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index 6ee2716ec0912e0329c23c6916759b1166cba271..a31f34d7a98fa8d33f32a5039c41d3dd1bed9cb9 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.235 2003/04/24 21:16:44 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.236 2003/04/25 01:24:00 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -956,7 +956,7 @@ retry1:
 		/* ignore connect() failure if we have more addrs to try */
 		if (addr_cur->ai_next != NULL)
 		{
-			close(conn->sock);
+			closesocket(conn->sock);
 			conn->sock = -1;
 			continue;
 		}
@@ -1015,11 +1015,7 @@ retry2:
 			if (conn->Pfdebug)
 				fprintf(conn->Pfdebug, "Postmaster reports error, attempting fallback to pre-7.0.\n");
 			pqsecure_close(conn);
-#ifdef WIN32
 			closesocket(conn->sock);
-#else
-			close(conn->sock);
-#endif
 			conn->sock = -1;
 			conn->allow_ssl_try = FALSE;
 			return connectDBStart(conn);
@@ -1056,11 +1052,7 @@ connect_errReturn:
 	if (conn->sock >= 0)
 	{
 		pqsecure_close(conn);
-#ifdef WIN32
 		closesocket(conn->sock);
-#else
-		close(conn->sock);
-#endif
 		conn->sock = -1;
 	}
 	conn->status = CONNECTION_BAD;
@@ -1928,11 +1920,7 @@ freePGconn(PGconn *conn)
 	if (conn->sock >= 0)
 	{
 		pqsecure_close(conn);
-#ifdef WIN32
 		closesocket(conn->sock);
-#else
-		close(conn->sock);
-#endif
 	}
 	if (conn->pghost)
 		free(conn->pghost);
@@ -2003,11 +1991,7 @@ closePGconn(PGconn *conn)
 	if (conn->sock >= 0)
 	{
 		pqsecure_close(conn);
-#ifdef WIN32
 		closesocket(conn->sock);
-#else
-		close(conn->sock);
-#endif
 	}
 	conn->sock = -1;
 	conn->status = CONNECTION_BAD;		/* Well, not really _bad_ - just
@@ -2187,11 +2171,10 @@ retry4:
 	}
 
 	/* Sent it, done */
-#ifdef WIN32
 	closesocket(tmpsock);
+#ifdef WIN32
 	WSASetLastError(save_errno);
 #else
-	close(tmpsock);
 	errno = save_errno;
 #endif
 
@@ -2203,11 +2186,10 @@ cancel_errReturn:
 	conn->errorMessage.len = strlen(conn->errorMessage.data);
 	if (tmpsock >= 0)
 	{
-#ifdef WIN32
 		closesocket(tmpsock);
+#ifdef WIN32
 		WSASetLastError(save_errno);
 #else
-		close(tmpsock);
 		errno = save_errno;
 #endif
 	}
diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c
index 3fe0ddc4920551b8ca073afd5317af64d99c378d..84520987812e6e87147f0c49259028572850e139 100644
--- a/src/interfaces/libpq/fe-exec.c
+++ b/src/interfaces/libpq/fe-exec.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.131 2003/04/24 21:16:44 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-exec.c,v 1.132 2003/04/25 01:24:00 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1161,11 +1161,7 @@ handleSyncLoss(PGconn *conn, char id, int msgLength)
 					  id, msgLength);
 	conn->status = CONNECTION_BAD;		/* No more connection to backend */
 	pqsecure_close(conn);
-#ifdef WIN32
 	closesocket(conn->sock);
-#else
-	close(conn->sock);
-#endif
 	conn->sock = -1;
 }
 
diff --git a/src/interfaces/libpq/fe-misc.c b/src/interfaces/libpq/fe-misc.c
index 76de4a8708628468a7696477744bb58a20e77fee..042ef204aba1921ec7fe387d7890eee05457bbc0 100644
--- a/src/interfaces/libpq/fe-misc.c
+++ b/src/interfaces/libpq/fe-misc.c
@@ -23,7 +23,7 @@
  * Portions Copyright (c) 1994, Regents of the University of California
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.90 2003/04/22 00:08:07 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.91 2003/04/25 01:24:00 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -681,11 +681,7 @@ definitelyFailed:
 						 "\tbefore or while processing the request.\n"));
 	conn->status = CONNECTION_BAD;		/* No more connection to backend */
 	pqsecure_close(conn);
-#ifdef WIN32
 	closesocket(conn->sock);
-#else
-	close(conn->sock);
-#endif
 	conn->sock = -1;
 
 	return -1;
diff --git a/src/interfaces/python/pgmodule.c b/src/interfaces/python/pgmodule.c
index b659c99759e97738ad705e914a51d727a3ad2d0d..2e81e1c51a5739b14882a3de9ced12de175ddca3 100644
--- a/src/interfaces/python/pgmodule.c
+++ b/src/interfaces/python/pgmodule.c
@@ -2405,10 +2405,10 @@ pg_inserttable(pgobject * self, PyObject * args)
 				n = j;		/* never used before this assignment */
 		}
 		if (n)
-		{	
+		{
 			/* allocate buffer */
 			if (!(buffer = malloc(MAX_BUFFER_SIZE)))
-			{		
+			{
 				PyErr_SetString(PyExc_MemoryError,
 					"can't allocate insert buffer.");
 				return NULL;
@@ -2438,7 +2438,7 @@ pg_inserttable(pgobject * self, PyObject * args)
 					getsubitem = PyTuple_GetItem;
 				else
 					getsubitem = PyList_GetItem;
-	
+
 				/* builds insert line */
 				bufpt=buffer;
 				bufsiz = MAX_BUFFER_SIZE - 1;
@@ -2527,7 +2527,7 @@ pg_inserttable(pgobject * self, PyObject * args)
 					{
 						*bufpt++ = '\t'; --bufsiz;
 					}
-			
+
 					if (bufsiz <= 0)
 					{
 						free(buffer);
@@ -2543,7 +2543,7 @@ pg_inserttable(pgobject * self, PyObject * args)
 				/* sends data */
 				PQputline(self->cnx, buffer);
 			}
-	
+
 			/* ends query */
 			PQputline(self->cnx, "\\.\n");
 			PQendcopy(self->cnx);