]> granicus.if.org Git - apache/commitdiff
Finish the commits for the change in the header files. Basically, this hides
authorRyan Bloom <rbb@apache.org>
Wed, 19 Jan 2000 01:16:31 +0000 (01:16 +0000)
committerRyan Bloom <rbb@apache.org>
Wed, 19 Jan 2000 01:16:31 +0000 (01:16 +0000)
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

42 files changed:
include/http_conf_globals.h
include/http_connection.h
include/http_core.h
include/http_log.h
include/httpd.h
include/util_date.h
include/util_md5.h
modules/http/http_core.c
modules/http/http_protocol.c
modules/http/http_request.c
os/beos/beosd.h
os/beos/os.h
os/os2/os.h
os/unix/os.h
os/unix/unixd.c
os/unix/unixd.h
os/win32/os.h
server/config.c
server/connection.c
server/listen.c
server/log.c
server/main.c
server/mpm/dexter/dexter.c
server/mpm/dexter/mpm_default.h
server/mpm/dexter/scoreboard.c
server/mpm/mpmt_beos/mpm_default.h
server/mpm/mpmt_pthread/mpm_default.h
server/mpm/mpmt_pthread/mpmt_pthread.c
server/mpm/mpmt_pthread/scoreboard.c
server/mpm/mpmt_pthread/scoreboard.h
server/mpm/prefork/mpm_default.h
server/mpm/prefork/prefork.c
server/mpm/prefork/scoreboard.h
server/mpm/spmt_os2/mpm_default.h
server/mpm/spmt_os2/scoreboard.h
server/mpm/winnt/mpm_default.h
server/rfc1413.c
server/util.c
server/util_date.c
server/util_script.c
server/util_uri.c
server/vhost.c

index 5585469ed991c49fd00a6cb37c6b74af0539341d..26e9fc4f9ed9f0a99fd9ba958a6f6e3988aa6a19 100644 (file)
@@ -64,17 +64,8 @@ extern "C" {
 
 /* 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; */
 
-/* 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_docrootcheck; */
 
index 54eff1cbd1d3347e2b69ff49d472de5858246086..bbd91d51a946e85b93e792fc8da84963d3e5e336 100644 (file)
@@ -65,6 +65,7 @@
 extern "C" {
 #endif
 
+#ifdef CORE_PRIVATE
 conn_rec *ap_new_connection(ap_context_t *p, server_rec *server, BUFF *inout,
                            const struct sockaddr_in *remaddr,
                            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);
 CORE_EXPORT(void) ap_process_connection(conn_rec *);
 int ap_process_http_connection(conn_rec *);
+#endif
 
   /* Hooks */
 DECLARE_HOOK(void,pre_connection,(conn_rec *))
index ef096b84ca00b5ec1da416b9c509c8da19491b47..1fac2d81b929710cf96b874447e5adf66ad1b332 100644 (file)
@@ -154,17 +154,6 @@ API_EXPORT(const char *) ap_auth_name (request_rec *);
 API_EXPORT(int) ap_satisfies (request_rec *r);
 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
 
 /*
@@ -256,11 +245,6 @@ typedef struct {
     ap_array_header_t *sec;
     regex_t *r;
 
-#ifdef WIN32
-    /* Where to find interpreter to run scripts */
-    interpreter_source_e script_interpreter_source;
-#endif    
-    
 } core_dir_config;
 
 /* Per-server core configuration */
index 5837cb9c1c7959ac50bc3e9276f74b6269d21980..f96311051a716cd64eb8f4a0cc19260109e76339 100644 (file)
@@ -94,11 +94,6 @@ extern "C" {
 #endif
 
 #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 */
 #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 {
     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
     char *program;
     ap_proc_t *pid;
-    ap_file_t *fds[2];
-#else
-    ap_file_t *write_f;
 #endif
 } piped_log;
 
 API_EXPORT(piped_log *) ap_open_piped_log (ap_context_t *p, const char *program);
 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_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
 }
index 0c54134c195d994530ebb0f96d9ba0d967a6cfe7..decab3910d7823fef45c62741f0f08d21c58409c 100644 (file)
@@ -66,14 +66,24 @@ extern "C" {
  * 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... */
 
-#include "ap_config.h"
 #include "apr_general.h"
 #include "apr_lib.h"
 #include "apr_time.h"
+#include "apr_network_io.h"
 #include "buff.h"
 #include "ap.h"
+#include "ap_mmn.h"
+
+#include <netinet/in.h>
+
+#ifdef CORE_PRIVATE
 
 /* ----------------------------- config dir ------------------------------ */
 
@@ -95,6 +105,14 @@ extern "C" {
 #endif
 #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
  * directive.
  */
@@ -120,31 +138,7 @@ extern "C" {
 #define TARGET "httpd"
 #endif
 
-/* 
- * --------- 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 ---------- */
+/* --------- Default user name and group name ----------------------------- */
 /* --- These may be specified as numbers by placing a # before a number --- */
 
 #ifndef DEFAULT_USER
@@ -171,32 +165,6 @@ extern "C" {
 #endif
 #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 */
 #ifndef DEFAULT_ACCESS_FNAME
 #ifdef OS2
@@ -217,11 +185,6 @@ extern "C" {
 #define RESOURCE_CONFIG_FILE "conf/srm.conf"
 #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 */
 #ifndef ACCESS_CONFIG_FILE
 #define ACCESS_CONFIG_FILE "conf/access.conf"
@@ -231,35 +194,17 @@ extern "C" {
 #ifndef DEFAULT_RFC1413
 #define DEFAULT_RFC1413 0
 #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 */
 #ifndef DEFAULT_PATH
 #define DEFAULT_PATH "/bin:/usr/bin:/usr/ucb:/usr/bsd:/usr/local/bin"
 #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 */
 #ifndef SUEXEC_BIN
 #define SUEXEC_BIN  HTTPD_ROOT "/sbin/suexec"
 #endif
 
-/* The default string lengths */
-#define MAX_STRING_LEN HUGE_STRING_LEN
-#define HUGE_STRING_LEN 8192
-
 /* The timeout for waiting for messages */
 #ifndef DEFAULT_TIMEOUT
 #define DEFAULT_TIMEOUT 120000 
@@ -275,58 +220,6 @@ extern "C" {
 #define DEFAULT_KEEPALIVE 100
 #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
  * by listen(2).  Under some systems, it should be increased if you
  * are experiencing a heavy TCP SYN flood attack.
@@ -379,8 +272,95 @@ extern "C" {
  * Example: "Apache/1.1.0 MrWidget/0.1-alpha" 
  */
 
-#define SERVER_BASEVERSION "Apache/2.0-dev"       /* SEE COMMENTS ABOVE */
-#define SERVER_VERSION  SERVER_BASEVERSION
+/* Define this to 1 if you want fancy indexing, 0 otherwise */
+#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
  * 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 SERVER_PROTOCOL "HTTP/1.1"
-#ifndef SERVER_SUPPORT
-#define SERVER_SUPPORT "http://www.apache.org/"
-#endif
-
 #define DECLINED -1            /* Module declines to handle */
 #define DONE -2                        /* Module has served the response completely 
                                 *  - 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 INCLUDES_MAGIC_TYPE "text/x-server-parsed-html"
 #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 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 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):
  *    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;
 struct server_addr_rec {
     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 */
     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  */
 };
 
+/* stuff marked API_EXPORT is part of the API, and intended for use
+ * 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
 
-/* Prototypes for utilities... util.c.
+/* 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 */
 
@@ -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_uuencode(ap_context_t *p, char *string); 
 
-#ifdef OS2
-void os2pathname(char *path);
-char *ap_double_quotes(ap_context_t *p, char *str);
+/* Regexes */
+#ifdef AP_USE_HSREGEX
+#include "hsregex.h"
+#else
+#include <regex.h>
 #endif
 
 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 */
 API_EXPORT(int) ap_cfg_closefile(configfile_t *cfp);
 
-#ifdef NEED_STRERROR
-char *strerror(int err);
-#endif
-
 /* Misc system hackery */
 
 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(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
 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);
@@ -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 *);
 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);
 
 /*
@@ -1102,14 +1025,6 @@ API_EXPORT(void) ap_log_assert(const char *szExp, const char *szFile, int nLine)
                            __attribute__((noreturn));
 #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).
  * 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
index b74849899b153dbbf9d30ad33942f88f1ffb2d2e..2f892bb261cde504c9ea5ad1578c72351b434c27 100644 (file)
@@ -66,12 +66,16 @@ extern "C" {
  * 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"
+/* 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
 
index 646b080805475db1c4a5031d38e703f71415e82f..6e11506a796c3c9f2e2e8041903145c71b5d9f35 100644 (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_binary(ap_context_t *a, const unsigned char *buf, int len);
 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);
-#endif /* CHARSET_EBCDIC */
 
 #ifdef __cplusplus
 }
index 9dee32299bb17e56e23f5a225df948381d755fab..393c2a14682e907a9e071dc7caccb70b17602030 100644 (file)
@@ -69,6 +69,7 @@
 #include "util_md5.h"
 #include "apr_fnmatch.h"
 #include "http_connection.h"
+#include "ap_config.h"
 
 /* Allow Apache to use ap_mmap */
 #ifdef USE_MMAP_FILES
index 51eebc2ef24040173fcf959a83d46816ac454e42..5f622879f1097d3e412134dac3f9926953e05d3a 100644 (file)
@@ -75,6 +75,7 @@
 #include "util_date.h"          /* For parseHTTPdate and BAD_DATE */
 #include "mpm_status.h"
 #include <stdarg.h>
+#include "ap_config.h"
 
 HOOK_STRUCT(
            HOOK_LINK(post_read_request)
index 5dc2e63d2c7fab1dedd55f854013c7687ece3baf..1ccbacc85a17ab0e05147be7401471b0e390a42e 100644 (file)
 #include "http_protocol.h"
 #include "http_log.h"
 #include "http_main.h"
-#if 0
-#include "scoreboard.h"
-#endif
 #include "apr_fnmatch.h"
+#include "ap_config.h"
 
 HOOK_STRUCT(
            HOOK_LINK(translate_name)
index b65cc661b9d014377a6945bb557c478b2432c1ee..876bb475b28072645bcc7594969366ca2ab48d1c 100644 (file)
 
 /* 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 {
     char *user_name;
     uid_t user_id;
index 3a1c22b30ebc783060954b6a49e32c72d2ba32e3..f9e42e2f4eb59c9597b006e33c4e8e1eb8055fb7 100644 (file)
@@ -72,6 +72,9 @@
  */
 
 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_kill(pid, sig)                kill(pid, sig)
 
index d717f1f8ca4cb0578c815ec76823fbcc9d15aa10..22355ab4cfc23964babb2a9109b4c55633a4577e 100644 (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);
 #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 */
 #define ap_os_is_filename_valid(f)         (1)
 
index b11394e458ee0740f00297bf3abc0aada5014e7d..875a669990168a03e3b0e4b198360a6b3182dec3 100644 (file)
@@ -90,6 +90,9 @@ extern int ap_os_is_path_absolute(const char *file);
 
 /* 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_kill(pid, sig)                kill(pid, sig)
 
index ee817c491ada65ca06e9e539615894a89aa8b9d0..4748e93242c27f70898bffc94f4f49ec0f5c9ed0 100644 (file)
@@ -60,6 +60,7 @@
 #include "http_main.h"
 #include "http_log.h"
 #include "unixd.h"
+#include <pwd.h>
 
 unixd_config_rec unixd_config;
 
index 733c90b9278fd9cdad1c72b82d0d7b42a003f8d1..30a74f730c1b679071d46fa6ac6e496f99eb8811 100644 (file)
 
 /* 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 {
     char *user_name;
     uid_t user_id;
index 6cdad531b108d406801d66d2ef83ed5c1855c108..20ff4d9152bde5dc1fbb4bc41ecfc2608e85360f 100644 (file)
@@ -172,6 +172,9 @@ __inline int ap_os_is_path_absolute(const char *file)
 #define spawnle                                    os_spawnle
 
 /* 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 os_strftime(char *, size_t , const char *, const struct tm *);
 
index 2d72a08bfb98a6dbce1ec5e2ed7e3693ebc7c96f..09faae67e2663ce6482ba105c678cc6dfb399d53 100644 (file)
@@ -81,7 +81,7 @@
 #include "http_request.h"      /* for default_handler (see invoke_handler) */
 #include "http_main.h"
 #include "http_vhost.h"
-#include "explain.h"
+#include "ap_config.h"
 
 HOOK_STRUCT(
            HOOK_LINK(header_parser)
@@ -102,8 +102,6 @@ IMPLEMENT_HOOK_VOID(open_logs,
                    (pconf,plog,ptemp,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
index a3bbd78792e0798db0aec211d67d52dbe560d37c..11d49d0d57928871bacd9bb7ba4b145a9bc33fd3 100644 (file)
@@ -64,6 +64,7 @@
 #include "mpm_status.h"
 #include "http_config.h"
 #include "http_vhost.h"
+#include "ap_config.h"
 
 HOOK_STRUCT(
            HOOK_LINK(pre_connection)
index 9061a974a6fe22d1da4d579c74a7e54e0c448779..6ae1ba20f561d28f605c65436f91411824807a6b 100644 (file)
  */
 
 #include "apr_network_io.h"
+
+#define CORE_PRIVATE
 #include "httpd.h"
 #include "http_config.h"
 #include "ap_listen.h"
 #include "http_log.h"
+#include <string.h>
 
 ap_listen_rec *ap_listeners;
 static ap_listen_rec *old_listeners;
index 0832613f84e869a555c72a2e808f1a69fe63353c..1a5a3d9c578322965c7a2326bd1d7733679e3294 100644 (file)
@@ -64,6 +64,7 @@
 
 
 #define CORE_PRIVATE
+#include "ap_config.h"
 #include "apr_lib.h"
 #include "apr_portable.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,
                "[client %s] ", r->connection->remote_ip);
     }
+    /* XXX - need an APRized strerror() */
     if (!(level & APLOG_NOERRNO)
-       && (status != 0)
-#ifdef WIN32
-       && !(level & APLOG_WIN32ERROR)
-#endif
-       ) {
+       && (status != 0)) {
        len += ap_snprintf(errstr + len, MAX_STRING_LEN - len,
                "(%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);
 
@@ -622,11 +576,11 @@ static int piped_log_spawn(piped_log *pl)
 #endif
     if ((ap_createprocattr_init(&procattr, pl->p)         != 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. */
        ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_NOERRNO, 0, NULL,
-           "piped_log_spawn: unable to exec %s -c '%s': %s",
-           SHELL_PATH, pl->program, strerror (errno));
+           "piped_log_spawn: unable to exec '%s': %s",
+           pl->program, strerror (errno));
         rc = -1;
     }
     else {
@@ -637,7 +591,7 @@ static int piped_log_spawn(piped_log *pl)
                                             /*   successful that the child is running.        */
             pl->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_unregister_other_child(pl);
-    ap_close(pl->fds[0]);
-    ap_close(pl->fds[1]);
+    ap_close(ap_piped_log_read_fd(pl));
+    ap_close(ap_piped_log_write_fd(pl));
     return APR_SUCCESS;
 }
 
@@ -706,12 +660,11 @@ static ap_status_t piped_log_cleanup_for_exec(void *data)
 {
     piped_log *pl = data;
 
-    ap_close(pl->fds[0]);
-    ap_close(pl->fds[1]);
+    ap_close(ap_piped_log_read_fd(pl));
+    ap_close(ap_piped_log_write_fd(pl));
     return APR_SUCCESS;
 }
 
-
 API_EXPORT(piped_log *) ap_open_piped_log(ap_context_t *p, const char *program)
 {
     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->program = ap_pstrdup(p, program);
     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;
        errno = save_errno;
        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) {
        int save_errno = errno;
        ap_kill_cleanup(p, pl, piped_log_cleanup);
-       ap_close(pl->fds[0]);
-       ap_close(pl->fds[1]);
+       ap_close(ap_piped_log_read_fd(pl));
+       ap_close(ap_piped_log_write_fd(pl));
        errno = save_errno;
        return NULL;
     }
     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);
-    ap_kill_cleanup(pl->p, pl, piped_log_cleanup);
+    piped_log *pl = data;
+
+    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)
 {
     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->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;
 }
 
+#endif
 
 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
+
index f88d29d8dac41e2f936ea91fc9ced0a63793ac1c..06fee1b5a794275772278add2e02e24054b51a5d 100644 (file)
@@ -63,6 +63,7 @@
 #include "util_uri.h" 
 #include "apr_getopt.h"
 #include "ap_mpm.h"
+#include "ap_config.h"
 
 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_config_defines;
 
+/* XXX - We should be able to grab the per-MPM settings here too */
 static void show_compile_settings(void)
 {
     printf("Server version: %s\n", ap_get_server_version());
index ea0c82423fb059f9c72bdffa1123ea07fa526d15..fa4ed627fed907504036379dc745edf7ae0f0e9b 100644 (file)
@@ -57,6 +57,7 @@
  
 #define CORE_PRIVATE 
  
+#include "ap_config.h"
 #include "apr_portable.h"
 #include "httpd.h" 
 #include "http_main.h" 
index 881a5204650282833107b35d0130c8d50e83051d..ed22c7d2f1b0b49fa5cc8d71ac492da56c376f0a 100644 (file)
 #define HARD_SERVER_LIMIT 8 
 #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 */
index 8e75d79009c6bd6bedaadab959cf016934179c3a..d80e038ae57fada2e92e2eb5250b4677013c2a3c 100644 (file)
@@ -55,6 +55,7 @@
  * 
  */ 
 
+#include "ap_config.h" 
 #include "httpd.h"
 #include "http_log.h"
 #include "http_main.h"
@@ -65,8 +66,8 @@
 #include "mpm_status.h"
 #include "scoreboard.h"
 #include "dexter.h" /* for max_daemons_limit */
-#ifdef USE_SHMGET_SCOREBOARD
 #include <sys/types.h>
+#ifdef USE_SHMGET_SCOREBOARD
 #include <sys/ipc.h>
 #include <sys/shm.h>
 #endif
index a60f1222666de13dea332368070ae19109b3ffd5..02a4b2459f4cd3f33add5f316d8b890d7a0b0f6a 100644 (file)
 #define DEFAULT_THREADS_PER_CHILD 10
 #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 */
index 538af6b83662a8367b76ab163754b12f9ff34d41..d45efd59290d8129781f4d39d4bc8297c2107134 100644 (file)
 #define DEFAULT_THREADS_PER_CHILD 50
 #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 */
index 5f71fc44477e7b7c1f89b1910b20555b135a9a07..6b29134d4086a7d872e6583dc85bdae66e665ba6 100644 (file)
@@ -58,6 +58,8 @@
 #define CORE_PRIVATE 
  
 #include "apr_portable.h"
+#include "apr_thread_proc.h"
+#include "ap_config.h"
 #include "httpd.h" 
 #include "http_main.h" 
 #include "http_log.h" 
@@ -71,6 +73,7 @@
 #include "scoreboard.h" 
 
 #include <netinet/tcp.h> 
+#include <sys/wait.h> 
 #include <pthread.h>
 #include <signal.h>
 
index 876b8c26705282735615f365db89df9aa1507508..bfa31a8fb739b934b6f32a22b5b32f2b7de4c486 100644 (file)
@@ -1,3 +1,4 @@
+#include "ap_config.h"
 #include "httpd.h"
 #include "http_log.h"
 #include "http_main.h"
@@ -8,8 +9,8 @@
 #include "mpm_status.h"
 #include "mpmt_pthread.h"
 #include "scoreboard.h"
-#ifdef USE_SHMGET_SCOREBOARD
 #include <sys/types.h>
+#ifdef USE_SHMGET_SCOREBOARD
 #include <sys/ipc.h>
 #include <sys/shm.h>
 #endif
@@ -411,8 +412,6 @@ API_EXPORT(void) reopen_scoreboard(ap_context_t *p)
 #else
 #define SCOREBOARD_FILE
 static scoreboard _scoreboard_image;
-static int scoreboard_fd = -1;
-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
@@ -456,7 +455,7 @@ static void cleanup_scoreboard_file(void *foo)
 API_EXPORT(void) reopen_scoreboard(ap_context_t *p)
 {
     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,
             APR_UREAD | APR_UWRITE | APR_GREAD | APR_GWRITE | APR_WREAD | APR_WWRITE,
index dc69f5b64df74db6653559e10a3a4786af5a8900..4a367f3fdbba106c81dc2a9fe70c47094e3af173 100644 (file)
@@ -63,6 +63,7 @@ extern "C" {
 #endif
 
 #ifdef HAVE_SYS_TIMES_H
+#include <sys/time.h>
 #include <sys/times.h>
 #elif defined(TPF)
 #include <time.h>
@@ -70,6 +71,12 @@ extern "C" {
 
 #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 --- 
  * just status value and pid (the latter so that the caretaker process
  * can properly update the scoreboard when a process dies).  We may want
index 3ff9ac27f7fe6e5ff99de3a741d822343199e9d2..131b516cac2d67d3e99f670abd8cd72af51a4de1 100644 (file)
 #define HARD_SERVER_LIMIT 256
 #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 */
index 2afe44b28ecdd13031e2269a21e5ebcb4e9aa767..b3d0957d3ce3c35255fb11c971a19aecc097eb40 100644 (file)
@@ -87,6 +87,7 @@
 
 #define CORE_PRIVATE
 
+#include "ap_config.h"
 #include "apr_portable.h"
 #include "httpd.h"
 #include "mpm_default.h"
 #include "unixd.h"
 #include "iol_socket.h"
 #include "ap_listen.h"
-#ifdef USE_SHMGET_SCOREBOARD
+#include "ap_mmn.h"
+#include <sys/times.h>
 #include <sys/types.h>
+#include <sys/wait.h>
+#ifdef USE_SHMGET_SCOREBOARD
 #include <sys/ipc.h>
 #include <sys/shm.h>
 #endif
index cb182b67b246f7c237a2f8eba09fd42521346a71..8bf2bb695bc16eadcef1ec80ce0db96fbc5adb93 100644 (file)
@@ -67,11 +67,15 @@ extern "C" {
 #include <time.h>
 #else
 #include <sys/times.h>
+#include <sys/time.h>
 #endif /* TPF */
 #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
 
 /* Scoreboard info on a process is, for now, kept very brief --- 
index 3ff9ac27f7fe6e5ff99de3a741d822343199e9d2..78d527efbf333f6c29ef287c4cde6bef32897018 100644 (file)
 #define HARD_SERVER_LIMIT 256
 #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 */
index a34576682479f27b484fa86ae24487564d126a60..82693e2c3781bb28592416d9f8183c5da507307d 100644 (file)
@@ -66,6 +66,12 @@ extern "C" {
 #include <sys/times.h>
 #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 --- 
  * just status value and pid (the latter so that the caretaker thread
  * can properly update the scoreboard when a thread dies).  We may want
index 5ac2fe40aa4e1162d46d4c5d6e4c5bf99c586a1c..deb1ceb6ae97c9e976d2231d576d96bdc640826c 100644 (file)
 #define HARD_SERVER_LIMIT 8 
 #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 */
index 3bd66f573eaa61dce9db508e6818649bbed03da0..604d1ac044930bb04ed9fe53201831337411654a 100644 (file)
@@ -83,6 +83,7 @@
 #include "rfc1413.h"
 #include "http_main.h"         /* set_callback_and_alarm */
 #include "apr_network_io.h"
+#include <string.h>
 
 /* Local stuff. */
 /* Semi-well-known port */
index c1027a3985cce0652a9cc0b46c636d2e5f3f8250..8d4fbd2ef679881bdbc0a5f1460454d18bb5de3b 100644 (file)
  * #define DEBUG_CFG_LINES  to trace every line read from the config files
  */
 
+#define CORE_PRIVATE
+
 #include "httpd.h"
 #include "http_main.h"
 #include "http_log.h"
 #include "http_protocol.h"
+#include "ap_config.h"
 #if defined(SUNOS4)
 /* stdio.h has been read in ap_config.h already. Add missing prototypes here: */
 extern int fgetc(FILE *);
@@ -1939,60 +1942,6 @@ API_EXPORT(char *) ap_uuencode(ap_context_t *p, char *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
 char *
      strerror(int err)
index 2864ed244bcb5db96ff30f86213612d087fdfb21..f8809e9deff325b90e80bab05bb0adb3a13d90c0 100644 (file)
@@ -66,6 +66,8 @@
  * 
  */
 
+#define CORE_PRIVATE
+
 #include "ap_config.h"
 #include "util_date.h"
 #include <ctype.h>
index 9095b57b7b39fcae53a39f6275ee02c738a4852d..293ba987640edbf0ca29df702eb8cc2131433aab 100644 (file)
@@ -65,6 +65,8 @@
 #include "http_request.h"      /* for sub_req_lookup_uri() */
 #include "util_script.h"
 #include "util_date.h"         /* For parseHTTPdate() */
+#include <stdlib.h>
+#include <string.h>
 
 #ifdef OS2
 #define INCL_DOS
index 47fa1e385f032f9c42ca841159a31c2b4f05eb36..b4a1ffc64925fb26df68ad49afc606768000a791 100644 (file)
@@ -62,6 +62,8 @@
 #include "httpd.h"
 #include "http_log.h"
 #include "util_uri.h"
+#include <string.h>
+#include <netdb.h>
 
 /* Some WWW schemes and their default ports; this is basically /etc/services */
 /* This will become global when the protocol abstraction comes */
index 400abfa11f6cdd09cc6f280a4e06aec48bcb6d0b..e22a42abc9d7b8e2aa7255edac31b9595bc997a4 100644 (file)
@@ -67,6 +67,7 @@
 #include "http_vhost.h"
 #include "http_protocol.h"
 #include "http_core.h"
+#include "ap_config.h"
 
 /*
  * After all the definitions there's an explanation of how it's all put