[tor-dev] common/aes.c troubles

Gisle Vanem gvanem at broadpark.no
Wed Dec 14 11:28:48 UTC 2011


In common/aes.c:

#include "orconfig.h"
#include <openssl/opensslv.h>
...
#include <openssl/aes.h>
..
#include "compat.h"

By default <winsock.h> is included in <windows.h> when
WIN32_LEAN_AND_MEAN is not defined. But this is defined too
late; in compat.h. So when <e_os.h> in OpenSSL pulls in <winsock.h>
and <winsock2.h> gets included in compat.h, I'm getting lots of warnings
and redefinitions errors. E.g.

        g:\VC_2010\SDK\include\winsock.h(787) : see declaration of 'inet_ntoa'
g:\VC_2010\SDK\include\winsock2.h(1815) : error C2375: 'listen' : redefinition; different linkage

An easy fix would be to move "#define WIN32_LEAN_AND_MEAN"
into win32/orconfg.h:

diff --git a/src/common/compat.h b/src/common/compat.h
index a228a46..5c66a11 100644
--- a/src/common/compat.h
+++ b/src/common/compat.h
@@ -15,7 +15,9 @@
 #ifndef _WIN32_WINNT
 #define _WIN32_WINNT 0x400
 #endif
+#ifndef WIN32_LEAN_AND_MEAN
 #define WIN32_LEAN_AND_MEAN
+#endif
 #if defined(_MSC_VER) && (_MSC_VER < 1300)
 #include <winsock.h>
 #else

diff --git a/src/win32/orconfig.h b/src/win32/orconfig.h
index e51b638..b9fe31f 100644
--- a/src/win32/orconfig.h
+++ b/src/win32/orconfig.h
@@ -5,6 +5,7 @@
 /* Windows-only defines. */
 #define MS_WINDOWS
 #define MS_WIN32
+#define WIN32_LEAN_AND_MEAN
 #define CONFDIR ""

 /* Define to 1 if you have the <arpa/inet.h> header file. */

How about it?

--gv


More information about the tor-dev mailing list