50#define APR_WANT_STRFUNC
56#if APR_HAVE_SYS_TYPES_H
61#include <sys/select.h>
85#include <nks/netware.h>
102#ifndef HARD_SERVER_LIMIT
103#define HARD_SERVER_LIMIT 1
106#define WORKER_DEAD SERVER_DEAD
107#define WORKER_STARTING SERVER_STARTING
108#define WORKER_READY SERVER_READY
109#define WORKER_IDLE_KILL SERVER_IDLE_KILL
111#define MPM_HARD_LIMITS_FILE "/mpm_default.h"
151#define HANDLEDCOMMAND 0
152#define NOTMYCOMMAND 1
159#define DBPRINT0(s) printf(s)
160#define DBPRINT1(s,v1) printf(s,v1)
161#define DBPRINT2(s,v1,v2) printf(s,v1,v2)
164#define DBPRINT1(s,v1)
165#define DBPRINT2(s,v1,v2)
327#define MAX_WB_RETRIES 3
409 "select() failed on listen socket");
508 "apr_socket_accept: giving up.");
515 "apr_socket_accept: (client socket)");
609#ifndef MAX_SPAWN_RATE
610#define MAX_SPAWN_RATE (64)
684 "server reached MaxRequestWorkers setting, consider"
685 " raising the MaxRequestWorkers setting");
693 "server seems busy, (you may need "
694 "to increase StartServers, or Min/MaxSpareServers), "
695 "spawning %d children, there are %d idle, and "
789 printf (
"Requests per interval:\t%d\n",
reqs);
810 printf(
" Listening on port(s):");
820 if (((
module*)*
m)->dynamic_load_handle) {
834 "no listening sockets available, shutting down");
874 "no listening sockets available, shutting down");
916 "%s configured -- resuming normal operations",
945 "caught SIGTERM, shutting down");
948 printf (
"\rShutdown pending. Waiting for %lu thread(s) to terminate...",
965 "Graceful restart requested, doing restart");
969 printf (
"\rRestart pending. Waiting for %lu thread(s) to terminate...",
973 printf (
"\nRestarting...\n");
1025 "WARNING: MaxThreads of %d exceeds compile-time "
1026 "limit of %d threads, decreasing to %d. "
1027 "To increase, please see the HARD_THREAD_LIMIT "
1028 "define in server/mpm/netware%s.",
1033 "MaxThreads of %d exceeds compile-time limit "
1034 "of %d, decreasing to match",
1042 "WARNING: MaxThreads of %d not allowed, "
1046 "MaxThreads of %d not allowed, increasing to 1",
1058 "WARNING: StartThreads of %d not allowed, "
1062 "StartThreads of %d not allowed, increasing to 1",
1071 "WARNING: MinSpareThreads of %d not allowed, "
1072 "increasing to 1 to avoid almost certain server failure. "
1076 "MinSpareThreads of %d not allowed, increasing to 1",
1126 if (process->
argc > 0) {
1129 int i,
len = strlen(
s);
1132 if (
s[
i] ==
'\\' ||
s[
i] ==
'/') {
1145 sizeof(
const char *));
1211 while (*
pID && (*
pID ==
' '))
1220 printf(
"Restart Requested...\n");
1234 printf(
"Shutdown Requested...\n");
1252 printf(
"Usage: APACHE2 [command] [-p <instance ID>]\n");
1254 printf(
"\tDIRECTIVES - Show directives\n");
1255 printf(
"\tHELP - Display this help information\n");
1256 printf(
"\tMODULES - Show a list of the loaded modules\n");
1257 printf(
"\tRESTART - Reread the configuration file and restart Apache\n");
1258 printf(
"\tSETTINGS - Show current thread status\n");
1259 printf(
"\tSHUTDOWN - Shutdown Apache\n");
1260 printf(
"\tVERSION - Display the server version information\n");
1282 printf(
"Error on allocate resource tag\n");
1346 "Number of worker threads launched at server startup"),
1348 "Minimum number of idle threads, to handle request spikes"),
1350 "Maximum number of idle threads"),
1352 "Maximum number of worker threads alive at the same time"),
Symbol export macros and hook functions.
Apache Listeners Library.
Apache Multi-Processing Module library.
const char apr_size_t len
char * strstr(char *s1, char *s2)
APR Command Arguments (getopt)
APR Portability Routines.
APR Thread Mutex Routines.
APR Thread and Process Library.
APR Standard Headers Support.
void ap_process_connection(conn_rec *c, void *csd)
void ap_lingering_close(conn_rec *c)
conn_rec * ap_run_create_connection(apr_pool_t *p, server_rec *server, apr_socket_t *csd, long conn_id, void *sbh, apr_bucket_alloc_t *alloc)
#define AP_INIT_TAKE1(directive, func, mconfig, where, help)
void ap_run_child_init(apr_pool_t *pchild, server_rec *s)
#define AP_DECLARE_MODULE(foo)
void ap_show_directives(void)
void ap_hook_check_config(ap_HOOK_check_config_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
void ap_hook_pre_config(ap_HOOK_pre_config_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
void ap_show_modules(void)
const char * ap_get_server_built(void)
const char * ap_get_server_description(void)
#define APEXIT_CHILDFATAL
void ap_listen_pre_config(void)
ap_listen_rec * ap_listeners
int ap_setup_listeners(server_rec *s)
void ap_log_mpm_common(server_rec *s)
void ap_log_command_line(apr_pool_t *p, server_rec *s)
#define AP_SERVER_BASEARGS
server_rec * ap_server_conf
void ap_run_child_status(server_rec *s, pid_t pid, ap_generation_t gen, int slot, mpm_child_status state)
void ap_hook_mpm(ap_HOOK_mpm_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
#define DEFAULT_THREAD_STACKSIZE
#define DEFAULT_START_THREADS
#define DEFAULT_MAX_FREE_THREADS
#define DEFAULT_MIN_FREE_THREADS
#define SCOREBOARD_MAINTENANCE_INTERVAL
int ap_max_requests_per_child
void ap_hook_mpm_get_name(ap_HOOK_mpm_get_name_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
void ap_hook_mpm_query(ap_HOOK_mpm_query_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
apr_size_t ap_thread_stacksize
apr_uint32_t ap_max_mem_free
#define APR_STATUS_IS_ENETUNREACH(s)
#define APR_STATUS_IS_ETIMEDOUT(s)
#define APR_STATUS_IS_ECONNRESET(s)
#define APR_STATUS_IS_EAGAIN(s)
#define APR_STATUS_IS_EHOSTUNREACH(s)
apr_brigade_flush void * ctx
#define MPM20_MODULE_STUFF
const char * ap_check_cmd_context(cmd_parms *cmd, unsigned forbidden)
#define APR_FILEPATH_TRUENAME
apr_array_header_t ** result
apr_abortfunc_t apr_allocator_t * allocator
const char apr_status_t(*) apr_pool_t *poo __attribute__)((nonnull(2, 4)))
#define apr_pool_create(newpool, parent)
apr_int32_t apr_int32_t apr_int32_t err
#define AP_MPMQ_IS_FORKED
#define AP_MPMQ_MPM_STATE
#define AP_MPMQ_MAX_DAEMON_USED
#define AP_MPMQ_MAX_SPARE_DAEMONS
#define AP_MPMQ_MIN_SPARE_THREADS
#define AP_MPMQ_HARD_LIMIT_THREADS
#define AP_MPMQ_IS_THREADED
#define AP_MPMQ_MAX_THREADS
#define AP_MPMQ_MAX_REQUESTS_DAEMON
#define AP_MPMQ_MAX_SPARE_THREADS
#define AP_MPMQ_GENERATION
#define AP_MPMQ_MAX_DAEMONS
#define AP_MPMQ_HARD_LIMIT_DAEMONS
#define AP_MPMQ_MIN_SPARE_DAEMONS
#define AP_MPMQ_NOT_SUPPORTED
Apache connection library.
Multi-Processing Modules functions.
static char * ap_my_addrspace
int nlmUnloadSignaled(int wait)
static void set_signals(void)
static int ap_threads_min_free
static ap_generation_t volatile ap_my_generation
static void sig_term(int sig)
static void perform_idle_server_maintenance(apr_pool_t *p)
static void show_server_data()
static int ap_threads_per_child
static int netware_check_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
static void restart(void)
static void RemoveConsoleHandler(void)
static int InstallConsoleHandler(void)
#define HARD_SERVER_LIMIT
static const char * set_min_free_threads(cmd_parms *cmd, void *dummy, const char *arg)
static void netware_rewrite_args(process_rec *process)
static int volatile restart_pending
static apr_pool_t * pmain
static apr_pool_t * pconf
static int ap_threads_limit
static const char * netware_get_name(void)
static int hold_off_on_exponential_spawning
void worker_main(void *arg)
static int setup_listeners(server_rec *s)
static void clean_child_exit(int code, int worker_num, apr_pool_t *ptrans, apr_bucket_alloc_t *bucket_alloc) __attribute__((noreturn))
static int netware_query(int query_code, int *result, apr_status_t *rv)
static const char * set_max_free_threads(cmd_parms *cmd, void *dummy, const char *arg)
static const char * set_thread_limit(cmd_parms *cmd, void *dummy, const char *arg)
#define MPM_HARD_LIMITS_FILE
static const char * set_threads_to_start(cmd_parms *cmd, void *dummy, const char *arg)
static unsigned long worker_thread_count
static int ap_threads_to_start
static int CommandLineInterpreter(scr_t screenID, const char *commandLine)
static int shutdown_listeners()
static int ap_threads_max_free
static int make_child(server_rec *s, int slot)
static CommandParser_t ConsoleHandler
static void mpm_main_cleanup(void)
static int netware_run(apr_pool_t *_pconf, apr_pool_t *plog, server_rec *s)
static void display_settings()
static int ap_max_workers_limit
static int volatile is_graceful
static int netware_pre_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp)
static void netware_mpm_hooks(apr_pool_t *p)
static void startup_workers(int number_to_start)
static const command_rec netware_mpm_cmds[]
static int volatile shutdown_pending
static int volatile wait_to_finish
static int idle_spawn_rate
#define DBPRINT2(s, v1, v2)
static void mpm_term(void)
#define HARD_THREAD_LIMIT
apr_os_thread_t apr_os_thread_current()
static int requests_this_child
Apache scoreboard library.
void ap_create_sb_handle(ap_sb_handle_t **new_sbh, apr_pool_t *p, int child_num, int thread_num)
int ap_run_pre_mpm(apr_pool_t *p, ap_scoreboard_e sb_type)
#define SERVER_BUSY_WRITE
scoreboard * ap_scoreboard_image
int ap_update_child_status_from_indexes(int child_num, int thread_num, int status, request_rec *r)
#define SERVER_NUM_STATUS
#define SERVER_BUSY_KEEPALIVE
apr_array_header_t * mpm_new_argv
Apache's listeners record.
Structure to store things which are per connection.
ap_generation_t running_generation
A structure that represents one process.
ap_generation_t generation
A structure that represents the current request.
A structure to store information for each virtual server.
apr_status_t apr_os_sock_get(apr_os_sock_t *thesock, apr_socket_t *sock)
apr_status_t apr_socket_accept(apr_socket_t **new, apr_socket_t *sock, apr_pool_t *connection_context)
apr_status_t apr_socket_close(apr_socket_t *thesocket)
apr_status_t apr_socket_opt_set(apr_socket_t *sock, apr_int32_t opt, apr_int32_t on)
typedef int(WSAAPI *apr_winapi_fpt_WSAPoll)(IN OUT LPWSAPOLLFD fdArray