diff --git a/src/interfaces/libpq/bcc32.mak b/src/interfaces/libpq/bcc32.mak
index 992bb5b68e76016ae2635435c99147f02ce72916..73fb1faf131fee759f401d418e6274dbe77d3b9f 100644
--- a/src/interfaces/libpq/bcc32.mak
+++ b/src/interfaces/libpq/bcc32.mak
@@ -93,7 +93,6 @@ CLEAN :
 	-@erase "$(INTDIR)\fe-secure.obj"
 	-@erase "$(INTDIR)\pqexpbuffer.obj"
 	-@erase "$(INTDIR)\pqsignal.obj"
-	-@erase "$(OUTDIR)\libpqdll.obj"
 	-@erase "$(OUTDIR)\win32.obj"
 	-@erase "$(INTDIR)\wchar.obj"
 	-@erase "$(INTDIR)\encnames.obj"
@@ -155,14 +154,13 @@ RSC_PROJ=-l 0x409 -i$(BCB)\include -fo"$(INTDIR)\libpq.res"
 
 LINK32=ilink32.exe
 LINK32_FLAGS = -Gn -L$(BCB)\lib;$(INTDIR); -x -Tpd -v
-LINK32_OBJS= "$(INTDIR)\libpqdll.obj"
 
 # @<< is a Response file, http://www.opussoftware.com/tutorial/TutMakefile.htm
 
-"$(OUTDIR)\blibpq.dll": "$(OUTDIR)\blibpq.lib" $(LINK32_OBJS) "$(INTDIR)\libpq.res" blibpqdll.def 
+"$(OUTDIR)\blibpq.dll": "$(OUTDIR)\blibpq.lib" "$(INTDIR)\libpq.res" blibpqdll.def 
 	$(LINK32) @<<
 	$(LINK32_FLAGS) +
-	c0d32.obj $(LINK32_OBJS), +
+	c0d32.obj , +
 	$@,, +
 	"$(OUTDIR)\blibpq.lib" import32.lib cw32mt.lib, +
 	blibpqdll.def,"$(INTDIR)\libpq.res"
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c
index 6d8198ac0e72e55d04a1c2e87d443ff131706388..13c407d1cc18e86982c8536611870ee9851b7463 100644
--- a/src/interfaces/libpq/fe-connect.c
+++ b/src/interfaces/libpq/fe-connect.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.344 2007/02/20 15:20:51 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/interfaces/libpq/fe-connect.c,v 1.345 2007/03/08 19:27:28 mha Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1840,9 +1840,7 @@ makeEmptyPGconn(void)
 #ifdef WIN32
 
 	/*
-	 * Make sure socket support is up and running. Even though this is done in
-	 * libpqdll.c, that is only for MSVC and BCC builds and doesn't work for
-	 * static builds at all, so we have to do it in the main code too.
+	 * Make sure socket support is up and running.
 	 */
 	WSADATA		wsaData;
 
@@ -1853,7 +1851,12 @@ makeEmptyPGconn(void)
 
 	conn = (PGconn *) malloc(sizeof(PGconn));
 	if (conn == NULL)
+	{
+#ifdef WIN32
+		WSACleanup();
+#endif
 		return conn;
+	}
 
 	/* Zero all pointers and booleans */
 	MemSet(conn, 0, sizeof(PGconn));
@@ -1918,10 +1921,6 @@ freePGconn(PGconn *conn)
 	PGnotify   *notify;
 	pgParameterStatus *pstatus;
 
-#ifdef WIN32
-	WSACleanup();
-#endif
-
 	if (!conn)
 		return;
 
@@ -1986,6 +1985,10 @@ freePGconn(PGconn *conn)
 	termPQExpBuffer(&conn->errorMessage);
 	termPQExpBuffer(&conn->workBuffer);
 	free(conn);
+
+#ifdef WIN32
+	WSACleanup();
+#endif
 }
 
 /*
diff --git a/src/interfaces/libpq/libpqdll.c b/src/interfaces/libpq/libpqdll.c
deleted file mode 100644
index 231b6a0e9b67056580370edcdc7e4fae470c9c1e..0000000000000000000000000000000000000000
--- a/src/interfaces/libpq/libpqdll.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* $PostgreSQL: pgsql/src/interfaces/libpq/libpqdll.c,v 1.10 2006/03/11 04:38:40 momjian Exp $ */
-
-#define WIN32_LEAN_AND_MEAN
-#include <winsock.h>
-#include <windows.h>
-#include "win32.h"
-
-
-BOOL		WINAPI
-DllMain(HINSTANCE hinstDLL, DWORD fdwReason,
-		LPVOID lpReserved)
-{
-	WSADATA		wsaData;
-
-	switch (fdwReason)
-	{
-		case DLL_PROCESS_ATTACH:
-			if (WSAStartup(MAKEWORD(1, 1), &wsaData))
-			{
-				/*
-				 * No really good way to do error handling here, since we
-				 * don't know how we were loaded
-				 */
-				return FALSE;
-			}
-			break;
-		case DLL_PROCESS_DETACH:
-			WSACleanup();
-			break;
-	}
-
-	return TRUE;
-}
diff --git a/src/interfaces/libpq/win32.mak b/src/interfaces/libpq/win32.mak
index ca5f4326aa9988593de0ccd43a5f243c4c144eb0..f558aaca46eb77150bfaeac9ea34dcee4473f43b 100644
--- a/src/interfaces/libpq/win32.mak
+++ b/src/interfaces/libpq/win32.mak
@@ -63,7 +63,6 @@ CLEAN :
 	-@erase "$(INTDIR)\fe-secure.obj"
 	-@erase "$(INTDIR)\pqexpbuffer.obj"
 	-@erase "$(INTDIR)\pqsignal.obj"
-	-@erase "$(OUTDIR)\libpqdll.obj"
 	-@erase "$(OUTDIR)\win32.obj"
 	-@erase "$(INTDIR)\wchar.obj"
 	-@erase "$(INTDIR)\encnames.obj"
@@ -143,7 +142,6 @@ LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib shfolder.lib wsock32.lib $(SSL
  /pdb:"$(OUTDIR)\libpqdll.pdb" /machine:I386 /out:"$(OUTDIR)\$(OUTFILENAME).dll"\
  /implib:"$(OUTDIR)\$(OUTFILENAME)dll.lib"  /def:$(OUTFILENAME)dll.def
 LINK32_OBJS= \
-	"$(INTDIR)\libpqdll.obj" \
 	"$(OUTDIR)\$(OUTFILENAME).lib" \
 	"$(OUTDIR)\libpq.res"
 
@@ -159,7 +157,7 @@ LINK32_OBJS= \
 	$(RSC) $(RSC_PROJ) libpq.rc
 
 
-"$(OUTDIR)\$(OUTFILENAME).dll" : "$(OUTDIR)" "$(OUTDIR)\libpqdll.obj" "$(INTDIR)\libpqdll.obj" "$(INTDIR)\libpq.res"
+"$(OUTDIR)\$(OUTFILENAME).dll" : "$(OUTDIR)" "$(INTDIR)\libpq.res"
 	$(LINK32) @<<
 	$(LINK32_FLAGS) $(LINK32_OBJS)
 <<