]> granicus.if.org Git - apache/commitdiff
Track the internal stack_res_flag for properly constraining
authorWilliam A. Rowe Jr <wrowe@apache.org>
Fri, 26 Sep 2008 20:08:15 +0000 (20:08 +0000)
committerWilliam A. Rowe Jr <wrowe@apache.org>
Fri, 26 Sep 2008 20:08:15 +0000 (20:08 +0000)
win32 stacksize on windows 2003 (xp) and 2008 (vista).

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@699476 13f79535-47bb-0310-9956-ffa450edef68

server/mpm/winnt/mpm_winnt.c
server/mpm/winnt/mpm_winnt.h

index 990e40897e3e622393269a8f94d156d9f7d5b88d..ee174541db0a5b04c344724c92e0b371673a1da3 100644 (file)
@@ -56,6 +56,9 @@ static char const* signal_arg = NULL;
 
 OSVERSIONINFO osver; /* VER_PLATFORM_WIN32_NT */
 
+/* set by child_main to STACK_SIZE_PARAM_IS_A_RESERVATION for NT >= 5.1 (XP/2003) */
+DWORD stack_res_flag;
+
 static DWORD parent_pid;
 DWORD my_pid;
 
@@ -1017,6 +1020,12 @@ void winnt_rewrite_args(process_rec *process)
     osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
     GetVersionEx(&osver);
 
+    if (osver.dwPlatformId == VER_PLATFORM_WIN32_NT 
+        && ((osver.dwMajorVersion > 5)
+         || ((osver.dwMajorVersion == 5) && (osver.dwMinorVersion > 0)))) {
+        stack_res_flag = STACK_SIZE_PARAM_IS_A_RESERVATION;
+    }
+
     /* AP_PARENT_PID is only valid in the child */
     pid = getenv("AP_PARENT_PID");
     if (pid)
index 2b06e1328b707477f57560931cce77bb278acd58..fd3a8a91f1c2f8ffa6af2d69aca3df18752f2662 100644 (file)
@@ -65,11 +65,13 @@ void mpm_start_child_console_handler(void);
 void mpm_nt_eventlog_stderr_open(char *display_name, apr_pool_t *p);
 void mpm_nt_eventlog_stderr_flush(void);
 
-/* From winnt.c: */
+/* From mpm_winnt.c: */
 
 extern int use_acceptex;
 extern int winnt_mpm_state;
 extern OSVERSIONINFO osver;
+extern DWORD stack_res_flag;
+
 extern void clean_child_exit(int);
 
 void setup_signal_names(char *prefix);