forked from ByteInternet/libapache-mod-fastcgi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mod_fastcgi.h
219 lines (177 loc) · 8.42 KB
/
mod_fastcgi.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
/*
* $Id: mod_fastcgi.h,v 1.55 2009/09/29 00:31:55 robs Exp $
*/
#ifndef MOD_FASTCGI_H
#define MOD_FASTCGI_H
#define MOD_FASTCGI_VERSION "mod_fastcgi-SNAP-0910052141"
#define FASTCGI_HANDLER_NAME "fastcgi-script"
/*
* # of idle seconds allowed to pass while connected to a FastCGI before aborting
*/
#define FCGI_DEFAULT_IDLE_TIMEOUT 30
/*
* (WIN32) # of sec to wait while trying to connect using a named pipe.
* This is overridden by -appConnTimeout, if set. This value is similiar
* to the OS specific (blocking) connect() timeout. According to XXX
* this is typically XXX sec.
*/
#define FCGI_NAMED_PIPE_CONNECT_TIMEOUT 90
/*
* [WIN32] The number of millisecs to wait after having signaled the
* termination event to its applications before issuing a TerminateProcess().
* If all of the applications are based on a version of the FastCGI
* application library that properly handles the shutdown event
* (fcgi2 v2.2.4), this can be set to <= 0 to prevent the use of
* TerminateProcess() entirely. If none of the applications support the
* termination event, this value can be set to 1. It is highly reccomended
* that the termination event be supported, as TerminateProcess() is a
* brutal way of taking down an application.
*/
#define WIN32_SHUTDOWN_GRACEFUL_WAIT 1000
/*
* The number of failed starts that can occur before the application is
* considered broken and start attempts fall back to FAILED_STARTS_DELAY.
*/
#define MAX_FAILED_STARTS 3
/*
* The number of seconds between attempts to start an application that
* has been declared broken (see MAX_FAILED_STARTS).
*/
#define FAILED_STARTS_DELAY 600
#define FCGI_DEFAULT_LISTEN_Q 100 /* listen queue (backlog) depth */
#define FCGI_DEFAULT_RESTART_DELAY 5 /* delay between restarts */
#define DEFAULT_INIT_START_DELAY 1 /* delay between starts */
#define FCGI_DEFAULT_PRIORITY 0 /* process priority - not used */
#define FCGI_MIN_EXEC_RETRY_DELAY 10 /* minimum number of seconds to
wait before restarting */
#define MAX_INIT_ENV_VARS 64 /* max # of -initial-env options */
/* max number of chars in a line of stderr we can handle from a FastCGI Server */
#define FCGI_SERVER_MAX_STDERR_LINE_LEN 1023
/* size of the buffer the PM uses to read records from the request handlers */
#define FCGI_MSGS_BUFSIZE 32 * 512
#define SERVER_BUFSIZE 8192
/* Dynamic FastCGI applications */
#define FCGI_DEFAULT_MAX_PROCS 50 /* maximum number of processes that
* are allowed to run on system */
#define FCGI_DEFAULT_MIN_PROCS 5 /* minimum number of processes that
* can be run without being killed
* off by the process manager */
#define FCGI_DEFAULT_MAX_CLASS_PROCS 10 /* maximum number of processes that
* are allowed to run for a single
* application class */
#define FCGI_DEFAULT_KILL_INTERVAL 300 /* number of seconds in which we
* should execute the kill policy
* by killing off extra instances */
#define FCGI_DEFAULT_UPDATE_INTERVAL 300 /* number of seconds in which we
* should recalculate the value of
* totalConnTime variable */
#define FCGI_DEFAULT_GAIN 0.5 /* value used as an exponent in the
* calculation of the exponentially
* decayed connection times;
* old values are scaled by
* (1-dynamicGain), so making it
* smaller weights them more heavily
* compared to the current value,
* which is scaled by dynamicGain */
#define FCGI_DEFAULT_THRESHOLD_1 0 /* if load falls below this value
* and we have only one instance
* running, it is killed off */
#define FCGI_DEFAULT_THRESHOLD_N 50 /* if load falls below this value
* and we have more than one
* instances, one is killed off */
#define FCGI_DEFAULT_START_PROCESS_DELAY 3 /* specifies the maximum number of
* seconds a server should wait in
* attempt to connect to fcgi app
* before sending FCGI_REQUEST_TIMEOUT_JOB */
#define FCGI_DEFAULT_MIN_SERVER_LIFE 30 /* the default minimum number of
* seconds a server must stay alive
* before it's considered broken. */
/*
* # of sec to wait in a non-blocking connect() to the FastCGI application
* before aborting the request, or 0 to indicate that blocking connect()s
* should be used. Non-blocking connect()s are problematic on many platforms.
*/
#define FCGI_DEFAULT_APP_CONN_TIMEOUT 0
#define FCGI_DEFAULT_PROCESS_SLACK 5 /* if this number combined with the
* number of the currently running
* processes exceeds dynamicMaxProcs, then
* the KillDynamicProcs() is invoked */
#define FCGI_DEFAULT_RESTART_DYNAMIC 0 /* Do not restart dynamic processes */
#define FCGI_DEFAULT_AUTOUPDATE 0 /* do not automatically restart
* fcgi apps when the binary on the
* disk is changed. */
/*
* Should data recieved from the FastCGI server be immediately flushed to
* the client? Default: FALSE
*/
#define FCGI_FLUSH FALSE
#ifdef WIN32
/* # of millisecs to wait on the mbox mutex */
#define FCGI_MBOX_MUTEX_TIMEOUT 5000
#define DEFAULT_SOCK_DIR "\\\\.\\pipe\\FastCGI\\"
#elif defined(APACHE2)
/* Default dir for Unix/Domain sockets */
#define DEFAULT_SOCK_DIR DEFAULT_REL_RUNTIMEDIR "/fastcgi"
#else /* !WIN32 && !APACHE2 */
/* Default dir for Unix/Domain sockets */
#define DEFAULT_SOCK_DIR "logs/fastcgi"
#endif
#define FCGI_MAGIC_TYPE "application/x-httpd-fcgi"
#if defined(PATH_MAX)
#define FCGI_MAXPATH PATH_MAX
#elif defined(MAXPATHLEN)
#define FCGI_MAXPATH MAXPATHLEN
#else
#define FCGI_MAXPATH 512
#endif
/* FCGI_REQUEST_COMPLETE_JOB is the longest: id, path, user, gid, qtime, start */
#define FCGI_MSG_CRAP 1 + 2 + MAX_USER_NAME_LEN + 1 + MAX_GID_CHAR_LEN + (2 * 11) + 3
#if defined(PIPE_BUF) && PIPE_BUF < FCGI_MAXPATH + FCGI_MSG_CRAP
#define FCGI_MAX_MSG_LEN PIPE_BUF
#undef FCGI_MAXPATH
#define FCGI_MAXPATH PIPE_BUF - FCGI_MSG_CRAP
#else
#define FCGI_MAX_MSG_LEN FCGI_MAXPATH + FCGI_MSG_CRAP
#endif
/* There is no way to reliably determiine the highest descriptor that can be
* assigned (UNP Vol1 Ed2 p337, and APUE p43) so we pick a number. */
#if (defined FD_SETSIZE) && (FD_SETSIZE > 1024)
#define FCGI_MAX_FD FD_SETSIZE
#else
#define FCGI_MAX_FD 1024
#endif
#ifndef SUN_LEN
#define SUN_LEN(sock) \
(sizeof(*(sock)) - sizeof((sock)->sun_path) + strlen((sock)->sun_path))
#endif
#if defined MAXLOGNAME && MAXLOGNAME > 15
#define MAX_USER_NAME_LEN MAXLOGNAME
#elif defined UT_NAMESIZE && UT_NAMESIZE > 15
#define MAX_USER_NAME_LEN UT_NAMESIZE
#else
#define MAX_USER_NAME_LEN 15 /* Max len of user name (suexec w/ ~user), */
#endif /* must accomodate uid printed as %ld too */
#define MAX_GID_CHAR_LEN 15 /* Max #chars in a gid printed as %ld */
#ifndef TRUE
#define TRUE (1)
#endif
#ifndef FALSE
#define FALSE (0)
#endif
#ifndef min
#define min(a,b) ((a) < (b) ? (a) : (b))
#endif
#ifndef max
#define max(a,b) ((a) > (b) ? (a) : (b))
#endif
#ifdef APACHE2
#define get_signal_text(a) apr_signal_description_get(a)
#else /* !APACHE2 */
/* This is (more or less) from http_main.c. It should be in an Apache header */
#ifndef SYS_SIGLIST
#define SYS_SIGLIST ap_sys_siglist
extern const char *ap_sys_siglist[];
#endif
#define get_signal_text(a) SYS_SIGLIST[WTERMSIG(a)]
#endif /* !APACHE2 */
#endif /* MOD_FASTCGI_H */