"ProxyErrorOverride On" is configured. PR 20183.
[Marcus Janson <marcus.janson tre.se>, Joe Orton]
- *) Threaded MPMs for Unix and Win32: Add WorkerStackSize directive
- to override default thread stack size for threads which handle
- client connections. Required for some third-party modules on
- platforms with small default thread stack size. [Jeff Trawick]
+ *) Threaded MPMs for Unix and Win32: Add support for ThreadStackSize
+ directive (previously NetWare-only) to override default thread
+ stack size for threads which handle client connections. Required
+ for some third-party modules on platforms with small default
+ thread stack size. [Jeff Trawick]
*) Win32: Tweak worker thread accounting routines to eliminate
server hang when number of Listen directives in httpd.conf
#endif
#ifdef AP_MPM_WANT_SET_STACKSIZE
-extern apr_size_t ap_worker_stacksize;
-extern const char *ap_mpm_set_worker_stacksize(cmd_parms *cmd, void *dummy,
+extern apr_size_t ap_thread_stacksize;
+extern const char *ap_mpm_set_thread_stacksize(cmd_parms *cmd, void *dummy,
const char *arg);
#endif
"Maximum number of 1k blocks a particular childs allocator may hold."),
#endif
#ifdef AP_MPM_WANT_SET_STACKSIZE
-AP_INIT_TAKE1("WorkerStackSize", ap_mpm_set_worker_stacksize, NULL, RSRC_CONF,
+AP_INIT_TAKE1("ThreadStackSize", ap_mpm_set_thread_stacksize, NULL, RSRC_CONF,
"Size in bytes of stack used by threads handling client connections"),
#endif
#if AP_ENABLE_EXCEPTION_HOOK
apr_threadattr_create(&thread_attr, pchild);
/* 0 means PTHREAD_CREATE_JOINABLE */
apr_threadattr_detach_set(thread_attr, 0);
- if (ap_worker_stacksize != 0) {
- apr_threadattr_stacksize_set(thread_attr, ap_worker_stacksize);
+ if (ap_thread_stacksize != 0) {
+ apr_threadattr_stacksize_set(thread_attr, ap_thread_stacksize);
}
ts->threads = threads;
APR_THREAD_MUTEX_DEFAULT, pchild);
apr_threadattr_create(&worker_thread_attr, pchild);
- apr_threadattr_detach_set(worker_thread_attr, 1); if (ap_worker_stacksize != 0) {
- apr_threadattr_stacksize_set(thread_attr, ap_worker_stacksize);
+ apr_threadattr_detach_set(worker_thread_attr, 1);
+ if (ap_thread_stacksize != 0) {
+ apr_threadattr_stacksize_set(thread_attr, ap_thread_stacksize);
}
/* We are creating worker threads right now */
apr_threadattr_create(&thread_attr, pchild);
/* 0 means PTHREAD_CREATE_JOINABLE */
apr_threadattr_detach_set(thread_attr, 0);
- if (ap_worker_stacksize != 0) {
- apr_threadattr_stacksize_set(thread_attr, ap_worker_stacksize);
+ if (ap_thread_stacksize != 0) {
+ apr_threadattr_stacksize_set(thread_attr, ap_thread_stacksize);
}
ts->threads = threads;
continue;
}
ap_update_child_status_from_indexes(0, i, SERVER_STARTING, NULL);
- child_handles[i] = (HANDLE) _beginthreadex(NULL, (unsigned)ap_worker_stacksize,
+ child_handles[i] = (HANDLE) _beginthreadex(NULL, (unsigned)ap_thread_stacksize,
(LPTHREAD_START_ROUTINE) worker_main,
(void *) i, 0, &tid);
if (child_handles[i] == 0) {
/* 0 means PTHREAD_CREATE_JOINABLE */
apr_threadattr_detach_set(thread_attr, 0);
- if (ap_worker_stacksize != 0) {
- apr_threadattr_stacksize_set(thread_attr, ap_worker_stacksize);
+ if (ap_thread_stacksize != 0) {
+ apr_threadattr_stacksize_set(thread_attr, ap_thread_stacksize);
}
ts->threads = threads;
#endif /* AP_MPM_WANT_SET_MAX_MEM_FREE */
#ifdef AP_MPM_WANT_SET_STACKSIZE
-apr_size_t ap_worker_stacksize = 0; /* use system default */
+apr_size_t ap_thread_stacksize = 0; /* use system default */
-const char *ap_mpm_set_worker_stacksize(cmd_parms *cmd, void *dummy,
+const char *ap_mpm_set_thread_stacksize(cmd_parms *cmd, void *dummy,
const char *arg)
{
long value;
value = strtol(arg, NULL, 0);
if (value < 0 || errno == ERANGE)
- return apr_pstrcat(cmd->pool, "Invalid WorkerStackSize value: ",
+ return apr_pstrcat(cmd->pool, "Invalid ThreadStackSize value: ",
arg, NULL);
- ap_worker_stacksize = (apr_size_t)value;
+ ap_thread_stacksize = (apr_size_t)value;
return NULL;
}