[tor-dev] WIN32_WINNT in or/or.h

Gisle Vanem gvanem at broadpark.no
Mon Jun 27 21:45:39 UTC 2011

"Nick Mathewson" <nickm at alum.mit.edu> wrote:

> On Mon, Jun 20, 2011 at 6:32 PM, Gisle Vanem <gvanem at broadpark.no>juswrote:
>> I think that the values for 'WIN32_WINNT' and '_WIN32_WINNT'
>> should be protected against redefinement.
>> Reason: In order for MingW to prototype getaddrinfo() and freeaddrinfo()
>> correctly (in <ws2tcpip.h>), '_WIN32_WINNT' *must* be defined as 0x0501
>> or higher. or/or.h blindly defines them as 0x0400. So, building with
>> -DHAVE_GETADDRINFO needs _WIN32_WINNT to be set to 0x0501.
> I'm confused about the situation here.  Does "-DHAVE_GETADDRINFO" mean
> that you're overriding the value in orconfig.h from the command line,


> and presumably setting your own _WIN32_WINNT value there too?

Yes, the "MingW way" to use and prototype some of these enhanced function is 
to set _WIN32_WINNT with the proper value (0x0501 in this case. On cmd-line etc).
The trouble is specifically that <or/or.h> overrides that with value 0x0400.

Here are some lines from MingW's <ws2tcpip.h>

#if (_WIN32_WINNT >= 0x0501)
void WSAAPI freeaddrinfo (struct addrinfo*);
int WSAAPI getaddrinfo (const char*,const char*,const struct addrinfo*,
                        struct addrinfo**);
int WSAAPI getnameinfo(const struct sockaddr*,socklen_t,char*,DWORD,
/* FIXME: Need WS protocol-independent API helpers.  */



More information about the tor-dev mailing list