1
0
mirror of https://github.com/apache/httpd.git synced 2025-08-07 04:02:58 +03:00

Finish the commits for the change in the header files. Basically, this hides

all of the Apache macros that modules don't need access to.  This should
have been committed with the modules, but I wasn't paying attention to the
directory I was in when I ran the commit.
Submitted by:	Manoj Kasichainula and Ryan Bloom


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@84493 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Ryan Bloom
2000-01-19 01:16:31 +00:00
parent 70a4fae036
commit a8ce196da5
42 changed files with 426 additions and 427 deletions

View File

@@ -64,17 +64,8 @@ extern "C" {
/* TODO: this file should be deleted after the other todos are dealt with */ /* TODO: this file should be deleted after the other todos are dealt with */
/* TODO: extern MODULE_VAR_EXPORT int ap_suexec_enabled; */
#define ap_suexec_enabled (0)
/* TODO: extern API_VAR_EXPORT int ap_extended_status; */
/* TODO: extern enum server_token_type ap_server_tokens; */ /* TODO: extern enum server_token_type ap_server_tokens; */
/* We want this to have the least chance of being corrupted if there
* is some memory corruption, so we allocate it statically.
*/
/* TODO: extern char ap_coredump_dir[MAX_STRING_LEN]; */
/* TODO: extern int ap_configtestonly; ... although it pains me because this breaks an abstraction */ /* TODO: extern int ap_configtestonly; ... although it pains me because this breaks an abstraction */
/* TODO: extern int ap_docrootcheck; */ /* TODO: extern int ap_docrootcheck; */

View File

@@ -65,6 +65,7 @@
extern "C" { extern "C" {
#endif #endif
#ifdef CORE_PRIVATE
conn_rec *ap_new_connection(ap_context_t *p, server_rec *server, BUFF *inout, conn_rec *ap_new_connection(ap_context_t *p, server_rec *server, BUFF *inout,
const struct sockaddr_in *remaddr, const struct sockaddr_in *remaddr,
const struct sockaddr_in *saddr, long id); const struct sockaddr_in *saddr, long id);
@@ -72,6 +73,7 @@ conn_rec *ap_new_apr_connection(ap_context_t *p, server_rec *server, BUFF *inout
const ap_socket_t *conn_socket, long id); const ap_socket_t *conn_socket, long id);
CORE_EXPORT(void) ap_process_connection(conn_rec *); CORE_EXPORT(void) ap_process_connection(conn_rec *);
int ap_process_http_connection(conn_rec *); int ap_process_http_connection(conn_rec *);
#endif
/* Hooks */ /* Hooks */
DECLARE_HOOK(void,pre_connection,(conn_rec *)) DECLARE_HOOK(void,pre_connection,(conn_rec *))

View File

@@ -154,17 +154,6 @@ API_EXPORT(const char *) ap_auth_name (request_rec *);
API_EXPORT(int) ap_satisfies (request_rec *r); API_EXPORT(int) ap_satisfies (request_rec *r);
API_EXPORT(const ap_array_header_t *) ap_requires (request_rec *); API_EXPORT(const ap_array_header_t *) ap_requires (request_rec *);
#ifdef WIN32
/*
* CGI Script stuff for Win32...
*/
typedef enum { eFileTypeUNKNOWN, eFileTypeBIN, eFileTypeEXE16, eFileTypeEXE32,
eFileTypeSCRIPT } file_type_e;
typedef enum { INTERPRETER_SOURCE_UNSET, INTERPRETER_SOURCE_REGISTRY,
INTERPRETER_SOURCE_SHEBANG } interpreter_source_e;
API_EXPORT(file_type_e) ap_get_win32_interpreter(const request_rec *, char **);
#endif
#ifdef CORE_PRIVATE #ifdef CORE_PRIVATE
/* /*
@@ -256,11 +245,6 @@ typedef struct {
ap_array_header_t *sec; ap_array_header_t *sec;
regex_t *r; regex_t *r;
#ifdef WIN32
/* Where to find interpreter to run scripts */
interpreter_source_e script_interpreter_source;
#endif
} core_dir_config; } core_dir_config;
/* Per-server core configuration */ /* Per-server core configuration */

View File

@@ -94,11 +94,6 @@ extern "C" {
#endif #endif
#define APLOG_NOERRNO (APLOG_LEVELMASK + 1) #define APLOG_NOERRNO (APLOG_LEVELMASK + 1)
#ifdef WIN32
/* Set to indicate that error msg should come from Win32's GetLastError(),
* not errno. */
#define APLOG_WIN32ERROR ((APLOG_LEVELMASK+1) * 2)
#endif
/* normal but significant condition on startup, usually printed to stderr */ /* normal but significant condition on startup, usually printed to stderr */
#define APLOG_STARTUP ((APLOG_LEVELMASK + 1) * 4) #define APLOG_STARTUP ((APLOG_LEVELMASK + 1) * 4)
@@ -143,24 +138,19 @@ API_EXPORT(void) ap_log_reason(const char *reason, const char *fname,
typedef struct piped_log { typedef struct piped_log {
ap_context_t *p; ap_context_t *p;
ap_file_t *fds[2];
/* XXX - an #ifdef that needs to be eliminated from public view. Shouldn't
* be hard */
#ifdef HAVE_RELIABLE_PIPED_LOGS #ifdef HAVE_RELIABLE_PIPED_LOGS
char *program; char *program;
ap_proc_t *pid; ap_proc_t *pid;
ap_file_t *fds[2];
#else
ap_file_t *write_f;
#endif #endif
} piped_log; } piped_log;
API_EXPORT(piped_log *) ap_open_piped_log (ap_context_t *p, const char *program); API_EXPORT(piped_log *) ap_open_piped_log (ap_context_t *p, const char *program);
API_EXPORT(void) ap_close_piped_log (piped_log *); API_EXPORT(void) ap_close_piped_log (piped_log *);
#ifdef HAVE_RELIABLE_PIPED_LOGS
#define ap_piped_log_read_fd(pl) ((pl)->fds[0]) #define ap_piped_log_read_fd(pl) ((pl)->fds[0])
#define ap_piped_log_write_fd(pl) ((pl)->fds[1]) #define ap_piped_log_write_fd(pl) ((pl)->fds[1])
#else
#define ap_piped_log_read_fd(pl) (-1)
#define ap_piped_log_write_fd(pl) ((pl)->write_f)
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@@ -66,14 +66,24 @@ extern "C" {
* httpd.h: header for simple (ha! not anymore) http daemon * httpd.h: header for simple (ha! not anymore) http daemon
*/ */
/* XXX - We need to push more stuff to other .h files, or even .c files, to
* make this file smaller
*/
/* Headers in which EVERYONE has an interest... */ /* Headers in which EVERYONE has an interest... */
#include "ap_config.h"
#include "apr_general.h" #include "apr_general.h"
#include "apr_lib.h" #include "apr_lib.h"
#include "apr_time.h" #include "apr_time.h"
#include "apr_network_io.h"
#include "buff.h" #include "buff.h"
#include "ap.h" #include "ap.h"
#include "ap_mmn.h"
#include <netinet/in.h>
#ifdef CORE_PRIVATE
/* ----------------------------- config dir ------------------------------ */ /* ----------------------------- config dir ------------------------------ */
@@ -95,6 +105,14 @@ extern "C" {
#endif #endif
#endif /* HTTPD_ROOT */ #endif /* HTTPD_ROOT */
/*
* --------- You shouldn't have to edit anything below this line ----------
*
* Any modifications to any defaults not defined above should be done in the
* respective config. file.
*
*/
/* Default location of documents. Can be overridden by the DocumentRoot /* Default location of documents. Can be overridden by the DocumentRoot
* directive. * directive.
*/ */
@@ -120,31 +138,7 @@ extern "C" {
#define TARGET "httpd" #define TARGET "httpd"
#endif #endif
/* /* --------- Default user name and group name ----------------------------- */
* --------- You shouldn't have to edit anything below this line ----------
*
* Any modifications to any defaults not defined above should be done in the
* respective config. file.
*
*/
/* -- Internal representation for a HTTP protocol number, e.g., HTTP/1.1 -- */
#define HTTP_VERSION(major,minor) (1000*(major)+(minor))
#define HTTP_VERSION_MAJOR(number) ((number)/1000)
#define HTTP_VERSION_MINOR(number) ((number)%1000)
/* -------------- Port number for server running standalone --------------- */
#define DEFAULT_HTTP_PORT 80
#define DEFAULT_HTTPS_PORT 443
#define ap_is_default_port(port,r) ((port) == ap_default_port(r))
#define ap_http_method(r) ap_run_http_method(r)
#define ap_default_port(r) ap_run_default_port(r)
/* --------- Default user name and group name running standalone ---------- */
/* --- These may be specified as numbers by placing a # before a number --- */ /* --- These may be specified as numbers by placing a # before a number --- */
#ifndef DEFAULT_USER #ifndef DEFAULT_USER
@@ -171,32 +165,6 @@ extern "C" {
#endif #endif
#endif /* DEFAULT_ERRORLOG */ #endif /* DEFAULT_ERRORLOG */
#ifndef DEFAULT_PIDLOG
#define DEFAULT_PIDLOG "logs/httpd.pid"
#endif
#ifndef DEFAULT_SCOREBOARD
#define DEFAULT_SCOREBOARD "logs/apache_runtime_status"
#endif
#ifndef DEFAULT_LOCKFILE
#define DEFAULT_LOCKFILE "logs/accept.lock"
#endif
/* Define this to be what your HTML directory content files are called */
#ifndef DEFAULT_INDEX
#define DEFAULT_INDEX "index.html"
#endif
/* Define this to 1 if you want fancy indexing, 0 otherwise */
#ifndef DEFAULT_INDEXING
#define DEFAULT_INDEXING 0
#endif
/* Define this to be what type you'd like returned for files with unknown */
/* suffixes. MUST be all lower case. */
#ifndef DEFAULT_CONTENT_TYPE
#define DEFAULT_CONTENT_TYPE "text/plain"
#endif
/* Define this to be what your per-directory security files are called */ /* Define this to be what your per-directory security files are called */
#ifndef DEFAULT_ACCESS_FNAME #ifndef DEFAULT_ACCESS_FNAME
#ifdef OS2 #ifdef OS2
@@ -217,11 +185,6 @@ extern "C" {
#define RESOURCE_CONFIG_FILE "conf/srm.conf" #define RESOURCE_CONFIG_FILE "conf/srm.conf"
#endif #endif
/* The name of the MIME types file */
#ifndef TYPES_CONFIG_FILE
#define TYPES_CONFIG_FILE "conf/mime.types"
#endif
/* The name of the access file */ /* The name of the access file */
#ifndef ACCESS_CONFIG_FILE #ifndef ACCESS_CONFIG_FILE
#define ACCESS_CONFIG_FILE "conf/access.conf" #define ACCESS_CONFIG_FILE "conf/access.conf"
@@ -231,35 +194,17 @@ extern "C" {
#ifndef DEFAULT_RFC1413 #ifndef DEFAULT_RFC1413
#define DEFAULT_RFC1413 0 #define DEFAULT_RFC1413 0
#endif #endif
/* The default directory in user's home dir */
#ifndef DEFAULT_USER_DIR
#define DEFAULT_USER_DIR "public_html"
#endif
/* The default path for CGI scripts if none is currently set */ /* The default path for CGI scripts if none is currently set */
#ifndef DEFAULT_PATH #ifndef DEFAULT_PATH
#define DEFAULT_PATH "/bin:/usr/bin:/usr/ucb:/usr/bsd:/usr/local/bin" #define DEFAULT_PATH "/bin:/usr/bin:/usr/ucb:/usr/bsd:/usr/local/bin"
#endif #endif
/* The path to the shell interpreter, for parsed docs */
#ifndef SHELL_PATH
#if defined(OS2) || defined(WIN32)
/* Set default for OS/2 and Windows file system */
#define SHELL_PATH "CMD.EXE"
#else
#define SHELL_PATH "/bin/sh"
#endif
#endif /* SHELL_PATH */
/* The path to the suExec wrapper, can be overridden in Configuration */ /* The path to the suExec wrapper, can be overridden in Configuration */
#ifndef SUEXEC_BIN #ifndef SUEXEC_BIN
#define SUEXEC_BIN HTTPD_ROOT "/sbin/suexec" #define SUEXEC_BIN HTTPD_ROOT "/sbin/suexec"
#endif #endif
/* The default string lengths */
#define MAX_STRING_LEN HUGE_STRING_LEN
#define HUGE_STRING_LEN 8192
/* The timeout for waiting for messages */ /* The timeout for waiting for messages */
#ifndef DEFAULT_TIMEOUT #ifndef DEFAULT_TIMEOUT
#define DEFAULT_TIMEOUT 120000 #define DEFAULT_TIMEOUT 120000
@@ -275,58 +220,6 @@ extern "C" {
#define DEFAULT_KEEPALIVE 100 #define DEFAULT_KEEPALIVE 100
#endif #endif
/* The size of the server's internal read-write buffers */
#define IOBUFSIZE 8192
/*
* Special Apache error codes. These are basically used
* in http_main.c so we can keep track of various errors.
*
* APEXIT_OK:
* A normal exit
* APEXIT_INIT:
* A fatal error arising during the server's init sequence
* APEXIT_CHILDINIT:
* The child died during it's init sequence
* APEXIT_CHILDFATAL:
* A fatal error, resulting in the whole server aborting.
* If a child exits with this error, the parent process
* considers this a server-wide fatal error and aborts.
*
*/
#define APEXIT_OK 0x0
#define APEXIT_INIT 0x2
#define APEXIT_CHILDINIT 0x3
#define APEXIT_CHILDFATAL 0xf
/*
* (Unix, OS/2 only)
* Interval, in microseconds, between scoreboard maintenance. During
* each scoreboard maintenance cycle the parent decides if it needs to
* spawn a new child (to meet MinSpareServers requirements), or kill off
* a child (to meet MaxSpareServers requirements). It will only spawn or
* kill one child per cycle. Setting this too low will chew cpu. The
* default is probably sufficient for everyone. But some people may want
* to raise this on servers which aren't dedicated to httpd and where they
* don't like the httpd waking up each second to see what's going on.
*/
#ifndef SCOREBOARD_MAINTENANCE_INTERVAL
#define SCOREBOARD_MAINTENANCE_INTERVAL 1000000
#endif
/* Number of requests to try to handle in a single process. If <= 0,
* the children don't die off. That's the default here, since I'm still
* interested in finding and stanching leaks.
*/
#ifndef DEFAULT_MAX_REQUESTS_PER_CHILD
#define DEFAULT_MAX_REQUESTS_PER_CHILD 10000
#endif
#ifndef DEFAULT_EXCESS_REQUESTS_PER_CHILD
#define DEFAULT_EXCESS_REQUESTS_PER_CHILD 0
#endif
/* The maximum length of the queue of pending connections, as defined /* The maximum length of the queue of pending connections, as defined
* by listen(2). Under some systems, it should be increased if you * by listen(2). Under some systems, it should be increased if you
* are experiencing a heavy TCP SYN flood attack. * are experiencing a heavy TCP SYN flood attack.
@@ -379,8 +272,95 @@ extern "C" {
* Example: "Apache/1.1.0 MrWidget/0.1-alpha" * Example: "Apache/1.1.0 MrWidget/0.1-alpha"
*/ */
#define SERVER_BASEVERSION "Apache/2.0-dev" /* SEE COMMENTS ABOVE */ /* Define this to 1 if you want fancy indexing, 0 otherwise */
#define SERVER_VERSION SERVER_BASEVERSION #ifndef DEFAULT_INDEXING
#define DEFAULT_INDEXING 0
#endif
#endif /* CORE_PRIVATE */
#define AP_SERVER_BASEVERSION "Apache/2.0-dev" /* SEE COMMENTS ABOVE */
#define AP_SERVER_VERSION AP_SERVER_BASEVERSION
#define AP_SERVER_PROTOCOL "HTTP/1.1"
/* ------------------ stuff that modules are allowed to look at ----------- */
/* Define this to be what your HTML directory content files are called */
#ifndef AP_DEFAULT_INDEX
#define AP_DEFAULT_INDEX "index.html"
#endif
/* Define this to be what type you'd like returned for files with unknown */
/* suffixes. MUST be all lower case. */
#ifndef DEFAULT_CONTENT_TYPE
#define DEFAULT_CONTENT_TYPE "text/plain"
#endif
/* The name of the MIME types file */
#ifndef AP_TYPES_CONFIG_FILE
#define AP_TYPES_CONFIG_FILE "conf/mime.types"
#endif
/*
* Define the HTML doctype strings centrally.
*/
#define DOCTYPE_HTML_2_0 "<!DOCTYPE HTML PUBLIC \"-//IETF//" \
"DTD HTML 2.0//EN\">\n"
#define DOCTYPE_HTML_3_2 "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
"DTD HTML 3.2 Final//EN\">\n"
#define DOCTYPE_HTML_4_0S "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
"DTD HTML 4.0//EN\"\n" \
"\"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
#define DOCTYPE_HTML_4_0T "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
"DTD HTML 4.0 Transitional//EN\"\n" \
"\"http://www.w3.org/TR/REC-html40/loose.dtd\">\n"
#define DOCTYPE_HTML_4_0F "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
"DTD HTML 4.0 Frameset//EN\"\n" \
"\"http://www.w3.org/TR/REC-html40/frameset.dtd\">\n"
/* -- Internal representation for a HTTP protocol number, e.g., HTTP/1.1 -- */
#define HTTP_VERSION(major,minor) (1000*(major)+(minor))
#define HTTP_VERSION_MAJOR(number) ((number)/1000)
#define HTTP_VERSION_MINOR(number) ((number)%1000)
/* -------------- Port number for server running standalone --------------- */
#define DEFAULT_HTTP_PORT 80
#define DEFAULT_HTTPS_PORT 443
#define ap_is_default_port(port,r) ((port) == ap_default_port(r))
#define ap_http_method(r) ap_run_http_method(r)
#define ap_default_port(r) ap_run_default_port(r)
/* The default string lengths */
#define MAX_STRING_LEN HUGE_STRING_LEN
#define HUGE_STRING_LEN 8192
/* The size of the server's internal read-write buffers */
#define IOBUFSIZE 8192
/*
* Special Apache error codes. These are basically used
* in http_main.c so we can keep track of various errors.
*
* APEXIT_OK:
* A normal exit
* APEXIT_INIT:
* A fatal error arising during the server's init sequence
* APEXIT_CHILDINIT:
* The child died during it's init sequence
* APEXIT_CHILDFATAL:
* A fatal error, resulting in the whole server aborting.
* If a child exits with this error, the parent process
* considers this a server-wide fatal error and aborts.
*
*/
#define APEXIT_OK 0x0
#define APEXIT_INIT 0x2
#define APEXIT_CHILDINIT 0x3
#define APEXIT_CHILDFATAL 0xf
/* TODO: re-implement the server token/version stuff -- it's part of http_core /* TODO: re-implement the server token/version stuff -- it's part of http_core
* it should be possible to do without touching http_main at all. (or else * it should be possible to do without touching http_main at all. (or else
@@ -408,11 +388,6 @@ API_EXPORT(const char *) ap_get_server_built(void);
*/ */
#define APACHE_RELEASE 10309100 #define APACHE_RELEASE 10309100
#define SERVER_PROTOCOL "HTTP/1.1"
#ifndef SERVER_SUPPORT
#define SERVER_SUPPORT "http://www.apache.org/"
#endif
#define DECLINED -1 /* Module declines to handle */ #define DECLINED -1 /* Module declines to handle */
#define DONE -2 /* Module has served the response completely #define DONE -2 /* Module has served the response completely
* - it's safe to die() with no more output * - it's safe to die() with no more output
@@ -539,47 +514,10 @@ API_EXPORT(const char *) ap_get_server_built(void);
#define CGI_MAGIC_TYPE "application/x-httpd-cgi" #define CGI_MAGIC_TYPE "application/x-httpd-cgi"
#define INCLUDES_MAGIC_TYPE "text/x-server-parsed-html" #define INCLUDES_MAGIC_TYPE "text/x-server-parsed-html"
#define INCLUDES_MAGIC_TYPE3 "text/x-server-parsed-html3" #define INCLUDES_MAGIC_TYPE3 "text/x-server-parsed-html3"
#ifdef CHARSET_EBCDIC
#define ASCIITEXT_MAGIC_TYPE_PREFIX "text/x-ascii-" /* Text files whose content-type starts with this are passed thru unconverted */
#endif /*CHARSET_EBCDIC*/
#define MAP_FILE_MAGIC_TYPE "application/x-type-map"
#define ASIS_MAGIC_TYPE "httpd/send-as-is"
#define DIR_MAGIC_TYPE "httpd/unix-directory" #define DIR_MAGIC_TYPE "httpd/unix-directory"
#define STATUS_MAGIC_TYPE "application/x-httpd-status"
/*
* Define the HTML doctype strings centrally.
*/
#define DOCTYPE_HTML_2_0 "<!DOCTYPE HTML PUBLIC \"-//IETF//" \
"DTD HTML 2.0//EN\">\n"
#define DOCTYPE_HTML_3_2 "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
"DTD HTML 3.2 Final//EN\">\n"
#define DOCTYPE_HTML_4_0S "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
"DTD HTML 4.0//EN\"\n" \
"\"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
#define DOCTYPE_HTML_4_0T "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
"DTD HTML 4.0 Transitional//EN\"\n" \
"\"http://www.w3.org/TR/REC-html40/loose.dtd\">\n"
#define DOCTYPE_HTML_4_0F "<!DOCTYPE HTML PUBLIC \"-//W3C//" \
"DTD HTML 4.0 Frameset//EN\"\n" \
"\"http://www.w3.org/TR/REC-html40/frameset.dtd\">\n"
/* Just in case your linefeed isn't the one the other end is expecting. */
#ifndef CHARSET_EBCDIC
#define LF 10 #define LF 10
#define CR 13 #define CR 13
#else /* CHARSET_EBCDIC */
#include "ebcdic.h"
/* OSD_POSIX uses the EBCDIC charset. The transition ASCII->EBCDIC is done in
* the buff package (bread/bputs/bwrite), so everywhere else, we use
* "native EBCDIC" CR and NL characters. These are therefore defined as
* '\r' and '\n'.
* NB: this is not the whole truth - sometimes \015 and \012 are contained
* in literal (EBCDIC!) strings, so these are not converted but passed.
*/
#define CR '\r'
#define LF '\n'
#endif /* CHARSET_EBCDIC */
/* Possible values for request_rec.read_body (set by handling module): /* Possible values for request_rec.read_body (set by handling module):
* REQUEST_NO_BODY Send 413 error if message has any body * REQUEST_NO_BODY Send 413 error if message has any body
@@ -848,7 +786,7 @@ struct conn_rec {
typedef struct server_addr_rec server_addr_rec; typedef struct server_addr_rec server_addr_rec;
struct server_addr_rec { struct server_addr_rec {
server_addr_rec *next; server_addr_rec *next;
struct in_addr host_addr; /* The bound address, for this server */ ap_in_addr host_addr; /* The bound address, for this server */
unsigned short host_port; /* The bound port, for this server */ unsigned short host_port; /* The bound port, for this server */
char *virthost; /* The name given in <VirtualHost> */ char *virthost; /* The name given in <VirtualHost> */
}; };
@@ -909,9 +847,51 @@ struct server_rec {
int limit_req_fields; /* limit on number of request header fields */ int limit_req_fields; /* limit on number of request header fields */
}; };
/* stuff marked API_EXPORT is part of the API, and intended for use
/* Prototypes for utilities... util.c. * by modules
*/ */
#ifndef API_EXPORT
#define API_EXPORT(type) type
#endif
/* Stuff marked API_EXPORT_NONSTD is part of the API, and intended for
* use by modules. The difference between API_EXPORT and
* API_EXPORT_NONSTD is that the latter is required for any functions
* which use varargs or are used via indirect function call. This
* is to accomodate the two calling conventions in windows dlls.
*/
#ifndef API_EXPORT_NONSTD
#define API_EXPORT_NONSTD(type) type
#endif
#ifndef MODULE_VAR_EXPORT
#define MODULE_VAR_EXPORT
#endif
#ifndef API_VAR_EXPORT
#define API_VAR_EXPORT
#endif
/* modules should not used functions marked CORE_EXPORT
* or CORE_EXPORT_NONSTD */
#ifndef CORE_EXPORT
#define CORE_EXPORT API_EXPORT
#endif
#ifndef CORE_EXPORT_NONSTD
#define CORE_EXPORT_NONSTD API_EXPORT_NONSTD
#endif
/* On Mac OS X Server, symbols that conflict with loaded dylibs
* (eg. System framework) need to be declared as private symbols with
* __private_extern__.
* For other systems, make that a no-op.
*/
#ifndef ap_private_extern
#if (defined(MAC_OS) || defined(MAC_OS_X_SERVER)) && defined(__DYNAMIC__)
#define ap_private_extern __private_extern__
#else
#define ap_private_extern
#endif
#endif
/* Time */ /* Time */
@@ -966,9 +946,11 @@ API_EXPORT(char *) ap_pbase64encode(ap_context_t *p, char *string);
API_EXPORT(char *) ap_uudecode(ap_context_t *p, const char *bufcoded); API_EXPORT(char *) ap_uudecode(ap_context_t *p, const char *bufcoded);
API_EXPORT(char *) ap_uuencode(ap_context_t *p, char *string); API_EXPORT(char *) ap_uuencode(ap_context_t *p, char *string);
#ifdef OS2 /* Regexes */
void os2pathname(char *path); #ifdef AP_USE_HSREGEX
char *ap_double_quotes(ap_context_t *p, char *str); #include "hsregex.h"
#else
#include <regex.h>
#endif #endif
API_EXPORT(regex_t *) ap_pregcomp(ap_context_t *p, const char *pattern, API_EXPORT(regex_t *) ap_pregcomp(ap_context_t *p, const char *pattern,
@@ -1017,10 +999,6 @@ API_EXPORT(int) ap_cfg_getc(configfile_t *cfp);
/* Detach from open configfile_t, calling the close handler */ /* Detach from open configfile_t, calling the close handler */
API_EXPORT(int) ap_cfg_closefile(configfile_t *cfp); API_EXPORT(int) ap_cfg_closefile(configfile_t *cfp);
#ifdef NEED_STRERROR
char *strerror(int err);
#endif
/* Misc system hackery */ /* Misc system hackery */
API_EXPORT(uid_t) ap_uname2id(const char *name); API_EXPORT(uid_t) ap_uname2id(const char *name);
@@ -1030,24 +1008,6 @@ API_EXPORT(void) ap_chdir_file(const char *file);
API_EXPORT(int) ap_get_max_daemons(void); API_EXPORT(int) ap_get_max_daemons(void);
API_EXPORT(const server_rec *) ap_get_server_conf(void); API_EXPORT(const server_rec *) ap_get_server_conf(void);
#ifndef HAVE_CANONICAL_FILENAME
/*
* We can't define these in os.h because of dependence on ap_context_t pointer.
*/
#define ap_os_canonical_filename(p,f) (f)
#define ap_os_case_canonical_filename(p,f) (f)
#define ap_os_systemcase_filename(p,f) (f)
#else
API_EXPORT(char *) ap_os_canonical_filename(ap_context_t *p, const char *file);
#ifdef WIN32
API_EXPORT(char *) ap_os_case_canonical_filename(ap_context_t *pPool, const char *szFile);
API_EXPORT(char *) ap_os_systemcase_filename(ap_context_t *pPool, const char *szFile);
#else
#define ap_os_case_canonical_filename(p,f) ap_os_canonical_filename(p,f)
#define ap_os_systemcase_filename(p,f) ap_os_canonical_filename(p,f)
#endif
#endif
#ifdef _OSD_POSIX #ifdef _OSD_POSIX
extern const char *os_set_account(ap_context_t *p, const char *account); extern const char *os_set_account(ap_context_t *p, const char *account);
extern int os_init_job_environment(server_rec *s, const char *user_name, int one_process); extern int os_init_job_environment(server_rec *s, const char *user_name, int one_process);
@@ -1056,43 +1016,6 @@ extern int os_init_job_environment(server_rec *s, const char *user_name, int one
char *ap_get_local_host(ap_context_t *); char *ap_get_local_host(ap_context_t *);
unsigned long ap_get_virthost_addr(char *hostname, unsigned short *port); unsigned long ap_get_virthost_addr(char *hostname, unsigned short *port);
extern API_VAR_EXPORT time_t ap_restart_time;
/*
* Apache tries to keep all of its long term filehandles (such as log files,
* and sockets) above this number. This is to workaround problems in many
* third party libraries that are compiled with a small FD_SETSIZE. There
* should be no reason to lower this, because it's only advisory. If a file
* can't be allocated above this number then it will remain in the "slack"
* area.
*
* Only the low slack line is used by default. If HIGH_SLACK_LINE is defined
* then an attempt is also made to keep all non-FILE * files above the high
* slack line. This is to work around a Solaris C library limitation, where it
* uses an unsigned char to store the file descriptor.
*/
#ifndef LOW_SLACK_LINE
#define LOW_SLACK_LINE 15
#endif
/* #define HIGH_SLACK_LINE 255 */
#if 0
/* Moved to APR now.*/
/*
* The ap_slack() function takes a fd, and tries to move it above the indicated
* line. It returns an fd which may or may not have moved above the line, and
* never fails. If the high line was requested and it fails it will also try
* the low line.
*/
#ifdef NO_SLACK
#define ap_slack(fd,line) (fd)
#else
APRFile ap_slack(APRFile fd, int line);
#define AP_SLACK_LOW 1
#define AP_SLACK_HIGH 2
#endif
#endif
API_EXPORT(char *) ap_escape_quotes(ap_context_t *p, const char *instr); API_EXPORT(char *) ap_escape_quotes(ap_context_t *p, const char *instr);
/* /*
@@ -1102,14 +1025,6 @@ API_EXPORT(void) ap_log_assert(const char *szExp, const char *szFile, int nLine)
__attribute__((noreturn)); __attribute__((noreturn));
#define ap_assert(exp) ((exp) ? (void)0 : ap_log_assert(#exp,__FILE__,__LINE__)) #define ap_assert(exp) ((exp) ? (void)0 : ap_log_assert(#exp,__FILE__,__LINE__))
/* The optimized timeout code only works if we're not MULTITHREAD and we're
* also not using a scoreboard file
*/
#if !defined (MULTITHREAD) && \
(defined (USE_MMAP_SCOREBOARD) || defined (USE_SHMGET_SCOREBOARD))
#define OPTIMIZE_TIMEOUTS
#endif
/* A set of flags which indicate places where the server should raise(SIGSTOP). /* A set of flags which indicate places where the server should raise(SIGSTOP).
* This is useful for debugging, because you can then attach to that process * This is useful for debugging, because you can then attach to that process
* with gdb and continue. This is important in cases where one_process * with gdb and continue. This is important in cases where one_process

View File

@@ -66,12 +66,16 @@ extern "C" {
* util_date.h: prototypes for date parsing utility routines * util_date.h: prototypes for date parsing utility routines
*/ */
#ifdef NEWSOS
#include <stdlib.h>
#include <sys/types.h>
#endif
#include <time.h>
#include "apr_time.h" #include "apr_time.h"
/* XXX - This section lists include files for OS-specific types that APR
* should replace. Once they are replaced, this section should be
* removed */
#ifndef NO_MORE_OS_TYPES_IN_THIS_FILE
#include "ap_config_auto.h"
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#endif
#endif /* NO_MORE_OS_TYPES_IN_THIS_FILE */
#define BAD_DATE (time_t)0 #define BAD_DATE (time_t)0

View File

@@ -67,11 +67,7 @@ extern "C" {
API_EXPORT(char *) ap_md5(ap_context_t *a, const unsigned char *string); API_EXPORT(char *) ap_md5(ap_context_t *a, const unsigned char *string);
API_EXPORT(char *) ap_md5_binary(ap_context_t *a, const unsigned char *buf, int len); API_EXPORT(char *) ap_md5_binary(ap_context_t *a, const unsigned char *buf, int len);
API_EXPORT(char *) ap_md5contextTo64(ap_context_t *p, AP_MD5_CTX * context); API_EXPORT(char *) ap_md5contextTo64(ap_context_t *p, AP_MD5_CTX * context);
#ifdef CHARSET_EBCDIC
API_EXPORT(char *) ap_md5digest(ap_context_t *p, ap_file_t *infile, int convert);
#else
API_EXPORT(char *) ap_md5digest(ap_context_t *p, ap_file_t *infile); API_EXPORT(char *) ap_md5digest(ap_context_t *p, ap_file_t *infile);
#endif /* CHARSET_EBCDIC */
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@@ -69,6 +69,7 @@
#include "util_md5.h" #include "util_md5.h"
#include "apr_fnmatch.h" #include "apr_fnmatch.h"
#include "http_connection.h" #include "http_connection.h"
#include "ap_config.h"
/* Allow Apache to use ap_mmap */ /* Allow Apache to use ap_mmap */
#ifdef USE_MMAP_FILES #ifdef USE_MMAP_FILES

View File

@@ -75,6 +75,7 @@
#include "util_date.h" /* For parseHTTPdate and BAD_DATE */ #include "util_date.h" /* For parseHTTPdate and BAD_DATE */
#include "mpm_status.h" #include "mpm_status.h"
#include <stdarg.h> #include <stdarg.h>
#include "ap_config.h"
HOOK_STRUCT( HOOK_STRUCT(
HOOK_LINK(post_read_request) HOOK_LINK(post_read_request)

View File

@@ -73,10 +73,8 @@
#include "http_protocol.h" #include "http_protocol.h"
#include "http_log.h" #include "http_log.h"
#include "http_main.h" #include "http_main.h"
#if 0
#include "scoreboard.h"
#endif
#include "apr_fnmatch.h" #include "apr_fnmatch.h"
#include "ap_config.h"
HOOK_STRUCT( HOOK_STRUCT(
HOOK_LINK(translate_name) HOOK_LINK(translate_name)

View File

@@ -60,6 +60,16 @@
/* common stuff that beos MPMs will want */ /* common stuff that beos MPMs will want */
/* Default user name and group name. These may be specified as numbers by
* placing a # before a number */
#ifndef DEFAULT_USER
#define DEFAULT_USER "#-1"
#endif
#ifndef DEFAULT_GROUP
#define DEFAULT_GROUP "#-1"
#endif
typedef struct { typedef struct {
char *user_name; char *user_name;
uid_t user_id; uid_t user_id;

View File

@@ -72,6 +72,9 @@
*/ */
extern int ap_os_is_path_absolute(const char *file); extern int ap_os_is_path_absolute(const char *file);
#define ap_os_canonical_filename(p,f) (f)
#define ap_os_case_canonical_filename(p,f) (f)
#define ap_os_systemcase_filename(p,f) (f)
#define ap_os_is_filename_valid(f) (1) #define ap_os_is_filename_valid(f) (1)
#define ap_os_kill(pid, sig) kill(pid, sig) #define ap_os_kill(pid, sig) kill(pid, sig)

View File

@@ -29,6 +29,9 @@ INLINE int ap_os_is_path_absolute(const char *file);
extern int ap_os_is_path_absolute(const char *file); extern int ap_os_is_path_absolute(const char *file);
#endif #endif
API_EXPORT(char *) ap_os_canonical_filename(ap_context_t *p, const char *file);
#define ap_os_case_canonical_filename(p,f) ap_os_canonical_filename(p,f)
#define ap_os_systemcase_filename(p,f) ap_os_canonical_filename(p,f)
/* FIXME: the following should be implemented on this platform */ /* FIXME: the following should be implemented on this platform */
#define ap_os_is_filename_valid(f) (1) #define ap_os_is_filename_valid(f) (1)

View File

@@ -90,6 +90,9 @@ extern int ap_os_is_path_absolute(const char *file);
/* Other ap_os_ routines not used by this platform */ /* Other ap_os_ routines not used by this platform */
#define ap_os_canonical_filename(p,f) (f)
#define ap_os_case_canonical_filename(p,f) (f)
#define ap_os_systemcase_filename(p,f) (f)
#define ap_os_is_filename_valid(f) (1) #define ap_os_is_filename_valid(f) (1)
#define ap_os_kill(pid, sig) kill(pid, sig) #define ap_os_kill(pid, sig) kill(pid, sig)

View File

@@ -60,6 +60,7 @@
#include "http_main.h" #include "http_main.h"
#include "http_log.h" #include "http_log.h"
#include "unixd.h" #include "unixd.h"
#include <pwd.h>
unixd_config_rec unixd_config; unixd_config_rec unixd_config;

View File

@@ -62,6 +62,16 @@
/* common stuff that unix MPMs will want */ /* common stuff that unix MPMs will want */
/* Default user name and group name. These may be specified as numbers by
* placing a # before a number */
#ifndef DEFAULT_USER
#define DEFAULT_USER "#-1"
#endif
#ifndef DEFAULT_GROUP
#define DEFAULT_GROUP "#-1"
#endif
typedef struct { typedef struct {
char *user_name; char *user_name;
uid_t user_id; uid_t user_id;

View File

@@ -172,6 +172,9 @@ __inline int ap_os_is_path_absolute(const char *file)
#define spawnle os_spawnle #define spawnle os_spawnle
/* OS-dependent filename routines in util_win32.c */ /* OS-dependent filename routines in util_win32.c */
API_EXPORT(char *) ap_os_canonical_filename(ap_context_t *p, const char *file);
API_EXPORT(char *) ap_os_case_canonical_filename(ap_context_t *pPool, const char *szFile);
API_EXPORT(char *) ap_os_systemcase_filename(ap_context_t *pPool, const char *szFile);
int ap_os_is_filename_valid(const char *file); int ap_os_is_filename_valid(const char *file);
int os_strftime(char *, size_t , const char *, const struct tm *); int os_strftime(char *, size_t , const char *, const struct tm *);

View File

@@ -81,7 +81,7 @@
#include "http_request.h" /* for default_handler (see invoke_handler) */ #include "http_request.h" /* for default_handler (see invoke_handler) */
#include "http_main.h" #include "http_main.h"
#include "http_vhost.h" #include "http_vhost.h"
#include "explain.h" #include "ap_config.h"
HOOK_STRUCT( HOOK_STRUCT(
HOOK_LINK(header_parser) HOOK_LINK(header_parser)
@@ -102,8 +102,6 @@ IMPLEMENT_HOOK_VOID(open_logs,
(pconf,plog,ptemp,s)) (pconf,plog,ptemp,s))
IMPLEMENT_HOOK_VOID(child_init,(ap_context_t *pchild, server_rec *s),(pchild,s)) IMPLEMENT_HOOK_VOID(child_init,(ap_context_t *pchild, server_rec *s),(pchild,s))
DEF_Explain
/**************************************************************** /****************************************************************
* *
* We begin with the functions which deal with the linked list * We begin with the functions which deal with the linked list

View File

@@ -64,6 +64,7 @@
#include "mpm_status.h" #include "mpm_status.h"
#include "http_config.h" #include "http_config.h"
#include "http_vhost.h" #include "http_vhost.h"
#include "ap_config.h"
HOOK_STRUCT( HOOK_STRUCT(
HOOK_LINK(pre_connection) HOOK_LINK(pre_connection)

View File

@@ -56,10 +56,13 @@
*/ */
#include "apr_network_io.h" #include "apr_network_io.h"
#define CORE_PRIVATE
#include "httpd.h" #include "httpd.h"
#include "http_config.h" #include "http_config.h"
#include "ap_listen.h" #include "ap_listen.h"
#include "http_log.h" #include "http_log.h"
#include <string.h>
ap_listen_rec *ap_listeners; ap_listen_rec *ap_listeners;
static ap_listen_rec *old_listeners; static ap_listen_rec *old_listeners;

View File

@@ -64,6 +64,7 @@
#define CORE_PRIVATE #define CORE_PRIVATE
#include "ap_config.h"
#include "apr_lib.h" #include "apr_lib.h"
#include "apr_portable.h" #include "apr_portable.h"
#include "httpd.h" #include "httpd.h"
@@ -405,59 +406,12 @@ static void log_error_core(const char *file, int line, int level,
len += ap_snprintf(errstr + len, MAX_STRING_LEN - len, len += ap_snprintf(errstr + len, MAX_STRING_LEN - len,
"[client %s] ", r->connection->remote_ip); "[client %s] ", r->connection->remote_ip);
} }
/* XXX - need an APRized strerror() */
if (!(level & APLOG_NOERRNO) if (!(level & APLOG_NOERRNO)
&& (status != 0) && (status != 0)) {
#ifdef WIN32
&& !(level & APLOG_WIN32ERROR)
#endif
) {
len += ap_snprintf(errstr + len, MAX_STRING_LEN - len, len += ap_snprintf(errstr + len, MAX_STRING_LEN - len,
"(%d)%s: ", status, strerror(status)); "(%d)%s: ", status, strerror(status));
} }
#ifdef WIN32
if (level & APLOG_WIN32ERROR) {
int nChars;
int nErrorCode;
nErrorCode = GetLastError();
len += ap_snprintf(errstr + len, MAX_STRING_LEN - len,
"(%d)", nErrorCode);
nChars = FormatMessage(
FORMAT_MESSAGE_FROM_SYSTEM,
NULL,
nErrorCode,
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* // Default language */
(LPTSTR) errstr + len,
MAX_STRING_LEN - len,
NULL
);
len += nChars;
if (nChars == 0) {
/* Um, error occurred, but we can't recurse to log it again
* (and it would probably only fail anyway), so lets just
* log the numeric value.
*/
nErrorCode = GetLastError();
len += ap_snprintf(errstr + len, MAX_STRING_LEN - len,
"(FormatMessage failed with code %d): ",
nErrorCode);
}
else {
/* FormatMessage put the message in the buffer, but it may
* have appended a newline (\r\n). So remove it and use
* ": " instead like the Unix errors. The error may also
* end with a . before the return - if so, trash it.
*/
if (len > 1 && errstr[len-2] == '\r' && errstr[len-1] == '\n') {
if (len > 2 && errstr[len-3] == '.')
len--;
errstr[len-2] = ':';
errstr[len-1] = ' ';
}
}
}
#endif
len += ap_vsnprintf(errstr + len, MAX_STRING_LEN - len, fmt, args); len += ap_vsnprintf(errstr + len, MAX_STRING_LEN - len, fmt, args);
@@ -622,11 +576,11 @@ static int piped_log_spawn(piped_log *pl)
#endif #endif
if ((ap_createprocattr_init(&procattr, pl->p) != APR_SUCCESS) || if ((ap_createprocattr_init(&procattr, pl->p) != APR_SUCCESS) ||
(ap_setprocattr_dir(procattr, pl->program) != APR_SUCCESS) || (ap_setprocattr_dir(procattr, pl->program) != APR_SUCCESS) ||
(ap_set_childin(procattr, pl->fds[0], pl->fds[1]) != APR_SUCCESS)) { (ap_set_childin(procattr, ap_piped_log_read_fd(pl), ap_piped_log_write_fd(pl)) != APR_SUCCESS)) {
/* Something bad happened, give up and go away. */ /* Something bad happened, give up and go away. */
ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL, ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL,
"piped_log_spawn: unable to exec %s -c '%s': %s", "piped_log_spawn: unable to exec '%s': %s",
SHELL_PATH, pl->program, strerror (errno)); pl->program, strerror (errno));
rc = -1; rc = -1;
} }
else { else {
@@ -637,7 +591,7 @@ static int piped_log_spawn(piped_log *pl)
/* successful that the child is running. */ /* successful that the child is running. */
pl->pid = procnew; pl->pid = procnew;
ap_get_os_proc(&pid, procnew); ap_get_os_proc(&pid, procnew);
ap_register_other_child(pid, piped_log_maintenance, pl, pl->fds[1]); ap_register_other_child(pid, piped_log_maintenance, pl, ap_piped_log_write_fd(pl));
} }
} }
@@ -696,8 +650,8 @@ static ap_status_t piped_log_cleanup(void *data)
ap_kill(pl->pid, SIGTERM); ap_kill(pl->pid, SIGTERM);
} }
ap_unregister_other_child(pl); ap_unregister_other_child(pl);
ap_close(pl->fds[0]); ap_close(ap_piped_log_read_fd(pl));
ap_close(pl->fds[1]); ap_close(ap_piped_log_write_fd(pl));
return APR_SUCCESS; return APR_SUCCESS;
} }
@@ -706,12 +660,11 @@ static ap_status_t piped_log_cleanup_for_exec(void *data)
{ {
piped_log *pl = data; piped_log *pl = data;
ap_close(pl->fds[0]); ap_close(ap_piped_log_read_fd(pl));
ap_close(pl->fds[1]); ap_close(ap_piped_log_write_fd(pl));
return APR_SUCCESS; return APR_SUCCESS;
} }
API_EXPORT(piped_log *) ap_open_piped_log(ap_context_t *p, const char *program) API_EXPORT(piped_log *) ap_open_piped_log(ap_context_t *p, const char *program)
{ {
piped_log *pl; piped_log *pl;
@@ -720,7 +673,7 @@ API_EXPORT(piped_log *) ap_open_piped_log(ap_context_t *p, const char *program)
pl->p = p; pl->p = p;
pl->program = ap_pstrdup(p, program); pl->program = ap_pstrdup(p, program);
pl->pid = NULL; pl->pid = NULL;
if (ap_create_pipe(&pl->fds[0], &pl->fds[1], p) != APR_SUCCESS) { if (ap_create_pipe(&ap_piped_log_read_fd(pl), &ap_piped_log_write_fd(pl), p) != APR_SUCCESS) {
int save_errno = errno; int save_errno = errno;
errno = save_errno; errno = save_errno;
return NULL; return NULL;
@@ -729,21 +682,24 @@ API_EXPORT(piped_log *) ap_open_piped_log(ap_context_t *p, const char *program)
if (piped_log_spawn(pl) == -1) { if (piped_log_spawn(pl) == -1) {
int save_errno = errno; int save_errno = errno;
ap_kill_cleanup(p, pl, piped_log_cleanup); ap_kill_cleanup(p, pl, piped_log_cleanup);
ap_close(pl->fds[0]); ap_close(ap_piped_log_read_fd(pl));
ap_close(pl->fds[1]); ap_close(ap_piped_log_write_fd(pl));
errno = save_errno; errno = save_errno;
return NULL; return NULL;
} }
return pl; return pl;
} }
API_EXPORT(void) ap_close_piped_log(piped_log *pl) #else
static ap_status_t piped_log_cleanup(void *data)
{ {
piped_log_cleanup(pl); piped_log *pl = data;
ap_kill_cleanup(pl->p, pl, piped_log_cleanup);
ap_close(ap_piped_log_write_fd(pl));
return APR_SUCCESS;
} }
#else
API_EXPORT(piped_log *) ap_open_piped_log(ap_context_t *p, const char *program) API_EXPORT(piped_log *) ap_open_piped_log(ap_context_t *p, const char *program)
{ {
piped_log *pl; piped_log *pl;
@@ -760,14 +716,17 @@ API_EXPORT(piped_log *) ap_open_piped_log(ap_context_t *p, const char *program)
pl = ap_palloc(p, sizeof (*pl)); pl = ap_palloc(p, sizeof (*pl));
pl->p = p; pl->p = p;
pl->write_f = dummy; ap_piped_log_read_fd(pl) = NULL;
ap_piped_log_write_fd(pl) = dummy;
ap_register_cleanup(p, pl, piped_log_cleanup, piped_log_cleanup);
return pl; return pl;
} }
#endif
API_EXPORT(void) ap_close_piped_log(piped_log *pl) API_EXPORT(void) ap_close_piped_log(piped_log *pl)
{ {
ap_close(pl->write_f); ap_run_cleanup(pl->p, pl, piped_log_cleanup);
} }
#endif

View File

@@ -63,6 +63,7 @@
#include "util_uri.h" #include "util_uri.h"
#include "apr_getopt.h" #include "apr_getopt.h"
#include "ap_mpm.h" #include "ap_mpm.h"
#include "ap_config.h"
const char *ap_server_argv0; const char *ap_server_argv0;
@@ -72,6 +73,7 @@ ap_array_header_t *ap_server_pre_read_config;
ap_array_header_t *ap_server_post_read_config; ap_array_header_t *ap_server_post_read_config;
ap_array_header_t *ap_server_config_defines; ap_array_header_t *ap_server_config_defines;
/* XXX - We should be able to grab the per-MPM settings here too */
static void show_compile_settings(void) static void show_compile_settings(void)
{ {
printf("Server version: %s\n", ap_get_server_version()); printf("Server version: %s\n", ap_get_server_version());

View File

@@ -57,6 +57,7 @@
#define CORE_PRIVATE #define CORE_PRIVATE
#include "ap_config.h"
#include "apr_portable.h" #include "apr_portable.h"
#include "httpd.h" #include "httpd.h"
#include "http_main.h" #include "http_main.h"

View File

@@ -111,4 +111,28 @@
#define HARD_SERVER_LIMIT 8 #define HARD_SERVER_LIMIT 8
#endif #endif
/* File used for accept locking, when we use a file */
#ifndef DEFAULT_LOCKFILE
#define DEFAULT_LOCKFILE "logs/accept.lock"
#endif
/* Where the main/parent process's pid is logged */
#ifndef DEFAULT_PIDLOG
#define DEFAULT_PIDLOG "logs/httpd.pid"
#endif
/*
* Interval, in microseconds, between scoreboard maintenance.
*/
#ifndef SCOREBOARD_MAINTENANCE_INTERVAL
#define SCOREBOARD_MAINTENANCE_INTERVAL 1000000
#endif
/* Number of requests to try to handle in a single process. If <= 0,
* the children don't die off.
*/
#ifndef DEFAULT_MAX_REQUESTS_PER_CHILD
#define DEFAULT_MAX_REQUESTS_PER_CHILD 10000
#endif
#endif /* AP_MPM_DEFAULT_H */ #endif /* AP_MPM_DEFAULT_H */

View File

@@ -55,6 +55,7 @@
* *
*/ */
#include "ap_config.h"
#include "httpd.h" #include "httpd.h"
#include "http_log.h" #include "http_log.h"
#include "http_main.h" #include "http_main.h"
@@ -65,8 +66,8 @@
#include "mpm_status.h" #include "mpm_status.h"
#include "scoreboard.h" #include "scoreboard.h"
#include "dexter.h" /* for max_daemons_limit */ #include "dexter.h" /* for max_daemons_limit */
#ifdef USE_SHMGET_SCOREBOARD
#include <sys/types.h> #include <sys/types.h>
#ifdef USE_SHMGET_SCOREBOARD
#include <sys/ipc.h> #include <sys/ipc.h>
#include <sys/shm.h> #include <sys/shm.h>
#endif #endif

View File

@@ -118,4 +118,23 @@
#define DEFAULT_THREADS_PER_CHILD 10 #define DEFAULT_THREADS_PER_CHILD 10
#endif #endif
/* Where the main/parent process's pid is logged */
#ifndef DEFAULT_PIDLOG
#define DEFAULT_PIDLOG "logs/httpd.pid"
#endif
/*
* Interval, in microseconds, between scoreboard maintenance.
*/
#ifndef SCOREBOARD_MAINTENANCE_INTERVAL
#define SCOREBOARD_MAINTENANCE_INTERVAL 1000000
#endif
/* Number of requests to try to handle in a single process. If <= 0,
* the children don't die off.
*/
#ifndef DEFAULT_MAX_REQUESTS_PER_CHILD
#define DEFAULT_MAX_REQUESTS_PER_CHILD 10000
#endif
#endif /* AP_MPM_DEFAULT_H */ #endif /* AP_MPM_DEFAULT_H */

View File

@@ -118,4 +118,33 @@
#define DEFAULT_THREADS_PER_CHILD 50 #define DEFAULT_THREADS_PER_CHILD 50
#endif #endif
/* File used for accept locking, when we use a file */
#ifndef DEFAULT_LOCKFILE
#define DEFAULT_LOCKFILE "logs/accept.lock"
#endif
/* Scoreboard file, if there is one */
#ifndef DEFAULT_SCOREBOARD
#define DEFAULT_SCOREBOARD "logs/apache_runtime_status"
#endif
/* Where the main/parent process's pid is logged */
#ifndef DEFAULT_PIDLOG
#define DEFAULT_PIDLOG "logs/httpd.pid"
#endif
/*
* Interval, in microseconds, between scoreboard maintenance.
*/
#ifndef SCOREBOARD_MAINTENANCE_INTERVAL
#define SCOREBOARD_MAINTENANCE_INTERVAL 1000000
#endif
/* Number of requests to try to handle in a single process. If <= 0,
* the children don't die off.
*/
#ifndef DEFAULT_MAX_REQUESTS_PER_CHILD
#define DEFAULT_MAX_REQUESTS_PER_CHILD 10000
#endif
#endif /* AP_MPM_DEFAULT_H */ #endif /* AP_MPM_DEFAULT_H */

View File

@@ -58,6 +58,8 @@
#define CORE_PRIVATE #define CORE_PRIVATE
#include "apr_portable.h" #include "apr_portable.h"
#include "apr_thread_proc.h"
#include "ap_config.h"
#include "httpd.h" #include "httpd.h"
#include "http_main.h" #include "http_main.h"
#include "http_log.h" #include "http_log.h"
@@ -71,6 +73,7 @@
#include "scoreboard.h" #include "scoreboard.h"
#include <netinet/tcp.h> #include <netinet/tcp.h>
#include <sys/wait.h>
#include <pthread.h> #include <pthread.h>
#include <signal.h> #include <signal.h>

View File

@@ -1,3 +1,4 @@
#include "ap_config.h"
#include "httpd.h" #include "httpd.h"
#include "http_log.h" #include "http_log.h"
#include "http_main.h" #include "http_main.h"
@@ -8,8 +9,8 @@
#include "mpm_status.h" #include "mpm_status.h"
#include "mpmt_pthread.h" #include "mpmt_pthread.h"
#include "scoreboard.h" #include "scoreboard.h"
#ifdef USE_SHMGET_SCOREBOARD
#include <sys/types.h> #include <sys/types.h>
#ifdef USE_SHMGET_SCOREBOARD
#include <sys/ipc.h> #include <sys/ipc.h>
#include <sys/shm.h> #include <sys/shm.h>
#endif #endif
@@ -411,8 +412,6 @@ API_EXPORT(void) reopen_scoreboard(ap_context_t *p)
#else #else
#define SCOREBOARD_FILE #define SCOREBOARD_FILE
static scoreboard _scoreboard_image; static scoreboard _scoreboard_image;
static int scoreboard_fd = -1;
static ap_file_t *scoreboard_file = NULL;
static ap_file_t *scoreboard_file = NULL; static ap_file_t *scoreboard_file = NULL;
/* XXX: things are seriously screwed if we ever have to do a partial /* XXX: things are seriously screwed if we ever have to do a partial
@@ -456,7 +455,7 @@ static void cleanup_scoreboard_file(void *foo)
API_EXPORT(void) reopen_scoreboard(ap_context_t *p) API_EXPORT(void) reopen_scoreboard(ap_context_t *p)
{ {
if (scoreboard_fd != -1) if (scoreboard_fd != -1)
ap_close(scoreboard_fd); ap_close(scoreboard_file);
ap_open(p, ap_scoreboard_fname, APR_CREATE | APR_BINARY | APR_READ | APR_WRITE, ap_open(p, ap_scoreboard_fname, APR_CREATE | APR_BINARY | APR_READ | APR_WRITE,
APR_UREAD | APR_UWRITE | APR_GREAD | APR_GWRITE | APR_WREAD | APR_WWRITE, APR_UREAD | APR_UWRITE | APR_GREAD | APR_GWRITE | APR_WREAD | APR_WWRITE,

View File

@@ -63,6 +63,7 @@ extern "C" {
#endif #endif
#ifdef HAVE_SYS_TIMES_H #ifdef HAVE_SYS_TIMES_H
#include <sys/time.h>
#include <sys/times.h> #include <sys/times.h>
#elif defined(TPF) #elif defined(TPF)
#include <time.h> #include <time.h>
@@ -70,6 +71,12 @@ extern "C" {
#include "mpm_default.h" /* For HARD_.*_LIMIT */ #include "mpm_default.h" /* For HARD_.*_LIMIT */
/* The optimized timeout code only works if we're not using a scoreboard file
*/
#if (defined (USE_MMAP_SCOREBOARD) || defined (USE_SHMGET_SCOREBOARD))
#define OPTIMIZE_TIMEOUTS
#endif
/* Scoreboard info on a process is, for now, kept very brief --- /* Scoreboard info on a process is, for now, kept very brief ---
* just status value and pid (the latter so that the caretaker process * just status value and pid (the latter so that the caretaker process
* can properly update the scoreboard when a process dies). We may want * can properly update the scoreboard when a process dies). We may want

View File

@@ -94,4 +94,33 @@
#define HARD_SERVER_LIMIT 256 #define HARD_SERVER_LIMIT 256
#endif #endif
/* File used for accept locking, when we use a file */
#ifndef DEFAULT_LOCKFILE
#define DEFAULT_LOCKFILE "logs/accept.lock"
#endif
/* Scoreboard file, if there is one */
#ifndef DEFAULT_SCOREBOARD
#define DEFAULT_SCOREBOARD "logs/apache_runtime_status"
#endif
/* Where the main/parent process's pid is logged */
#ifndef DEFAULT_PIDLOG
#define DEFAULT_PIDLOG "logs/httpd.pid"
#endif
/*
* Interval, in microseconds, between scoreboard maintenance.
*/
#ifndef SCOREBOARD_MAINTENANCE_INTERVAL
#define SCOREBOARD_MAINTENANCE_INTERVAL 1000000
#endif
/* Number of requests to try to handle in a single process. If <= 0,
* the children don't die off.
*/
#ifndef DEFAULT_MAX_REQUESTS_PER_CHILD
#define DEFAULT_MAX_REQUESTS_PER_CHILD 10000
#endif
#endif /* AP_MPM_DEFAULT_H */ #endif /* AP_MPM_DEFAULT_H */

View File

@@ -87,6 +87,7 @@
#define CORE_PRIVATE #define CORE_PRIVATE
#include "ap_config.h"
#include "apr_portable.h" #include "apr_portable.h"
#include "httpd.h" #include "httpd.h"
#include "mpm_default.h" #include "mpm_default.h"
@@ -101,8 +102,11 @@
#include "unixd.h" #include "unixd.h"
#include "iol_socket.h" #include "iol_socket.h"
#include "ap_listen.h" #include "ap_listen.h"
#ifdef USE_SHMGET_SCOREBOARD #include "ap_mmn.h"
#include <sys/times.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/wait.h>
#ifdef USE_SHMGET_SCOREBOARD
#include <sys/ipc.h> #include <sys/ipc.h>
#include <sys/shm.h> #include <sys/shm.h>
#endif #endif

View File

@@ -67,11 +67,15 @@ extern "C" {
#include <time.h> #include <time.h>
#else #else
#include <sys/times.h> #include <sys/times.h>
#include <sys/time.h>
#endif /* TPF */ #endif /* TPF */
#endif #endif
#ifdef HAVE_SYS_TIMES_H
#include <sys/times.h> /* The optimized timeout code only works if we're not using a scoreboard file
*/
#if (defined (USE_MMAP_SCOREBOARD) || defined (USE_SHMGET_SCOREBOARD))
#define OPTIMIZE_TIMEOUTS
#endif #endif
/* Scoreboard info on a process is, for now, kept very brief --- /* Scoreboard info on a process is, for now, kept very brief ---

View File

@@ -94,4 +94,23 @@
#define HARD_SERVER_LIMIT 256 #define HARD_SERVER_LIMIT 256
#endif #endif
/* Where the main/parent process's pid is logged */
#ifndef DEFAULT_PIDLOG
#define DEFAULT_PIDLOG "logs/httpd.pid"
#endif
/*
* Interval, in microseconds, between scoreboard maintenance.
*/
#ifndef SCOREBOARD_MAINTENANCE_INTERVAL
#define SCOREBOARD_MAINTENANCE_INTERVAL 1000000
#endif
/* Number of requests to try to handle in a single process. If <= 0,
* the children don't die off.
*/
#ifndef DEFAULT_MAX_REQUESTS_PER_CHILD
#define DEFAULT_MAX_REQUESTS_PER_CHILD 10000
#endif
#endif /* AP_MPM_DEFAULT_H */ #endif /* AP_MPM_DEFAULT_H */

View File

@@ -66,6 +66,12 @@ extern "C" {
#include <sys/times.h> #include <sys/times.h>
#endif #endif
/* The optimized timeout code only works if we're not using a scoreboard file
*/
#if (defined (USE_MMAP_SCOREBOARD) || defined (USE_SHMGET_SCOREBOARD))
#define OPTIMIZE_TIMEOUTS
#endif
/* Scoreboard info on a thread is, for now, kept very brief --- /* Scoreboard info on a thread is, for now, kept very brief ---
* just status value and pid (the latter so that the caretaker thread * just status value and pid (the latter so that the caretaker thread
* can properly update the scoreboard when a thread dies). We may want * can properly update the scoreboard when a thread dies). We may want

View File

@@ -111,4 +111,23 @@
#define HARD_SERVER_LIMIT 8 #define HARD_SERVER_LIMIT 8
#endif #endif
/* Where the main/parent process's pid is logged */
#ifndef DEFAULT_PIDLOG
#define DEFAULT_PIDLOG "logs/httpd.pid"
#endif
/*
* Interval, in microseconds, between scoreboard maintenance.
*/
#ifndef SCOREBOARD_MAINTENANCE_INTERVAL
#define SCOREBOARD_MAINTENANCE_INTERVAL 1000000
#endif
/* Number of requests to try to handle in a single process. If <= 0,
* the children don't die off.
*/
#ifndef DEFAULT_MAX_REQUESTS_PER_CHILD
#define DEFAULT_MAX_REQUESTS_PER_CHILD 10000
#endif
#endif /* AP_MPM_DEFAULT_H */ #endif /* AP_MPM_DEFAULT_H */

View File

@@ -83,6 +83,7 @@
#include "rfc1413.h" #include "rfc1413.h"
#include "http_main.h" /* set_callback_and_alarm */ #include "http_main.h" /* set_callback_and_alarm */
#include "apr_network_io.h" #include "apr_network_io.h"
#include <string.h>
/* Local stuff. */ /* Local stuff. */
/* Semi-well-known port */ /* Semi-well-known port */

View File

@@ -68,10 +68,13 @@
* #define DEBUG_CFG_LINES to trace every line read from the config files * #define DEBUG_CFG_LINES to trace every line read from the config files
*/ */
#define CORE_PRIVATE
#include "httpd.h" #include "httpd.h"
#include "http_main.h" #include "http_main.h"
#include "http_log.h" #include "http_log.h"
#include "http_protocol.h" #include "http_protocol.h"
#include "ap_config.h"
#if defined(SUNOS4) #if defined(SUNOS4)
/* stdio.h has been read in ap_config.h already. Add missing prototypes here: */ /* stdio.h has been read in ap_config.h already. Add missing prototypes here: */
extern int fgetc(FILE *); extern int fgetc(FILE *);
@@ -1939,60 +1942,6 @@ API_EXPORT(char *) ap_uuencode(ap_context_t *p, char *string)
return ap_pbase64encode(p, string); return ap_pbase64encode(p, string);
} }
#ifdef OS2
void os2pathname(char *path)
{
char newpath[MAX_STRING_LEN];
int loop;
int offset;
offset = 0;
for (loop = 0; loop < (strlen(path) + 1) && loop < sizeof(newpath) - 1; loop++) {
if (path[loop] == '/') {
newpath[offset] = '\\';
/*
offset = offset + 1;
newpath[offset] = '\\';
*/
}
else
newpath[offset] = path[loop];
offset = offset + 1;
};
/* Debugging code */
/* fprintf(stderr, "%s \n", newpath); */
strcpy(path, newpath);
};
/* quotes in the string are doubled up.
* Used to escape quotes in args passed to OS/2's cmd.exe
*/
char *ap_double_quotes(ap_context_t *p, char *str)
{
int num_quotes = 0;
int len = 0;
char *quote_doubled_str, *dest;
while (str[len]) {
num_quotes += str[len++] == '\"';
}
quote_doubled_str = ap_palloc(p, len + num_quotes + 1);
dest = quote_doubled_str;
while (*str) {
if (*str == '\"')
*(dest++) = '\"';
*(dest++) = *(str++);
}
*dest = 0;
return quote_doubled_str;
}
#endif
#ifndef HAVE_STRERROR #ifndef HAVE_STRERROR
char * char *
strerror(int err) strerror(int err)

View File

@@ -66,6 +66,8 @@
* *
*/ */
#define CORE_PRIVATE
#include "ap_config.h" #include "ap_config.h"
#include "util_date.h" #include "util_date.h"
#include <ctype.h> #include <ctype.h>

View File

@@ -65,6 +65,8 @@
#include "http_request.h" /* for sub_req_lookup_uri() */ #include "http_request.h" /* for sub_req_lookup_uri() */
#include "util_script.h" #include "util_script.h"
#include "util_date.h" /* For parseHTTPdate() */ #include "util_date.h" /* For parseHTTPdate() */
#include <stdlib.h>
#include <string.h>
#ifdef OS2 #ifdef OS2
#define INCL_DOS #define INCL_DOS

View File

@@ -62,6 +62,8 @@
#include "httpd.h" #include "httpd.h"
#include "http_log.h" #include "http_log.h"
#include "util_uri.h" #include "util_uri.h"
#include <string.h>
#include <netdb.h>
/* Some WWW schemes and their default ports; this is basically /etc/services */ /* Some WWW schemes and their default ports; this is basically /etc/services */
/* This will become global when the protocol abstraction comes */ /* This will become global when the protocol abstraction comes */

View File

@@ -67,6 +67,7 @@
#include "http_vhost.h" #include "http_vhost.h"
#include "http_protocol.h" #include "http_protocol.h"
#include "http_core.h" #include "http_core.h"
#include "ap_config.h"
/* /*
* After all the definitions there's an explanation of how it's all put * After all the definitions there's an explanation of how it's all put