changeset 4249:e648bb470e12 stable-1.0

Merging r4155, r4219, r4220, r4230: Windows related fixes: *) Fixed segmentation fault with empty config on Windows. See here for report: http://mailman.nginx.org/pipermail/nginx-ru/2011-September/043288.html *) Recent SDKs allow to build IPV6 only for Windows XP or above. *) Fixing conflict with SDK off_t definition. *) Fix of building by Microsoft Visual C++ 10 compiler.
author Igor Sysoev <igor@sysoev.ru>
date Tue, 01 Nov 2011 13:56:26 +0000
parents 2fad4d19ea4b
children ac0a3dc948c3
files auto/cc/name src/http/ngx_http.c src/os/win32/ngx_win32_config.h
diffstat 3 files changed, 19 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/auto/cc/name
+++ b/auto/cc/name
@@ -25,6 +25,13 @@ fi
 
 if [ "$CC" = cl ]; then
     if `$NGX_WINE $CC -v 2>&1 \
+        | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 16' \
+        >/dev/null 2>&1`; then
+
+        NGX_CC_NAME=msvc10
+        echo " + using Microsoft Visual C++ 10 compiler"
+
+    else if `$NGX_WINE $CC -v 2>&1 \
         | grep '^Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14' \
         >/dev/null 2>&1`; then
 
@@ -43,6 +50,7 @@ if [ "$CC" = cl ]; then
         echo " + using Microsoft Visual C++ compiler"
     fi
     fi
+    fi
 
 else
 if [ "$CC" = wcl386 ]; then
--- a/src/http/ngx_http.c
+++ b/src/http/ngx_http.c
@@ -1747,10 +1747,12 @@ ngx_http_add_listening(ngx_conf_t *cf, n
 
 #if (NGX_WIN32)
     {
-    ngx_iocp_conf_t  *iocpcf;
-
-    iocpcf = ngx_event_get_conf(cf->cycle->conf_ctx, ngx_iocp_module);
-    if (iocpcf->acceptex_read) {
+    ngx_iocp_conf_t  *iocpcf = NULL;
+
+    if (ngx_get_conf(cf->cycle->conf_ctx, ngx_events_module)) {
+        iocpcf = ngx_event_get_conf(cf->cycle->conf_ctx, ngx_iocp_module);
+    }
+    if (iocpcf && iocpcf->acceptex_read) {
         ls->post_accept_buffer_size = cscf->client_header_buffer_size;
     }
     }
--- a/src/os/win32/ngx_win32_config.h
+++ b/src/os/win32/ngx_win32_config.h
@@ -9,7 +9,7 @@
 
 
 #define WIN32         0x0400
-#define _WIN32_WINNT  0x0500
+#define _WIN32_WINNT  0x0501
 
 
 #define STRICT
@@ -126,8 +126,11 @@ typedef unsigned __int64    uint64_t;
 typedef int                 intptr_t;
 typedef u_int               uintptr_t;
 
+/* Windows defines off_t as long, which is 32-bit */
+typedef __int64             off_t;
+#define _OFF_T_DEFINED
+
 typedef int                 ssize_t;
-typedef __int64             off_t;
 typedef uint32_t            in_addr_t;
 typedef u_short             in_port_t;
 typedef int                 sig_atomic_t;