From: William A. Rowe Jr Date: Fri, 26 Sep 2008 20:08:15 +0000 (+0000) Subject: Track the internal stack_res_flag for properly constraining X-Git-Tag: 2.3.0~285 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1a8fba5d31e7af03f49d9e4122406dd1a4d209f7;p=apache Track the internal stack_res_flag for properly constraining 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 --- diff --git a/server/mpm/winnt/mpm_winnt.c b/server/mpm/winnt/mpm_winnt.c index 990e40897e..ee174541db 100644 --- a/server/mpm/winnt/mpm_winnt.c +++ b/server/mpm/winnt/mpm_winnt.c @@ -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) diff --git a/server/mpm/winnt/mpm_winnt.h b/server/mpm/winnt/mpm_winnt.h index 2b06e1328b..fd3a8a91f1 100644 --- a/server/mpm/winnt/mpm_winnt.h +++ b/server/mpm/winnt/mpm_winnt.h @@ -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);