Jason Erickson wrote:
> Taken from microsoft at:
> http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winsock/win
> sock/wsastartup_2.asp
> -------------------------------------------------------
> An application must call one WSACleanup call for every successful WSAStartup
> call to allow third-party DLLs to make use of a WS2_32.DLL on behalf of an
> application. This means, for example, that if an application calls
> WSAStartup three times, it must call WSACleanup three times. The first two
> calls to WSACleanup do nothing except decrement an internal counter; the
> final WSACleanup call for the task does all necessary resource deallocation
> for the task.
> ------------------------------------------------------------------
> 
> The only place WSACleanup is being called is libpqdll when the process
> detaches the DLL (if the libpq is not staticly linked in), which matches up
> with the WSAStartup when the process attaches to the DLL.
> 
> The WSAStartup in the fe-connect.c->makeEmptyPGconn() does not have a
> matching WSACleanup.  WSACleanup could possibly be placed in freePGconn(),
> but unsure if all possible error cases will go through this function.
> 
> This problem exists in both 8.0.1 and 7.4.7 of the libpq interface for
> Windows.

I agree freePGconn() is the proper place.  I will apply the following
patch to current CVS and to 8.0.X.  8.0.3 is being packaged now so I
will wait for 8.0.4.

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/interfaces/libpq/fe-connect.c
===================================================================
RCS file: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v
retrieving revision 1.304
diff -c -c -r1.304 fe-connect.c
*** src/interfaces/libpq/fe-connect.c   25 Mar 2005 00:34:29 -0000      1.304
--- src/interfaces/libpq/fe-connect.c   5 May 2005 15:43:06 -0000
***************
*** 2034,2039 ****
--- 2034,2043 ----
        PGnotify   *notify;
        pgParameterStatus *pstatus;
  
+ #ifdef WIN32
+       WSACleanup();
+ #endif
+ 
        if (!conn)
                return;
  
---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

Reply via email to