Hello,

Since the Next Protocol Negotiation addition, mod_ssl cannot be compiled on
Windows since the AP namespace is for imports.

Are there any objections to this which allows the NPN hooks to be exported in
Windows.

If there are no objection I'll commit this in a few days.

Regards,

Gregg
Index: modules/ssl/mod_ssl.c
===================================================================
--- modules/ssl/mod_ssl.c       (revision 1438974)
+++ modules/ssl/mod_ssl.c       (working copy)
@@ -291,13 +291,13 @@
 
 /* Implement 'modssl_run_npn_advertise_protos_hook'. */
 APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(
-    modssl, AP, int, npn_advertise_protos_hook,
+    modssl, MODSSL, int, npn_advertise_protos_hook,
     (conn_rec *connection, apr_array_header_t *protos),
     (connection, protos), OK, DECLINED)
 
 /* Implement 'modssl_run_npn_proto_negotiated_hook'. */
 APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(
-    modssl, AP, int, npn_proto_negotiated_hook,
+    modssl, MODSSL, int, npn_proto_negotiated_hook,
     (conn_rec *connection, const char *proto_name, apr_size_t proto_name_len),
     (connection, proto_name, proto_name_len), OK, DECLINED)
 
Index: modules/ssl/mod_ssl.dsp
===================================================================
--- modules/ssl/mod_ssl.dsp     (revision 1438974)
+++ modules/ssl/mod_ssl.dsp     (working copy)
@@ -43,7 +43,7 @@
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
-# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "../../include" /I "../generators" 
/I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /I 
"../../srclib/openssl/inc32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D 
"WIN32_LEAN_AND_MEAN" /D "NO_IDEA" /D "NO_RC5" /D "NO_MDC2" /D 
"OPENSSL_NO_IDEA" /D "OPENSSL_NO_RC5" /D "OPENSSL_NO_MDC2" /D "HAVE_OPENSSL" /D 
"HAVE_SSL_SET_STATE" /D "HAVE_OPENSSL_ENGINE_H" /D "HAVE_ENGINE_INIT" /D 
"HAVE_ENGINE_LOAD_BUILTIN_ENGINES" /Fd"Release\mod_ssl_src" /FD /c
+# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "../../include" /I "../generators" 
/I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /I 
"../../srclib/openssl/inc32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D 
"WIN32_LEAN_AND_MEAN" /D "NO_IDEA" /D "NO_RC5" /D "NO_MDC2" /D 
"OPENSSL_NO_IDEA" /D "OPENSSL_NO_RC5" /D "OPENSSL_NO_MDC2" /D "HAVE_OPENSSL" /D 
"HAVE_SSL_SET_STATE" /D "HAVE_OPENSSL_ENGINE_H" /D "HAVE_ENGINE_INIT" /D 
"HAVE_ENGINE_LOAD_BUILTIN_ENGINES" /D "MODSSL_DECLARE_EXPORT" 
/Fd"Release\mod_ssl_src" /FD /c
 # ADD BASE MTL /nologo /D "NDEBUG" /win32
 # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x409 /d "NDEBUG"
@@ -75,7 +75,7 @@
 # PROP Ignore_Export_Lib 0
 # PROP Target_Dir ""
 # ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D 
"_WINDOWS" /FD /c
-# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "../../include" /I "../generators" 
/I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /I 
"../../srclib/openssl/inc32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D 
"WIN32_LEAN_AND_MEAN" /D "NO_IDEA" /D "NO_RC5" /D "NO_MDC2" /D 
"OPENSSL_NO_IDEA" /D "OPENSSL_NO_RC5" /D "OPENSSL_NO_MDC2" /D "HAVE_OPENSSL" /D 
"HAVE_SSL_SET_STATE" /D "HAVE_OPENSSL_ENGINE_H" /D "HAVE_ENGINE_INIT" /D 
"HAVE_ENGINE_LOAD_BUILTIN_ENGINES" /Fd"Debug\mod_ssl_src" /FD /c
+# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "../../include" /I "../generators" 
/I "../../srclib/apr/include" /I "../../srclib/apr-util/include" /I 
"../../srclib/openssl/inc32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D 
"WIN32_LEAN_AND_MEAN" /D "NO_IDEA" /D "NO_RC5" /D "NO_MDC2" /D 
"OPENSSL_NO_IDEA" /D "OPENSSL_NO_RC5" /D "OPENSSL_NO_MDC2" /D "HAVE_OPENSSL" /D 
"HAVE_SSL_SET_STATE" /D "HAVE_OPENSSL_ENGINE_H" /D "HAVE_ENGINE_INIT" /D 
"HAVE_ENGINE_LOAD_BUILTIN_ENGINES" /D "MODSSL_DECLARE_EXPORT" 
/Fd"Debug\mod_ssl_src" /FD /c
 # ADD BASE MTL /nologo /D "_DEBUG" /win32
 # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
 # ADD BASE RSC /l 0x409 /d "_DEBUG"
Index: modules/ssl/mod_ssl.h
===================================================================
--- modules/ssl/mod_ssl.h       (revision 1438974)
+++ modules/ssl/mod_ssl.h       (working copy)
@@ -29,6 +29,27 @@
 #include "httpd.h"
 #include "apr_optional.h"
 
+/* Create a set of MODSSL_DECLARE(type), MODSSL_DECLARE_NONSTD(type) and
+ * MODSSL_DECLARE_DATA with appropriate export and import tags for the platform
+ */
+#if !defined(WIN32)
+#define MODSSL_DECLARE(type)            type
+#define MODSSL_DECLARE_NONSTD(type)     type
+#define MODSSL_DECLARE_DATA
+#elif defined(MODSSL_DECLARE_STATIC)
+#define MODSSL_DECLARE(type)            type __stdcall
+#define MODSSL_DECLARE_NONSTD(type)     type
+#define MODSSL_DECLARE_DATA
+#elif defined(MODSSL_DECLARE_EXPORT)
+#define MODSSL_DECLARE(type)            __declspec(dllexport) type __stdcall
+#define MODSSL_DECLARE_NONSTD(type)     __declspec(dllexport) type
+#define MODSSL_DECLARE_DATA             __declspec(dllexport)
+#else
+#define MODSSL_DECLARE(type)            __declspec(dllimport) type __stdcall
+#define MODSSL_DECLARE_NONSTD(type)     __declspec(dllimport) type
+#define MODSSL_DECLARE_DATA             __declspec(dllimport)
+#endif
+
 /** The ssl_var_lookup() optional function retrieves SSL environment
  * variables. */
 APR_DECLARE_OPTIONAL_FN(char *, ssl_var_lookup,
@@ -69,7 +90,7 @@
  * given the connection and an APR array; it should push one or more char*'s
  * pointing to null-terminated strings (such as "http/1.1" or "spdy/2") onto
  * the array and return OK, or do nothing and return DECLINED. */
-APR_DECLARE_EXTERNAL_HOOK(modssl, AP, int, npn_advertise_protos_hook,
+APR_DECLARE_EXTERNAL_HOOK(modssl, MODSSL, int, npn_advertise_protos_hook,
                           (conn_rec *connection, apr_array_header_t *protos))
 
 /** The npn_proto_negotiated optional hook allows other modules to discover the
@@ -80,7 +101,7 @@
  * connection, a non-null-terminated string containing the protocol name, and
  * the length of the string; it should do something appropriate (i.e. insert or
  * remove filters) and return OK, or do nothing and return DECLINED. */
-APR_DECLARE_EXTERNAL_HOOK(modssl, AP, int, npn_proto_negotiated_hook,
+APR_DECLARE_EXTERNAL_HOOK(modssl, MODSSL, int, npn_proto_negotiated_hook,
                           (conn_rec *connection, const char *proto_name,
                            apr_size_t proto_name_len))
 

Reply via email to