Thread: Re: pgsql: Remove unsafe calling of WSAStartup and WSA Cleanup from DllMain.
> ------- Original Message ------- > From: Magnus Hagander <magnus@hagander.net> > To: Dave Page <dpage@postgresql.org> > Sent: 08/03/07, 20:37:33 > Subject: Re: [COMMITTERS] pgsql: Remove unsafe calling of WSAStartup and WSACleanup from DllMain. > > No, it shouldn't. > > First, when on mingw, the file with WSAStartup() in it wasn't even > linked in. And this is the DLL that we've been distributing in the MSI. It wasn't? Ok... Anything else we've missed? :-p > Second, they really shouldn't rely on that anyway - I don't think we've > documented anywhere that libpq does this ;-) Because I assume you are > referring to applications that use *other* winsock functions, but don't > call WSAStartup() themselves? Yeah - I'm not saying it's right having now seen the arguments against, but it happens. For example, do you recall us beingconfused when we found we needed to call it in slon.exe? > Because libpq still calls wsastartup on > the first attempt to open a connection. Hmm, ok - did it always? /D
Re: pgsql: Remove unsafe calling of WSAStartup and WSA Cleanup from DllMain.
From
Magnus Hagander
Date:
>> No, it shouldn't. >> >> First, when on mingw, the file with WSAStartup() in it wasn't even >> linked in. And this is the DLL that we've been distributing in the MSI. > > It wasn't? Ok... Anything else we've missed? :-p Probably :-) Let me know when you find it. >> Second, they really shouldn't rely on that anyway - I don't think we've >> documented anywhere that libpq does this ;-) Because I assume you are >> referring to applications that use *other* winsock functions, but don't >> call WSAStartup() themselves? > > Yeah - I'm not saying it's right having now seen the arguments > against, but it happens. For example, do you recall us being confused > when we found we needed to call it in slon.exe? Eh, no, actually not. Sorry. >> Because libpq still calls wsastartup on >> the first attempt to open a connection. > > Hmm, ok - did it always? Seems it was added in 1.255 which was back in July 2003. For 7.4. So not always, but it's not exactly new. //Magnus
Magnus Hagander wrote: >> For example, do you recall us being confused >> when we found we needed to call it in slon.exe? > > Eh, no, actually not. Sorry. Well, it was only a couple of years ago!! Seriously though, from what I recall that was the origin of this code - you left it out because libpq called WSAStartup on your system, and I added it because on mine it didn't. Or something like that. I remember us getting confused about it on IM anyway. #ifdef WIN32 /* * Startup the network subsystem, in case our libpq doesn't */ err = WSAStartup(MAKEWORD(1, 1), &wsaData); if (err != 0) { slon_log(SLON_FATAL, "main: Cannot start the network subsystem - %d\n", err); slon_exit(-1); } #endif /D