>>> 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. > >Actually ... why do we need a WSAStartup in makeEmptyPGconn? >If we have >one in DLL attach, isn't that sufficient?
Not if you link libpq as a static lib... I *think* that's why it was added. In the beginning it was only in the DLL attach code, and if you were using the library as a static lib you had to call it yourself. Not sure when that changed, but clearly that is when the WSACleanup() call should've gone in. //Magnus ---------------------------(end of broadcast)--------------------------- TIP 6: Have you searched our list archives? http://archives.postgresql.org