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