RE: [HACKERS] LIBPQ for WIN32

Поиск
Список
Период
Сортировка
От Magnus Hagander
Тема RE: [HACKERS] LIBPQ for WIN32
Дата
Msg-id 215896B6B5E1CF11BC5600805FFEA821F3FC32@sirius.edu.sollentuna.se
обсуждение исходный текст
Ответы RE: [HACKERS] LIBPQ for WIN32  ("Taral" <taral@mail.utexas.edu>)
RE: [HACKERS] LIBPQ for WIN32  ("Hiroshi Inoue" <Inoue@tpf.co.jp>)
Список pgsql-hackers
> > With the current implementation, I don't beleive it will make a
> difference -
> > I don't think that any part of the Winsock system is
> actually hidden if
> you
> > ask for a lower version. But it is _permitted_ by the
> specification that
> the
> > DLL can hide parts that belong to a higher version than the
> one requested.
> >
> > So I'm not 100% sure... Does anybody have access to a
> Winsock?@that
> actually
> > hides some details when you ask for the wrong version?
> >
>
> By the specs there may be the DLL that doesn't support lower versions.
> In that case my code doesn't work well.
> But we can delay to call WSAStartup() after the first socket
> call in LIBPQ.
> My example code in fe-connect.c is such as follows.
This looks like a great way to do it :-)


>     hp = gethostbyname(conn->pghost);
> #ifdef    WIN32
>     if ((hp == NULL) && (GetLastError() == WSANOTINITIALISED))
>     {
>         WSADATA    wsaData;
>         if (WSAStartup(MAKEWORD(1,1),&wsaData))
>         {
>             fprintf(stderr, "Failed to start
> winsock: %i\n", WSAGetLastError());
>             exit(1);

This is not the way to do it, though - what if it's a gui program.
Should instead be, like the other error handling:

            sprintf(conn->errorMessage,
                    "connectDB() -- Failed to start
winsock: %i\n",
                    WSAGetLstError());
            goto connect_errReturn;

>         }
>         ....
>         ???? for WSACleanup() ????
>         ....
Yes, this is the problem. Perhaps set a global flag in the DLL that is set
if we have ever called WSAStartup() from the DLL. Then we can check in
DllMain() at process detachment if we have to close the winsock?

Will you write up a patch or should I?

//Magnus

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Vince Vielhaber
Дата:
Сообщение: RE: [HACKERS] LIBPQ for WIN32
Следующее
От: Magnus Hagander
Дата:
Сообщение: RE: [HACKERS] LIBPQ for WIN32