Re: cvs commit: apache-2.0 STATUS
On Fri, 6 Feb 1998, Paul Sutton wrote: > On 6 Feb 1998 [EMAIL PROTECTED] wrote: > > +c) radically revamped API > > + > > +d) just new API phases > > + Brian +1 > > Um, I'm not sure how to vote on this. Personally I'd like to see (a) the > function API left pretty much as it is, (b) the phase API radically > updated (a la Alexei et al's proposal -- i.e. remove the module structure > from modules etc), and (c) backward compatibility with modules written for > 1.3. Um... if you remove the module structure, it is physically impossible to retain bacwards compatibility with modules written for 1.3. And I don't think it's a good idea to try. Especially not if we need to rename all our functions (see other threads). And there are a number of other parts of the Apache API that really need to be rethought (can we say "configuration"?) Backwards compatibility with 1.3, either for the API or the config language or anything else, has never (in the year and a half we've been discussing it) been a high priority for 2.0. Also, if, as certain threads here might be leaning, Apache 2.0 is C++-based (I'm +0 personally - I don't mind C++, but the lack of legacy support is a bit troubling), you pretty much have to throw the 1.x API completely out the window. -- Alexei Kosut <[EMAIL PROTECTED]> <http://www.stanford.edu/~akosut/> Stanford University, Class of 2001 * Apache <http://www.apache.org> *
cvs commit: apachen/src/modules/extra .cvsignore
akosut 97/09/12 15:56:46 Added: src/modules/extra .cvsignore Log: Ignore the machine-generated Makefile in modules/standard/extra Revision ChangesPath 1.1 apachen/src/modules/extra/.cvsignore Index: .cvsignore === Makefile
cvs commit: apachen/src/main http_config.c
akosut 97/09/12 15:55:17 Modified:src/main http_config.c Log: Have create_empty_config() create DYNAMIC_MODULE_LIMIT more vector space than it needs, in case you put LoadModule after a or in a config file. Also have add_module() complain and exit if you try and load more than DYNAMIC_MODULE_LIMIT module. Revision ChangesPath 1.79 +20 -3 apachen/src/main/http_config.c Index: http_config.c === RCS file: /export/home/cvs/apachen/src/main/http_config.c,v retrieving revision 1.78 retrieving revision 1.79 diff -u -u -r1.78 -r1.79 --- http_config.c 1997/08/31 21:28:49 1.78 +++ http_config.c 1997/09/12 22:55:15 1.79 @@ -83,8 +83,15 @@ * of modules which control just about all of the server operation. */ -/* total_modules is the number of modules linked in. */ +/* total_modules is the number of modules that have been linked + * into the server. + */ static int total_modules = 0; +/* dynamic_modules is the number of modules that have been added + * after the pre-linked ones have been set up. It shouldn't be larger + * than DYNAMIC_MODULE_LIMIT. + */ +static int dynamic_modules = 0; module *top_module = NULL; typedef int (*handler_func)(request_rec *); @@ -117,7 +124,8 @@ void * create_empty_config (pool *p) { - void **conf_vector = (void **)pcalloc(p, sizeof(void*) * total_modules); + void **conf_vector = (void **)pcalloc(p, sizeof(void*) * + (total_modules+DYNAMIC_MODULE_LIMIT)); return (void *)conf_vector; } @@ -472,8 +480,17 @@ } if (m->module_index == -1) { m->module_index = total_modules++; + dynamic_modules++; + + if (dynamic_modules > DYNAMIC_MODULE_LIMIT) { + fprintf(stderr, "httpd: module \"%s\" could not be loaded, because" + " the dynamic\n", m->name); + fprintf(stderr, "module limit was reached. Please increase " + "DYNAMIC_MODULE_LIMIT and recompile.\n"); + exit(1); + } } - + /* Some C compilers put a complete path into __FILE__, but we want * only the filename (e.g. mod_includes.c). So check for path * components (Unix and DOS), and remove them.
cvs commit: apachen/src/modules/standard mod_status.c mod_usertrack.c
akosut 97/09/11 12:32:52 Modified:src/main conf.h http_main.c scoreboard.h src/modules/standard mod_status.c mod_usertrack.c Log: Cause Windows to compile again, with full STATUS reports turned on. This involves removing a bit of status data, since Windows supports neither times() nor gettimeofday(). Revision ChangesPath 1.133 +3 -0 apachen/src/main/conf.h Index: conf.h === RCS file: /export/home/cvs/apachen/src/main/conf.h,v retrieving revision 1.132 retrieving revision 1.133 diff -u -r1.132 -r1.133 --- conf.h1997/09/09 22:33:55 1.132 +++ conf.h1997/09/11 19:32:40 1.133 @@ -532,6 +532,7 @@ #define NEED_STRCASECMP #define NEED_STRNCASECMP #define NO_SETSID +#define NO_TIMES /* Add some drive name support */ #define chdir _chdir2 #include @@ -641,6 +642,8 @@ #define NO_WRITEV #define NO_SETSID #define NO_USE_SIGACTION +#define NO_TIMES +#define NO_GETTIMEOFDAY #define NEED_PROCESS_H #define USE_LONGJMP #define HAVE_MMAP 1.217 +7 -1 apachen/src/main/http_main.c Index: http_main.c === RCS file: /export/home/cvs/apachen/src/main/http_main.c,v retrieving revision 1.216 retrieving revision 1.217 diff -u -r1.216 -r1.217 --- http_main.c 1997/09/10 17:43:22 1.216 +++ http_main.c 1997/09/11 19:32:43 1.217 @@ -1523,7 +1523,7 @@ void time_process_request (int child_num, int status) { short_score *ss; -#if defined(NO_GETTIMEOFDAY) +#if defined(NO_GETTIMEOFDAY) && !defined(NO_TIMES) struct tms tms_blk; #endif @@ -1535,7 +1535,9 @@ if (status == START_PREQUEST) { #if defined(NO_GETTIMEOFDAY) +#ifndef NO_TIMES if ((ss->start_time = times(&tms_blk)) == -1) +#endif /* NO_TIMES */ ss->start_time = (clock_t)0; #else if (gettimeofday(&ss->start_time, (struct timezone *)0) < 0) @@ -1545,7 +1547,9 @@ } else if (status == STOP_PREQUEST) { #if defined(NO_GETTIMEOFDAY) +#ifndef NO_TIMES if ((ss->stop_time = times(&tms_blk)) == -1) +#endif ss->stop_time = ss->start_time = (clock_t)0; #else if (gettimeofday(&ss->stop_time, (struct timezone *)0) < 0) @@ -1571,7 +1575,9 @@ if (r->sent_bodyct) bgetopt(r->connection->client, BO_BYTECT, &bs); +#ifndef NO_TIMES times(&ss->times); +#endif ss->access_count ++; ss->my_access_count ++; ss->conn_count ++; 1.29 +2 -0 apachen/src/main/scoreboard.h Index: scoreboard.h === RCS file: /export/home/cvs/apachen/src/main/scoreboard.h,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- scoreboard.h 1997/08/17 11:40:14 1.28 +++ scoreboard.h 1997/09/11 19:32:44 1.29 @@ -116,7 +116,9 @@ struct timeval start_time; struct timeval stop_time; #endif +#ifndef NO_TIMES struct tms times; +#endif time_t last_used; char client[32]; /* Keep 'em small... */ char request[64];/* We just want an idea... */ 1.62 +12 -6 apachen/src/modules/standard/mod_status.c Index: mod_status.c === RCS file: /export/home/cvs/apachen/src/modules/standard/mod_status.c,v retrieving revision 1.61 retrieving revision 1.62 diff -u -r1.61 -r1.62 --- mod_status.c 1997/09/01 02:49:44 1.61 +++ mod_status.c 1997/09/11 19:32:49 1.62 @@ -213,9 +213,9 @@ unsigned long bcount=0; unsigned long kbcount=0; long req_time; -#ifdef NEXT +#if defined(NEXT) float tick=HZ; -#else +#elif !defined(WIN32) float tick=sysconf(_SC_CLK_TCK); #endif #endif /* STATUS */ @@ -303,10 +303,12 @@ if (lres!=0 || (score_record.status != SERVER_READY && score_record.status != SERVER_DEAD)) { +#ifndef NO_TIMES tu+=score_record.times.tms_utime; ts+=score_record.times.tms_stime; tcu+=score_record.times.tms_cutime; tcs+=score_record.times.tms_cstime; +#endif /* NO_TIMES */ count+=lres; bcount+=bytes; if (bcount>=KBYTE) { @@ -339,7 +341,7 @@ { rprintf(r,"Total Accesses: %lu\nTotal kBytes: %lu\n",count,kbcount); -#ifndef __EMX__ +#ifndef NO_TIMES /* Allow for OS/2 not having CPU stats */ if(ts || tu || tcu || tcs) rprintf(r,"CPULoad: %g\n",(tu+ts+tcu+tcs)/tick/up_time*100.); @@ -359,7 +361,7 @@ rprintf(r,"Total accesses: %lu - Total Traffic: ", count); format_kbyte_out(r,kbcount); -#ifndef __EMX__
cvs commit: apachen/src/main http_request.c
akosut 97/09/11 12:07:53 Modified:src/main http_request.c Log: entry_dir is the string, not entry_core... Make Windows compile. Revision ChangesPath 1.83 +1 -1 apachen/src/main/http_request.c Index: http_request.c === RCS file: /export/home/cvs/apachen/src/main/http_request.c,v retrieving revision 1.82 retrieving revision 1.83 diff -u -r1.82 -r1.83 --- http_request.c1997/09/11 18:46:45 1.82 +++ http_request.c1997/09/11 19:07:51 1.83 @@ -384,7 +384,7 @@ if (entry_core->r #if defined(__EMX__) || defined(WIN32) - || (entry_core[0] != '/' && entry_core[1] != ':') + || (entry_dir[0] != '/' && entry_dir[1] != ':') #else || entry_dir[0] != '/' #endif
cvs commit: apache-devsite how-to-release.html
akosut 97/09/10 15:41:55 Modified:.how-to-release.html Log: Add some tenative instructions for creating pre-InstallSheild Windows releases. Revision ChangesPath 1.14 +59 -0 apache-devsite/how-to-release.html Index: how-to-release.html === RCS file: /export/home/cvs/apache-devsite/how-to-release.html,v retrieving revision 1.13 retrieving revision 1.14 diff -u -u -r1.13 -r1.14 --- how-to-release.html 1997/08/22 07:22:34 1.13 +++ how-to-release.html 1997/09/10 22:41:53 1.14 @@ -94,6 +94,65 @@ + + + +How to build an Apache Windows release + + +Note: These instructions are temporary, until we have a +working installation of InstallShield, which will eventually be used to +distribute Apache for Windows. At that time, these instructions will be +replaced. + + + + + + + [ Building a source release ] + + Follow the instructions numbered 3-7 for Unix, to build an Apache + distribution. Be sure to use CVS running on Windows, so that the + linebreaks will be correct (alternately, export the repository with + Unix, and convert all text files - all text files - from \n to + \r\n) + Create a zipfile, using your favorite zip program, containing the + apache_1.X.Y directory. Name this zipfile + apache_1.X.Y-src.zip. + + + + [ Building a binary release ] + + First, build the source release (see above). + Compile and "install" a release version of Apache:Mbr> + > nmake /f Makefile.nt _apacher + > namke /f Makefile.nt installr + Rename the directory + > move \Apache \Apache_1.X.Y + Move the configuration files into the correct place + > copy conf\access.conf-dist-win + \Apache_1.X.Y\access.conf-dist + > copy conf\httpd.conf-dist-win + \Apache_1.X.Y\httpd.conf-dist + > copy conf\srm.conf-dist-win + \Apache_1.X.Y\srm.conf + > copy conf\mime.types + \Apache_1.X.Y\mime.types + > copy conf\magic + \Apache_1.X.Y\magic + Move the HTML documents into place + > copy htdocs \Apache_1.X.Y\htdocs + Copy the readme file + > copy README.NT \Apache_1.X.Y\readme.txt + Install the Visual C++ runtime DLLs, wherever it is they need to + go (???) + Create a zipfile of \Apache_1.X.Y named + apache_1.X.Y-bin.zip. + + + Written by Alexei Kosut and Ralf S. Engelschall.
cvs commit: apachen/src/main http_core.c
akosut 97/09/09 11:39:19 Modified:src/main http_core.c Log: Canonicalize Windows pathnames in and sections, so they will match the filenames you expect them to match. Also do case-insentitive matching for and , for the same reason. Reviewed by: Ben Laurie Revision ChangesPath 1.119 +25 -6 apachen/src/main/http_core.c Index: http_core.c === RCS file: /export/home/cvs/apachen/src/main/http_core.c,v retrieving revision 1.118 retrieving revision 1.119 diff -u -u -r1.118 -r1.119 --- http_core.c 1997/09/02 16:12:08 1.118 +++ http_core.c 1997/09/09 18:39:17 1.119 @@ -753,6 +753,16 @@ return NULL; } +/* We use this in and , to ensure that + * people don't get bitten by wrong-cased regex matches + */ + +#ifdef WIN32 +#define USE_ICASE REG_ICASE +#else +#define USE_ICASE 0 +#endif + static const char end_dir_magic[] = " outside of any section"; const char *end_dirsection (cmd_parms *cmd, void *dummy) { @@ -782,11 +792,15 @@ cmd->override = OR_ALL|ACCESS_CONF; if (cmd->info) { /* */ - r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED); + r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED|USE_ICASE); } else if (!strcmp(cmd->path, "~")) { cmd->path = getword_conf (cmd->pool, &arg); - r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED); + r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED|USE_ICASE); +} +else { + /* Ensure that the pathname is canonical */ + cmd->path = os_canonical_filename(cmd->pool, cmd->path); } errmsg = srm_command_loop (cmd, new_dir_conf); @@ -881,16 +895,21 @@ if (cmd->info) { /* */ if (old_path && cmd->path[0] != '/' && cmd->path[0] != '^') cmd->path = pstrcat(cmd->pool, "^", old_path, cmd->path, NULL); -r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED); +r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED|USE_ICASE); } else if (!strcmp(cmd->path, "~")) { cmd->path = getword_conf (cmd->pool, &arg); if (old_path && cmd->path[0] != '/' && cmd->path[0] != '^') cmd->path = pstrcat(cmd->pool, "^", old_path, cmd->path, NULL); - r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED); + r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED|USE_ICASE); +} +else { + if (old_path && cmd->path[0] != '/') + cmd->path = pstrcat(cmd->pool, old_path, cmd->path, NULL); + + /* Ensure that the pathname is canonical */ + cmd->path = os_canonical_filename(cmd->pool, cmd->path); } -else if (old_path && cmd->path[0] != '/') - cmd->path = pstrcat(cmd->pool, old_path, cmd->path, NULL); errmsg = srm_command_loop (cmd, new_file_conf); if (errmsg != end_file_magic) return errmsg;
cvs commit: apachen/src/main conf.h
akosut 97/09/09 11:36:59 Modified:src CHANGES src/main conf.h Log: Have Windows do full status reports with mod_status. PR: 1094 Reviewed by: Ben Laurie Revision ChangesPath 1.431 +3 -0 apachen/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apachen/src/CHANGES,v retrieving revision 1.430 retrieving revision 1.431 diff -u -u -r1.430 -r1.431 --- CHANGES 1997/09/09 11:06:55 1.430 +++ CHANGES 1997/09/09 18:36:53 1.431 @@ -1,5 +1,8 @@ Changes with Apache 1.3b1 + *) Windows now defaults to using full status reports with mod_status. + [Alexei Kosut, PR #1094] + *) *Really* disable all mod_rewrite operations if the engine is off. Some things (like RewriteMaps) were checked/performed even if they weren't supposed to be. [Ken Coar, PR #991] 1.131 +1 -0 apachen/src/main/conf.h Index: conf.h === RCS file: /export/home/cvs/apachen/src/main/conf.h,v retrieving revision 1.130 retrieving revision 1.131 diff -u -u -r1.130 -r1.131 --- conf.h1997/08/28 01:36:59 1.130 +++ conf.h1997/09/09 18:36:58 1.131 @@ -630,6 +630,7 @@ chdir() */ #include +#define STATUS #define WIN32_LEAN_AND_MEAN #define STRICT #define NO_UNISTD_H
cvs commit: apachen/src CHANGES
akosut 97/08/27 18:38:51 Modified:src CHANGES Log: Update CHANGES file to reflect BeOS port. Revision ChangesPath 1.424 +2 -0 apachen/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apachen/src/CHANGES,v retrieving revision 1.423 retrieving revision 1.424 diff -u -u -r1.423 -r1.424 --- CHANGES 1997/08/27 05:45:14 1.423 +++ CHANGES 1997/08/28 01:38:48 1.424 @@ -1,5 +1,7 @@ Changes with Apache 1.3a2 + *) PORT: BeOS support added [Alexei Kosut] + *) Configure no longer accepts the -make option, since it creates Makefile on the fly based on Makefile.tmpl and Configuration.
cvs commit: apachen/src/main conf.h http_main.c util.c
akosut 97/08/27 18:37:03 Modified:src Configure src/main conf.h http_main.c util.c Log: Add initial (not-quite-tested) support for the BeOS. Revision ChangesPath 1.144 +5 -0 apachen/src/Configure Index: Configure === RCS file: /export/home/cvs/apachen/src/Configure,v retrieving revision 1.143 retrieving revision 1.144 diff -u -u -r1.143 -r1.144 --- Configure 1997/08/27 01:12:19 1.143 +++ Configure 1997/08/28 01:36:57 1.144 @@ -480,6 +480,11 @@ MAKE="make" DEF_WANTHSREGEX=yes ;; +*-BeOS*) + OS='BeOS'; + CFLAGS="$CFLAGS -DBEOS" + DEF_WANTHSREGEX=yes + ;; *) # default: Catch systems we don't know about echo Sorry, but we cannot grok \"$PLAT\" echo uname -m 1.130 +16 -2 apachen/src/main/conf.h Index: conf.h === RCS file: /export/home/cvs/apachen/src/main/conf.h,v retrieving revision 1.129 retrieving revision 1.130 diff -u -u -r1.129 -r1.130 --- conf.h1997/08/27 14:22:06 1.129 +++ conf.h1997/08/28 01:36:59 1.130 @@ -605,6 +605,20 @@ #define NEED_STRNCASECMP #define NEED_STRDUP +#elif defined(BEOS) +#include + +#define JMP_BUF sigjmp_buf +#define NO_WRITEV +#define NO_KILLPG +#define NEED_INITGROUPS + +/* BeOS doesn't have a couple signals... redefine to close ones*/ +#define SIGBUS SIGSEGV +#define SIGURG SIGPIPE + +#define isascii(c) (!((c) & ~0177)) + #elif defined(WIN32) /* Put your NT stuff here - Ambarish */ @@ -756,9 +770,9 @@ #include #include #include -#ifndef MPE +#if !defined(MPE) && !defined(BEOS) #include /* for inet_ntoa */ -#endif /* ndef MPE */ +#endif #include #include #include 1.212 +7 -2 apachen/src/main/http_main.c Index: http_main.c === RCS file: /export/home/cvs/apachen/src/main/http_main.c,v retrieving revision 1.211 retrieving revision 1.212 diff -u -u -r1.211 -r1.212 --- http_main.c 1997/08/28 00:56:41 1.211 +++ http_main.c 1997/08/28 01:36:59 1.212 @@ -98,7 +98,7 @@ #endif #ifdef WIN32 #include "../os/win32/getopt.h" -#else +#elif !defined(BEOS) #include #endif @@ -1947,7 +1947,7 @@ name = ent->pw_name; } else name = user_name; -#ifndef __EMX__ +#ifndef __EMX__ /* OS/2 dosen't support groups. */ /* Reset `groups' attributes. */ @@ -2307,11 +2307,14 @@ exit(1); } one = 1; +#ifndef BEOS +/* BeOS does not support SO_KEEPALIVE */ if (setsockopt(s, SOL_SOCKET,SO_KEEPALIVE,(char *)&one,sizeof(int)) < 0) { log_unixerr("setsockopt", "(SO_KEEPALIVE)", NULL, server_conf); exit(1); } #endif +#endif sock_disable_nagle(s); sock_enable_linger(s); @@ -2335,6 +2338,7 @@ * * If no size is specified, use the kernel default. */ +#ifndef BEOS /* BeOS does not support SO_SNDBUF */ if (server_conf->send_buffer_size) { if (setsockopt(s, SOL_SOCKET, SO_SNDBUF, (char *)&server_conf->send_buffer_size, sizeof(int)) < 0) { @@ -2344,6 +2348,7 @@ /* not a fatal error */ } } +#endif #ifdef MPE /* MPE requires CAP=PM and GETPRIVMODE to bind to ports less than 1024 */ 1.68 +2 -2 apachen/src/main/util.c Index: util.c === RCS file: /export/home/cvs/apachen/src/main/util.c,v retrieving revision 1.67 retrieving revision 1.68 diff -u -u -r1.67 -r1.68 --- util.c1997/07/27 03:13:31 1.67 +++ util.c1997/08/28 01:37:00 1.68 @@ -1079,8 +1079,8 @@ #ifdef NEED_INITGROUPS int initgroups(const char *name, gid_t basegid) { -#if defined(QNX) || defined(MPE) -/* QNX and MPE do not appear to support supplementary groups. */ +#if defined(QNX) || defined(MPE) || defined(BEOS) +/* QNX, MPE and BeOS do not appear to support supplementary groups. */ return 0; #else /* ndef QNX */ gid_t groups[NGROUPS_MAX];
cvs commit: apachen/src/main http_main.c
akosut 97/08/27 17:56:45 Modified:src/main http_main.c Log: Dean's new timer scheme (http_main.c revision 1.202) seems to have broken non-shared memory-based systems, by accidentally removing a #define. Put it back. Revision ChangesPath 1.211 +1 -0 apachen/src/main/http_main.c Index: http_main.c === RCS file: /export/home/cvs/apachen/src/main/http_main.c,v retrieving revision 1.210 retrieving revision 1.211 diff -u -u -r1.210 -r1.211 --- http_main.c 1997/08/26 00:00:55 1.210 +++ http_main.c 1997/08/28 00:56:41 1.211 @@ -1301,6 +1301,7 @@ } #else +#define SCOREBOARD_FILE static scoreboard _scoreboard_image; static int scoreboard_fd;
cvs commit: apachen/src/main http_config.c http_main.c
akosut 97/08/25 17:00:57 Modified:src CHANGES src/main http_config.c http_main.c Log: Update sig_term to shutdown gracefully when a SIGTERM is received. Reviewed by: Dean Gaudet, Randy Terbush Revision ChangesPath 1.421 +4 -0 apachen/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apachen/src/CHANGES,v retrieving revision 1.420 retrieving revision 1.421 diff -u -u -r1.420 -r1.421 --- CHANGES 1997/08/25 16:02:21 1.420 +++ CHANGES 1997/08/26 00:00:50 1.421 @@ -1,5 +1,9 @@ Changes with Apache 1.3a2 + *) Apache now gracefully shuts down when it receives a SIGTERM, instead + of forcibly killing off all its processes and exiting without + cleaning up. [Alexei Kosut] + *) API: A new field in the request_rec, r->mtime, has been added to avoid gratuitous parsing of date strings. It is intended to hold the last-modified date of the resource (if applicable). An 1.76 +0 -1 apachen/src/main/http_config.c Index: http_config.c === RCS file: /export/home/cvs/apachen/src/main/http_config.c,v retrieving revision 1.75 retrieving revision 1.76 diff -u -u -r1.75 -r1.76 --- http_config.c 1997/08/25 02:26:57 1.75 +++ http_config.c 1997/08/26 00:00:54 1.76 @@ -1293,7 +1293,6 @@ if (m->child_exit) (*m->child_exit) (s, p); -exit(0); } / 1.210 +48 -18apachen/src/main/http_main.c Index: http_main.c === RCS file: /export/home/cvs/apachen/src/main/http_main.c,v retrieving revision 1.209 retrieving revision 1.210 diff -u -u -r1.209 -r1.210 --- http_main.c 1997/08/24 18:41:29 1.209 +++ http_main.c 1997/08/26 00:00:55 1.210 @@ -746,6 +746,8 @@ if (alarms_blocked == 0) { if (exit_after_unblock) { child_exit_modules(pconf, server_conf); + destroy_pool(pconf); + exit(0); } if (alarm_pending) { alarm_pending = 0; @@ -1591,7 +1593,7 @@ return -1; } -static void reclaim_child_processes (void) +static void reclaim_child_processes (int start_tries) { #ifndef MULTITHREAD int i, status; @@ -1602,7 +1604,7 @@ if (pid != my_pid && pid != 0) { int waitret = 0, - tries = 1; + tries = start_tries; while (waitret == 0 && tries <= 4) { long int waittime = 4096; /* in usecs */ @@ -1745,17 +1747,6 @@ } -void sig_term(int sig) { -log_error("httpd: caught SIGTERM, shutting down", server_conf); -cleanup_scoreboard(); -accept_mutex_cleanup(); -#ifdef SIGKILL -ap_killpg (pgrp, SIGKILL); -#endif /* SIGKILL */ -close(sd); -exit(1); -} - void bus_error(int sig) { char emsg[256]; @@ -1790,6 +1781,8 @@ exit_after_unblock = 1; } else { child_exit_modules(pconf, server_conf); + destroy_pool(pconf); + exit(0); } } @@ -1805,10 +1798,15 @@ } /* volatile just in case */ +static int volatile shutdown_pending; static int volatile restart_pending; static int volatile is_graceful; static int volatile generation; +static void sig_term(int sig) { +shutdown_pending = 1; +} + static void restart (int sig) { #ifdef WIN32 @@ -2642,13 +2640,18 @@ clear_pool (ptrans); sync_scoreboard_image(); - if (scoreboard_image->global.exit_generation >= generation) + if (scoreboard_image->global.exit_generation >= generation) { child_exit_modules(pconf, server_conf); + destroy_pool(pconf); + exit(0); + } if ((max_requests_per_child > 0 && ++requests_this_child >= max_requests_per_child)) { child_exit_modules(pconf, server_conf); + destroy_pool(pconf); + exit(0); } (void)update_child_status(my_child_num, SERVER_READY, (request_rec*)NULL); @@ -2692,6 +2695,8 @@ if (deferred_die) { /* we didn't get a socket, and we were told to die */ child_exit_modules(pconf, server_conf); + destroy_pool(pconf); + exit(0); } } @@ -2714,13 +2719,18 @@ if (deferred_die) { /* ok maybe not, see ya later */ child_exit_modules(pconf, server_conf); + destroy_pool(pconf); +
cvs commit: apache/src util_script.c
akosut 97/08/04 14:10:17 Modified:src util_script.c Log: Correctly set PATH_TRANSLATED to a Windows filename when running under Windows. Revision ChangesPath 1.68 +12 -4 apache/src/util_script.c Index: util_script.c === RCS file: /export/home/cvs/apache/src/util_script.c,v retrieving revision 1.67 retrieving revision 1.68 diff -u -r1.67 -r1.68 --- util_script.c 1997/07/24 04:24:00 1.67 +++ util_script.c 1997/08/04 21:10:16 1.68 @@ -305,10 +305,18 @@ * is pointing to an object which doesn't exist. */ - if (pa_req->filename) - table_set (e, "PATH_TRANSLATED", -pstrcat (r->pool, pa_req->filename, pa_req->path_info, - NULL)); + if (pa_req->filename) { + char buffer[HUGE_STRING_LEN]; + char *pt = pstrcat (r->pool, pa_req->filename, pa_req->path_info, + NULL); +#ifdef WIN32 + /* We need to make this a real Windows path name */ + GetFullPathName(pt, HUGE_STRING_LEN, buffer, NULL); + table_set (e, "PATH_TRANSLATED", pstrdup(r->pool, buffer)); +#else + table_set (e, "PATH_TRANSLATED", pt); +#endif + } } }
cvs commit: apache-site index.html
akosut 97/07/23 13:40:22 Modified:. index.html Log: Add Apache 1.3a1 blurb Revision ChangesPath 1.29 +25 -0 apache-site/index.html Index: index.html === RCS file: /export/home/cvs/apache-site/index.html,v retrieving revision 1.28 retrieving revision 1.29 diff -c -u -r1.28 -r1.29 /usr/bin/diff: conflicting specifications of output style --- index.html1997/07/19 15:59:50 1.28 +++ index.html1997/07/23 20:40:20 1.29 @@ -77,6 +77,31 @@ +Apache 1.3a1 - Microsoft Windows Support + + + +Apache 1.3a1 is a public alpha of the forthcoming Apache 1.3, an update +which includes several new enhancements, including the ability to run +under Microsoft Windows NT and 95. This is an alpha release, and is for +experimental purposes; use at your own risk. It is available in source +format only, so a compiler is neccessary to use it (Microsoft Visual C++ +5.0 for Windows). + +If you are not familiar with software development, and wish to use +a stable, working, web server, we strongly reccomend you download +Apache 1.2.1 instead. Please report any bugs you +find. + + + + +Download Apache 1.3a1 | +Apache for Windows | +New Features in Apache 1.3 + + + Important Information about Java and HTTP/1.1 There are known problems with older versions of the Java
cvs commit: apache/src Makefile.nt
akosut 97/07/23 13:09:49 Modified:src Makefile.nt Log: Oops... forgot to change a little bit of Makefile.nt Revision ChangesPath 1.9 +2 -2 apache/src/Makefile.nt Index: Makefile.nt === RCS file: /export/home/cvs/apache/src/Makefile.nt,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- Makefile.nt 1997/07/21 23:05:28 1.8 +++ Makefile.nt 1997/07/23 20:09:49 1.9 @@ -34,7 +34,7 @@ cd nt & set CFG=ApacheModuleUserTrack - Win32 Debug& nmake /nologo -f ApacheModuleUserTrack.mak cd modules\proxy & set CFG=ApacheModuleProxy - Win32 Debug& nmake /nologo -f ApacheModuleProxy.mak -installr: release +installr: apacher -mkdir \Apache -mkdir \Apache\modules -mkdir \Apache\logs @@ -51,7 +51,7 @@ copy nt\ApacheModuleUserTrackR\ApacheModuleUserTrack.dll \Apache\modules copy modules\proxy\Release\ApacheModuleProxy.dll \Apache\modules -installd: debug +installd: apached -mkdir \Apache -mkdir \Apache\modules -mkdir \Apache\logs
cvs commit: apache-site 404.html
akosut 97/07/23 12:24:31 Modified:. 404.html Log: Add Apache background colors to not found error message. Revision ChangesPath 1.2 +9 -3 apache-site/404.html Index: 404.html === RCS file: /export/home/cvs/apache-site/404.html,v retrieving revision 1.1 retrieving revision 1.2 diff -c -u -r1.1 -r1.2 /usr/bin/diff: conflicting specifications of output style --- 404.html 1997/03/25 04:43:15 1.1 +++ 404.html 1997/07/23 19:24:31 1.2 @@ -4,9 +4,15 @@ File not found! - - - + + File not found
cvs commit: apache/src httpd.h
akosut 97/07/22 17:09:04 Modified:src httpd.h Log: Set version to 1.3a2-dev... continue development Revision ChangesPath 1.132 +1 -1 apache/src/httpd.h Index: httpd.h === RCS file: /export/home/cvs/apache/src/httpd.h,v retrieving revision 1.131 retrieving revision 1.132 diff -c -u -r1.131 -r1.132 /usr/bin/diff: conflicting specifications of output style --- httpd.h 1997/07/23 00:06:06 1.131 +++ httpd.h 1997/07/23 00:09:02 1.132 @@ -288,7 +288,7 @@ * Example: "Apache/1.1.0 MrWidget/0.1-alpha" */ -#define SERVER_BASEVERSION "Apache/1.3a1" /* SEE COMMENTS ABOVE */ +#define SERVER_BASEVERSION "Apache/1.3a2-dev" /* SEE COMMENTS ABOVE */ #ifdef SERVER_SUBVERSION #define SERVER_VERSION SERVER_BASEVERSION " " SERVER_SUBVERSION #else
cvs commit: apache/src CHANGES httpd.h
akosut 97/07/22 17:06:08 Modified:. README src CHANGES httpd.h Log: Prep for 1.3a1 Revision ChangesPath 1.10 +5 -1 apache/README Index: README === RCS file: /export/home/cvs/apache/README,v retrieving revision 1.9 retrieving revision 1.10 diff -c -u -r1.9 -r1.10 /usr/bin/diff: conflicting specifications of output style --- README1997/06/16 06:00:15 1.9 +++ README1997/07/23 00:06:02 1.10 @@ -1,5 +1,5 @@ Apache - Version 1.2 (and up) + Version 1.3 (and up) What is it? --- @@ -19,6 +19,10 @@ Installation + +NOTE: Windows users please see http://www.apache.org/docs/windows.html, + or the htdocs/manual/windows.html file included with Apache. The + following applies only to Unix users. Unless you grabbed a binary distribution of Apache, you must compile it for your specific platform. In order to compile it, you must set 1.360 +1 -1 apache/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.359 retrieving revision 1.360 diff -c -u -r1.359 -r1.360 /usr/bin/diff: conflicting specifications of output style --- CHANGES 1997/07/21 19:40:12 1.359 +++ CHANGES 1997/07/23 00:06:05 1.360 @@ -1,4 +1,4 @@ -Changes with Apache 1.3 +Changes with Apache 1.3a1 *) Added another Configure helper script: TestLib. It determines if a specified library exists. 1.131 +1 -1 apache/src/httpd.h Index: httpd.h === RCS file: /export/home/cvs/apache/src/httpd.h,v retrieving revision 1.130 retrieving revision 1.131 diff -c -u -r1.130 -r1.131 /usr/bin/diff: conflicting specifications of output style --- httpd.h 1997/07/21 05:53:46 1.130 +++ httpd.h 1997/07/23 00:06:06 1.131 @@ -288,7 +288,7 @@ * Example: "Apache/1.1.0 MrWidget/0.1-alpha" */ -#define SERVER_BASEVERSION "Apache/1.3-dev" /* SEE COMMENTS ABOVE */ +#define SERVER_BASEVERSION "Apache/1.3a1" /* SEE COMMENTS ABOVE */ #ifdef SERVER_SUBVERSION #define SERVER_VERSION SERVER_BASEVERSION " " SERVER_SUBVERSION #else
cvs commit: apache/src http_config.c
akosut 97/07/22 17:00:05 Modified:src http_config.c Log: Oops... fix off-by-one error. Revision ChangesPath 1.64 +2 -2 apache/src/http_config.c Index: http_config.c === RCS file: /export/home/cvs/apache/src/http_config.c,v retrieving revision 1.63 retrieving revision 1.64 diff -u -r1.63 -r1.64 --- http_config.c 1997/07/22 23:51:58 1.63 +++ http_config.c 1997/07/23 00:00:04 1.64 @@ -473,8 +473,8 @@ * components (Unix and DOS), and remove them. */ -if (strrchr(m->name, '/')) m->name = strrchr(m->name, '/'); -if (strrchr(m->name, '\\')) m->name = strrchr(m->name, '\\'); +if (strrchr(m->name, '/')) m->name = 1 + strrchr(m->name, '/'); +if (strrchr(m->name, '\\')) m->name = 1 + strrchr(m->name, '\\'); /** XXX: this will be slow if there's lots of add_modules */ build_method_shortcuts ();
cvs commit: apache/src http_config.c http_main.c
akosut 97/07/22 16:52:01 Modified:src http_config.c http_main.c Log: Work around compilers (like MSVC++) that don't do what we want with __FILE__. Revision ChangesPath 1.63 +8 -0 apache/src/http_config.c Index: http_config.c === RCS file: /export/home/cvs/apache/src/http_config.c,v retrieving revision 1.62 retrieving revision 1.63 diff -c -u -r1.62 -r1.63 /usr/bin/diff: conflicting specifications of output style --- http_config.c 1997/07/21 05:53:41 1.62 +++ http_config.c 1997/07/22 23:51:58 1.63 @@ -467,6 +467,14 @@ if (m->module_index == -1) { m->module_index = total_modules++; } + +/* Some C compilers put a complete path into __FILE__, but we want + * only the filename (e.g. mod_includes.c). So check for path + * components (Unix and DOS), and remove them. + */ + +if (strrchr(m->name, '/')) m->name = strrchr(m->name, '/'); +if (strrchr(m->name, '\\')) m->name = strrchr(m->name, '\\'); /** XXX: this will be slow if there's lots of add_modules */ build_method_shortcuts (); 1.185 +4 -3 apache/src/http_main.c Index: http_main.c === RCS file: /export/home/cvs/apache/src/http_main.c,v retrieving revision 1.184 retrieving revision 1.185 diff -c -u -r1.184 -r1.185 /usr/bin/diff: conflicting specifications of output style --- http_main.c 1997/07/21 05:53:45 1.184 +++ http_main.c 1997/07/22 23:51:58 1.185 @@ -2695,6 +2695,8 @@ strncpy (server_confname, SERVER_CONFIG_FILE, sizeof(server_root)-1); server_confname[sizeof(server_confname)-1] = '\0'; +setup_prelinked_modules(); + while((c = getopt(argc,argv,"Xd:f:vhl")) != -1) { switch(c) { case 'd': @@ -2727,8 +2729,6 @@ printf("OS/2 port by Garey Smiley <[EMAIL PROTECTED]> \n"); #endif -setup_prelinked_modules(); - suexec_enabled = init_suexec(); server_conf = read_config (pconf, ptrans, server_confname); init_modules (pconf, server_conf); @@ -3526,6 +3526,8 @@ strncpy (server_confname, SERVER_CONFIG_FILE, sizeof(server_root)-1); server_confname[sizeof(server_confname)-1] = '\0'; +setup_prelinked_modules(); + while((c = getopt(argc,argv,"Xd:f:vhlc:ius")) != -1) { switch(c) { #ifdef WIN32 @@ -3587,7 +3589,6 @@ { service_cd(); } -setup_prelinked_modules(); server_conf = read_config (pconf, ptrans, server_confname); init_modules (pconf, server_conf);
cvs commit: apache/htdocs/manual/misc descriptors.html
akosut 97/07/22 15:39:31 Modified:htdocs/manual/misc descriptors.html Log: Fix HTML mistake Revision ChangesPath 1.6 +1 -1 apache/htdocs/manual/misc/descriptors.html Index: descriptors.html === RCS file: /export/home/cvs/apache/htdocs/manual/misc/descriptors.html,v retrieving revision 1.5 retrieving revision 1.6 diff -c -u -r1.5 -r1.6 /usr/bin/diff: conflicting specifications of output style --- descriptors.html 1997/07/19 09:30:45 1.5 +++ descriptors.html 1997/07/22 22:39:31 1.6 @@ -109,7 +109,7 @@ 240 error logs if you do this. -AIX STRONG> +AIX AIX version 3.2?? appears to have a hard limit of 128 descriptors. End of story. Version 4.1.5 has a hard limit of 2000.
cvs commit: apache/htdocs/manual windows.html
akosut 97/07/22 15:33:15 Modified:conf httpd.conf-dist-win htdocs/manual windows.html Log: Change ThreadsPerChild config default from 20 to 50 to match compiled-in default. Revision ChangesPath 1.4 +1 -1 apache/conf/httpd.conf-dist-win Index: httpd.conf-dist-win === RCS file: /export/home/cvs/apache/conf/httpd.conf-dist-win,v retrieving revision 1.3 retrieving revision 1.4 diff -c -u -r1.3 -r1.4 /usr/bin/diff: conflicting specifications of output style --- httpd.conf-dist-win 1997/07/22 22:31:36 1.3 +++ httpd.conf-dist-win 1997/07/22 22:33:11 1.4 @@ -125,7 +125,7 @@ # depending on the responsiveness you want and the resources you wish # this server to consume). -ThreadsPerChild 20 +ThreadsPerChild 50 # Proxy Server directives. Uncomment the following line to 1.4 +1 -1 apache/htdocs/manual/windows.html Index: windows.html === RCS file: /export/home/cvs/apache/htdocs/manual/windows.html,v retrieving revision 1.3 retrieving revision 1.4 diff -c -u -r1.3 -r1.4 /usr/bin/diff: conflicting specifications of output style --- windows.html 1997/07/22 20:47:38 1.3 +++ windows.html 1997/07/22 22:33:14 1.4 @@ -178,7 +178,7 @@ should use. This is the maximum number of connections the server can handle at once; be sure and set this number high enough for your site if you get a lot of hits. The recommended default is - ThreadsPerChild 20. + ThreadsPerChild 50. The directives that accept filenames as arguments now must use Windows filenames instead of Unix ones. However, because Apache uses Unix-style names internally, you must use forward slashes, not
cvs commit: apache/conf access.conf-dist-win httpd.conf-dist-win srm.conf-dist-win
akosut 97/07/22 15:31:38 Modified:conf access.conf-dist-win httpd.conf-dist-win srm.conf-dist-win Log: Debinary the Windows config files to match new release plan Revision ChangesPath 1.2 +75 -75apache/conf/access.conf-dist-win Index: access.conf-dist-win === RCS file: /export/home/cvs/apache/conf/access.conf-dist-win,v retrieving revision 1.1 retrieving revision 1.2 diff -c -u -r1.1 -r1.2 /usr/bin/diff: conflicting specifications of output style --- access.conf-dist-win 1997/07/14 19:21:42 1.1 +++ access.conf-dist-win 1997/07/22 22:31:36 1.2 @@ -1,75 +1,75 @@ -# access.conf: Global access configuration -# Online docs at http://www.apache.org/ - -# This file defines server settings which affect which types of services -# are allowed, and in what circumstances. - -# Each directory to which Apache has access, can be configured with respect -# to which services and features are allowed and/or disabled in that -# directory (and its subdirectories). - -# Note: Where filenames are specified, you must use forward slashes -# instead of backslashes. e.g. "c:/apache" instead of "c:\apache". If -# the drive letter is ommited, the drive where Apache.exe is located -# will be assumed - -# Originally by Rob McCool - -# This should be changed to whatever you set DocumentRoot to. - - - -# This may also be "None", "All", or any combination of "Indexes", -# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews". - -# Note that "MultiViews" must be named *explicitly* --- "Options All" -# doesn't give it to you (or at least, not yet). - -Options Indexes FollowSymLinks - -# This controls which options the .htaccess files in directories can -# override. Can also be "All", or any combination of "Options", "FileInfo", -# "AuthConfig", and "Limit" - -AllowOverride None - -# Controls who can get stuff from this server. - -order allow,deny -allow from all - - - -# /apache/cgi-bin should be changed to whatever your ScriptAliased -# CGI directory exists, if you have that configured. - - -AllowOverride None -Options None - - -# Allow server status reports, with the URL of http://servername/server-status -# Change the ".your_domain.com" to match your domain to enable. - -# -#SetHandler server-status - -#order deny,allow -#deny from all -#allow from .your_domain.com -# - -# There have been reports of people trying to abuse an old bug from pre-1.1 -# days. This bug involved a CGI script distributed as a part of Apache. -# By uncommenting these lines you can redirect these attacks to a logging -# script on phf.apache.org. Or, you can record them yourself, using the script -# support/phf_abuse_log.cgi. - -# -#deny from all -#ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi -# - -# You may place any other directories or locations you wish to have -# access information for after this one. - +# access.conf: Global access configuration +# Online docs at http://www.apache.org/ + +# This file defines server settings which affect which types of services +# are allowed, and in what circumstances. + +# Each directory to which Apache has access, can be configured with respect +# to which services and features are allowed and/or disabled in that +# directory (and its subdirectories). + +# Note: Where filenames are specified, you must use forward slashes +# instead of backslashes. e.g. "c:/apache" instead of "c:\apache". If +# the drive letter is ommited, the drive where Apache.exe is located +# will be assumed + +# Originally by Rob McCool + +# This should be changed to whatever you set DocumentRoot to. + + + +# This may also be "None", "All", or any combination of "Indexes", +# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews". + +# Note that "MultiViews" must be named *explicitly* --- "Options All" +# doesn't give it to you (or at least, not yet). + +Options Indexes FollowSymLinks + +# This controls which options the .htaccess files in directories can +# override. Can also be "All", or any combination of "Options", "FileInfo", +# "AuthConfig", and "Limit" + +AllowOverride None + +# Controls who can get stuff from this server. + +order allow,deny +allow from all + + + +# /apache/cgi-bin should be changed to whatever your ScriptAliased +# CGI directory exists, if you have that configured. + + +AllowOverride None +Options None + + +# Allow server status reports, with the URL of http://servername/server-status +# Change the ".your_domain.com" to match your domain to enable. + +# +#SetHandler server-status + +#order deny,allow +#deny from all +#allow from .your_domain.com +# + +# There h
cvs commit: apache/htdocs/manual/misc known_bugs.html
akosut 97/07/22 15:27:27 Modified:htdocs/manual/misc known_bugs.html Log: Add some known bugs for 1.3a1 Revision ChangesPath 1.26 +12 -0 apache/htdocs/manual/misc/known_bugs.html Index: known_bugs.html === RCS file: /export/home/cvs/apache/htdocs/manual/misc/known_bugs.html,v retrieving revision 1.25 retrieving revision 1.26 diff -c -u -r1.25 -r1.26 /usr/bin/diff: conflicting specifications of output style --- known_bugs.html 1997/07/19 18:32:23 1.25 +++ known_bugs.html 1997/07/22 22:27:26 1.26 @@ -25,6 +25,18 @@ See Also: Compatibility notes +Apache 1.3a1 Bugs + + + The Listen + directive does not work when running under Windows. + For some reason, mod_isapi + does not work (with Windows) when compiled using the + Release setting; it will crash the server whenever you + access an ISA DLL. It works fine when the server is compiled with + Debug. + + Apache 1.2 Bugs
cvs commit: apache/htdocs/manual/mod mod_isapi.html index.html
akosut 97/07/22 13:47:42 Modified:htdocs/manual windows.html htdocs/manual/mod index.html Added: htdocs/manual/mod mod_isapi.html Log: Add docs for mod_isapi Revision ChangesPath 1.3 +5 -1 apache/htdocs/manual/windows.html Index: windows.html === RCS file: /export/home/cvs/apache/htdocs/manual/windows.html,v retrieving revision 1.2 retrieving revision 1.3 diff -c -u -r1.2 -r1.3 /usr/bin/diff: conflicting specifications of output style --- windows.html 1997/07/21 23:05:26 1.2 +++ windows.html 1997/07/22 20:47:38 1.3 @@ -153,7 +153,7 @@ Configuring Apache is nearly identical to the Unix version of Apache, so most of the standard Apache documentation is - applicable. A few things are, however, different: + applicable. A few things are, however, different, or new: Because Apache for Windows is multithreaded, it does not use a @@ -197,6 +197,10 @@ Information on creating module DLLs is also available. + Apache can also load ISAPI Extensions (i.e., Internet Server + Applications), such as those used by Microsoft's IIS, and other + Windows servers. More information + is available. Once Apache is configured correctly, it is nearly ready to be 1.18 +2 -0 apache/htdocs/manual/mod/index.html Index: index.html === RCS file: /export/home/cvs/apache/htdocs/manual/mod/index.html,v retrieving revision 1.17 retrieving revision 1.18 diff -c -u -r1.17 -r1.18 /usr/bin/diff: conflicting specifications of output style --- index.html1997/07/21 21:26:56 1.17 +++ index.html1997/07/22 20:47:40 1.18 @@ -77,6 +77,8 @@ Server-parsed documents. mod_info Server configuration information +mod_isapi +Windows ISAPI Extension support mod_log_agent Logging of User Agents. mod_log_common up to Apache 1.1.1 1.1 apache/htdocs/manual/mod/mod_isapi.html Index: mod_isapi.html === Apache module mod_isapi Module mod_isapi This module is contained in the mod_isapi.c file, and is compiled in by default. It provides support for ISAPI Extensions when running under Microsoft Windows. Any document with a handler of isapi-isa will be processed by this module. Purpose This module implements the http://www.microsoft.com/win32dev/apiext/isapimrg.htm";>ISAPI Extension API. It allows Internet Server Applications (i.e., ISAPI Extensions) to be used with Apache for Windows. Usage In the server configuration file, add a handler called isapi-isa, and map it to files with a .DLL extension. In other words: AddHandler isapi-isa dll Now simply place the ISA DLLs into your document root, and they will be loaded when their URLs are accessed. ISAPI Extensions are governed by the same restrictions as CGI scripts. That is, Options ExecCGI must be active in the directory that contains the ISA. Notes Apache's ISAPI implementation conforms to all of the ISAPI 2.0 specification, except for the "Microsoft-specific" extensions dealing with ascynchronous I/O. Apache's I/O model does not allow asynchronous reading and writing in a manner that the ISAPI could access. If an ISA tries to access async I/O, a message will be place in the error log, to help with debugging. Some servers, like Microsoft IIS, load the ISA into the server, and keep it loaded until memory usage is too high, and it is unloaded. Apache currently loads and unloads the ISA for each request. This is inefficient, but Apache's request model makes this method the only method that currently works. A future release may use a more effective loading method. Apache 1.3a1 currently limits POST and PUT input to 48k per request. This is to work around a problem with the ISAPI implementation that could result in a denial of service attack. It is expected that support for larger uploads will be added soon. Also, remember that while Apache supports ISAPI Extensions, it does not support ISAPI Filters. Support for filters may be added at a later date, but no support is planned at this time.
cvs commit: apache/src/nt mod_isapi.c modules.c
uot; : $(SOURCE)\ @@ -1567,6 +1740,11 @@ ".\httpd.h"\ ".\nt\readdir.h"\ ".\regex\regex.h"\ + {$(INCLUDE)}"sys\stat.h"\ + {$(INCLUDE)}"sys\types.h"\ + +NODEP_CPP_MOD_U=\ + ".\sfio.h"\ "$(INTDIR)\mod_userdir.obj" "$(INTDIR)\mod_userdir.sbr" : $(SOURCE)\ @@ -1603,6 +1781,11 @@ ".\httpd.h"\ ".\nt\readdir.h"\ ".\regex\regex.h"\ + {$(INCLUDE)}"sys\stat.h"\ + {$(INCLUDE)}"sys\types.h"\ + +NODEP_CPP_MODUL=\ + ".\sfio.h"\ "$(INTDIR)\modules.obj" "$(INTDIR)\modules.sbr" : $(SOURCE) $(DEP_CPP_MODUL)\ @@ -1632,6 +1815,8 @@ ".\conf.h"\ ".\multithread.h"\ ".\regex\regex.h"\ + {$(INCLUDE)}"sys\stat.h"\ + {$(INCLUDE)}"sys\types.h"\ "$(INTDIR)\multithread.obj" "$(INTDIR)\multithread.sbr" : $(SOURCE)\ @@ -1642,12 +1827,12 @@ !ENDIF SOURCE=.\nt\readdir.c -DEP_CPP_READD=\ - ".\nt\readdir.h"\ - !IF "$(CFG)" == "ApacheCore - Win32 Release" +DEP_CPP_READD=\ + ".\nt\readdir.h"\ + "$(INTDIR)\readdir.obj" : $(SOURCE) $(DEP_CPP_READD) "$(INTDIR)" $(CPP) $(CPP_PROJ) $(SOURCE) @@ -1655,6 +1840,10 @@ !ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug" +DEP_CPP_READD=\ + ".\nt\readdir.h"\ + {$(INCLUDE)}"sys\types.h"\ + "$(INTDIR)\readdir.obj" "$(INTDIR)\readdir.sbr" : $(SOURCE) $(DEP_CPP_READD)\ "$(INTDIR)" @@ -1694,6 +1883,11 @@ ".\nt\readdir.h"\ ".\regex\regex.h"\ ".\rfc1413.h"\ + {$(INCLUDE)}"sys\stat.h"\ + {$(INCLUDE)}"sys\types.h"\ + +NODEP_CPP_RFC14=\ + ".\sfio.h"\ "$(INTDIR)\rfc1413.obj" "$(INTDIR)\rfc1413.sbr" : $(SOURCE) $(DEP_CPP_RFC14)\ @@ -1724,6 +1918,8 @@ ".\multithread.h"\ ".\nt\service.h"\ ".\regex\regex.h"\ + {$(INCLUDE)}"sys\stat.h"\ + {$(INCLUDE)}"sys\types.h"\ "$(INTDIR)\service.obj" "$(INTDIR)\service.sbr" : $(SOURCE) $(DEP_CPP_SERVI)\ @@ -1760,6 +1956,11 @@ ".\httpd.h"\ ".\nt\readdir.h"\ ".\regex\regex.h"\ + {$(INCLUDE)}"sys\stat.h"\ + {$(INCLUDE)}"sys\types.h"\ + +NODEP_CPP_UTIL_=\ + ".\sfio.h"\ "$(INTDIR)\util.obj" "$(INTDIR)\util.sbr" : $(SOURCE) $(DEP_CPP_UTIL_)\ @@ -1787,6 +1988,8 @@ ".\conf.h"\ ".\regex\regex.h"\ ".\util_date.h"\ + {$(INCLUDE)}"sys\stat.h"\ + {$(INCLUDE)}"sys\types.h"\ "$(INTDIR)\util_date.obj""$(INTDIR)\util_date.sbr" : $(SOURCE)\ @@ -1824,6 +2027,11 @@ ".\nt\readdir.h"\ ".\regex\regex.h"\ ".\util_md5.h"\ + {$(INCLUDE)}"sys\stat.h"\ + {$(INCLUDE)}"sys\types.h"\ + +NODEP_CPP_UTIL_M=\ + ".\sfio.h"\ "$(INTDIR)\util_md5.obj" "$(INTDIR)\util_md5.sbr" : $(SOURCE) $(DEP_CPP_UTIL_M)\ @@ -1873,6 +2081,11 @@ ".\nt\readdir.h"\ ".\regex\regex.h"\ ".\util_script.h"\ + {$(INCLUDE)}"sys\stat.h"\ + {$(INCLUDE)}"sys\types.h"\ + +NODEP_CPP_UTIL_S=\ + ".\sfio.h"\ "$(INTDIR)\util_script.obj" "$(INTDIR)\util_script.sbr" : $(SOURCE)\ @@ -1898,6 +2111,8 @@ DEP_CPP_UTIL_SN=\ ".\conf.h"\ ".\regex\regex.h"\ + {$(INCLUDE)}"sys\stat.h"\ + {$(INCLUDE)}"sys\types.h"\ "$(INTDIR)\util_snprintf.obj""$(INTDIR)\util_snprintf.sbr" : $(SOURCE)\ 1.4 +3 -0 apache/src/nt/modules.c Index: modules.c === RCS file: /export/home/cvs/apache/src/nt/modules.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- modules.c 1997/07/18 23:54:29 1.3 +++ modules.c 1997/07/22 19:25:20 1.4 @@ -23,6 +23,7 @@ extern module imap_module; extern module action_module; extern module browser_module; +extern module isapi_module; module *prelinked_modules[] = { &core_module, @@ -43
cvs commit: apache-site ABOUT_APACHE.html
akosut 97/07/21 16:28:20 Modified:. ABOUT_APACHE.html Log: Update this file as well as the one in the source. Also test to see if unidiffs are really working now. Revision ChangesPath 1.3 +1 -1 apache-site/ABOUT_APACHE.html Index: ABOUT_APACHE.html === RCS file: /export/home/cvs/apache-site/ABOUT_APACHE.html,v retrieving revision 1.2 retrieving revision 1.3 diff -c -u -r1.2 -r1.3 /usr/bin/diff: conflicting specifications of output style --- ABOUT_APACHE.html 1997/07/10 16:29:48 1.2 +++ ABOUT_APACHE.html 1997/07/21 23:28:19 1.3 @@ -186,7 +186,7 @@ Alexei Kosut - Nueva High School, California + Stanford University, California
cvs commit: CVSROOT log_accum.pl
akosut 97/07/21 16:26:53 Modified:. log_accum.pl Log: This time, make unidiffs work for real. Revision ChangesPath 1.30 +1 -1 CVSROOT/log_accum.pl Index: log_accum.pl rcsdiff: unknown option: -U3 rcsdiff usage: rcsdiff -ksubst -q -rrev1 [-rrev2] -Vn -xsuff -zzone [diff options] file ...
cvs commit: apache ABOUT_APACHE
akosut 97/07/21 16:22:15 Modified:. ABOUT_APACHE Log: Change my ABOUT_APACHE entry to something more correct (that I won't have to change for four years). Also to test unidiffs. Revision ChangesPath 1.3 +1 -1 apache/ABOUT_APACHE Index: ABOUT_APACHE rcsdiff: unknown option: -U3 rcsdiff usage: rcsdiff -ksubst -q -rrev1 [-rrev2] -Vn -xsuff -zzone [diff options] file ...
cvs commit: CVSROOT log_accum.pl
akosut 97/07/21 16:20:02 Modified:. log_accum.pl Log: Change context diff to unified diff in commit log email. Reviewed by: Dean Gaudet, Jim Jagielski, , Brian Behlendorf, Ben Laurie Revision ChangesPath 1.29 +1 -1 CVSROOT/log_accum.pl Index: log_accum.pl === RCS file: /export/home/cvs/CVSROOT/log_accum.pl,v retrieving revision 1.28 retrieving revision 1.29 diff -c -C3 -r1.28 -r1.29 *** log_accum.pl 1997/06/26 21:15:10 1.28 --- log_accum.pl 1997/07/21 23:20:00 1.29 *** *** 222,228 . "=\n"; } else { ! open(DIFF, "-|") || exec 'cvs', '-Qn', 'diff', '-C3', "-r$prev_rev", "-r$rev", $file; } --- 222,228 . "=\n"; } else { ! open(DIFF, "-|") || exec 'cvs', '-Qn', 'diff', '-U3', "-r$prev_rev", "-r$rev", $file; }
cvs commit: apache/src Makefile.nt
akosut 97/07/21 16:05:28 Modified:htdocs/manual windows.html src Makefile.nt Log: Change release and debug to apacher and apached, to avoid name conflicts with VC++. Reviewed by: Ben Laurie Revision ChangesPath 1.2 +2 -2 apache/htdocs/manual/windows.html Index: windows.html === RCS file: /export/home/cvs/apache/htdocs/manual/windows.html,v retrieving revision 1.1 retrieving revision 1.2 diff -C3 -r1.1 -r1.2 *** windows.html 1997/07/21 21:26:53 1.1 --- windows.html 1997/07/21 23:05:26 1.2 *** *** 94,101 Makefile.nt file. To compile Apache, simply use one of the following commands: ! nmake /f Makefile.nt release ! nmake /f Makefile.nt debug These will both compile Apache. The latter will include debugging --- 94,101 Makefile.nt file. To compile Apache, simply use one of the following commands: ! nmake /f Makefile.nt apacher (release build) ! nmake /f Makefile.nt apached (debug build) These will both compile Apache. The latter will include debugging 1.8 +2 -4 apache/src/Makefile.nt Index: Makefile.nt === RCS file: /export/home/cvs/apache/src/Makefile.nt,v retrieving revision 1.7 retrieving revision 1.8 diff -C3 -r1.7 -r1.8 *** Makefile.nt 1997/07/21 19:13:01 1.7 --- Makefile.nt 1997/07/21 23:05:28 1.8 *** *** 6,14 # regex makes delete the appropriate apache.exe. Tacky, but it'll work! # Ben, 5 July 97 ! _release: release ! ! release: cd regex & set CFG=regex - Win32 Release& nmake /nologo -f regex.mak cd . & set CFG=ApacheCore - Win32 Release& nmake /nologo -f ApacheCore.mak cd . & set CFG=Apache - Win32 Release& nmake /nologo -f Apache.mak --- 6,12 # regex makes delete the appropriate apache.exe. Tacky, but it'll work! # Ben, 5 July 97 ! apacher: cd regex & set CFG=regex - Win32 Release& nmake /nologo -f regex.mak cd . & set CFG=ApacheCore - Win32 Release& nmake /nologo -f ApacheCore.mak cd . & set CFG=Apache - Win32 Release& nmake /nologo -f Apache.mak *** *** 22,28 cd nt & set CFG=ApacheModuleUserTrack - Win32 Release& nmake /nologo -f ApacheModuleUserTrack.mak cd modules\proxy & set CFG=ApacheModuleProxy - Win32 Release& nmake /nologo -f ApacheModuleProxy.mak ! debug: cd regex & set CFG=regex - Win32 Debug& nmake /nologo -f regex.mak cd . & set CFG=ApacheCore - Win32 Debug& nmake /nologo -f ApacheCore.mak cd . & set CFG=Apache - Win32 Debug& nmake /nologo -f Apache.mak --- 20,26 cd nt & set CFG=ApacheModuleUserTrack - Win32 Release& nmake /nologo -f ApacheModuleUserTrack.mak cd modules\proxy & set CFG=ApacheModuleProxy - Win32 Release& nmake /nologo -f ApacheModuleProxy.mak ! apached: cd regex & set CFG=regex - Win32 Debug& nmake /nologo -f regex.mak cd . & set CFG=ApacheCore - Win32 Debug& nmake /nologo -f ApacheCore.mak cd . & set CFG=Apache - Win32 Debug& nmake /nologo -f Apache.mak
cvs commit: apache/src/nt mod_dll.c
akosut 97/07/21 14:26:59 Modified:. README.NT htdocs/manual new_features_1_3.html htdocs/manual/mod core.html directives.html index.html src/ntmod_dll.c Added: htdocs/manual windows.html htdocs/manual/mod mod_dll.html Log: Create some docs on Apache for Windows. Note that some of this is tenative, and likely to change soon. Revision ChangesPath 1.2 +11 -0 apache/README.NT Index: README.NT === RCS file: /export/home/cvs/apache/README.NT,v retrieving revision 1.1 retrieving revision 1.2 diff -c -C3 -r1.1 -r1.2 *** README.NT 1997/06/15 19:22:22 1.1 --- README.NT 1997/07/21 21:26:52 1.2 *** *** 1,3 --- 1,14 + NOTE - About this File + == + + This file contains development information on Apache for Windows, not all + of which is relevant to the current version. For information on + installation and use of Apache for Windows, please see + http://www.apache.org/docs/windows.html, also available as + htdocs/manual/windows.html with this distribution. + + Alexei Kosut <[EMAIL PROTECTED]> - July 21, 1997 + Integration with official Apache sources 1.10 +1 -2 apache/htdocs/manual/new_features_1_3.html Index: new_features_1_3.html === RCS file: /export/home/cvs/apache/htdocs/manual/new_features_1_3.html,v retrieving revision 1.9 retrieving revision 1.10 diff -c -C3 -r1.9 -r1.10 *** new_features_1_3.html 1997/07/19 08:58:31 1.9 --- new_features_1_3.html 1997/07/21 21:26:53 1.10 *** *** 30,37 ! Support for Windows NT/95 ! [Documentation to be written] Apache now supports the Windows NT and Windows 95 operating systems, as well as the Unix systems supported in previos releases. Although the Windows version of Apache may not be perform as well as on the Unix --- 30,36 ! Support for Windows NT/95 Apache now supports the Windows NT and Windows 95 operating systems, as well as the Unix systems supported in previos releases. Although the Windows version of Apache may not be perform as well as on the Unix 1.1 apache/htdocs/manual/windows.html Index: windows.html === Using Apache with Microsoft Windows Using Apache With Microsoft Windows This document explains how to compile, install, configure and run Apache 1.3a1 (or later) under Microsoft Windows. Please note that at this time, Windows support is entirely experimental, and is recommended only for experienced users. The Apache Group does not guarantee that this software will work as documented, or even at all. If you find any bugs, or wish to contribute in other ways, please use our http://www.apache.org/bug_report.html";>bug reporting page. Requirements Downloading Apache for Windows Compiling Apache for Windows Installing Apache for Windows Using Apache for Windows Requirements Apache 1.3a1 requires the following: Microsoft Windows NT 4.0*, or Windows 95. An Intel-based PC-compatible capable of running above OS (exact requirements unknown) with a connection to a TCP/IP network. Microsoft Visual C++ 5.0 or later. * Apache may run with Windows NT 3.5.1, but has not been tested. Apache 1.3a1 is available only in source form. Future releases will contain prebuilt binaries for use by those without compilers (which we understand are the vast majority of Windows users), however the current release requires Microsoft Visual C++ 5.0 or later. The Apache Group is releasing 1.3a1 only as source to limit the alpha release to those who have the tools and knowledge to assist with the development processes. This documentation assumes good working knowledge of Microsoft Windows, Microsoft Visual C++, and the Apache web server (for Unix). Downloading Apache for Windows Information on the latest version of Apache can be found on the Apache web server at http://www.apache.org/";>http://www.apache.org/. This will list the current release, any more recent alpha or beta-test release, together with details of mirror web and anonymous ftp sites. You will be able to download Apache 1.3a1 or a later release in several forms, including a WinZip (.zip) archive. Although this contains the same files as the others (likely .tar.gz and .tar.Z), it is recommended for Windows use, as all the files
cvs commit: apache/src Makefile.nt
akosut 97/07/21 12:13:02 Modified:src Makefile.nt Log: Clean up Makefile.nt a little. Revision ChangesPath 1.7 +10 -4 apache/src/Makefile.nt Index: Makefile.nt === RCS file: /export/home/cvs/apache/src/Makefile.nt,v retrieving revision 1.6 retrieving revision 1.7 diff -C3 -r1.6 -r1.7 *** Makefile.nt 1997/07/20 15:30:02 1.6 --- Makefile.nt 1997/07/21 19:13:01 1.7 *** *** 6,12 # regex makes delete the appropriate apache.exe. Tacky, but it'll work! # Ben, 5 July 97 ! _release: cd regex & set CFG=regex - Win32 Release& nmake /nologo -f regex.mak cd . & set CFG=ApacheCore - Win32 Release& nmake /nologo -f ApacheCore.mak cd . & set CFG=Apache - Win32 Release& nmake /nologo -f Apache.mak --- 6,14 # regex makes delete the appropriate apache.exe. Tacky, but it'll work! # Ben, 5 July 97 ! _release: release ! ! release: cd regex & set CFG=regex - Win32 Release& nmake /nologo -f regex.mak cd . & set CFG=ApacheCore - Win32 Release& nmake /nologo -f ApacheCore.mak cd . & set CFG=Apache - Win32 Release& nmake /nologo -f Apache.mak *** *** 20,26 cd nt & set CFG=ApacheModuleUserTrack - Win32 Release& nmake /nologo -f ApacheModuleUserTrack.mak cd modules\proxy & set CFG=ApacheModuleProxy - Win32 Release& nmake /nologo -f ApacheModuleProxy.mak ! _debug: cd regex & set CFG=regex - Win32 Debug& nmake /nologo -f regex.mak cd . & set CFG=ApacheCore - Win32 Debug& nmake /nologo -f ApacheCore.mak cd . & set CFG=Apache - Win32 Debug& nmake /nologo -f Apache.mak --- 22,28 cd nt & set CFG=ApacheModuleUserTrack - Win32 Release& nmake /nologo -f ApacheModuleUserTrack.mak cd modules\proxy & set CFG=ApacheModuleProxy - Win32 Release& nmake /nologo -f ApacheModuleProxy.mak ! debug: cd regex & set CFG=regex - Win32 Debug& nmake /nologo -f regex.mak cd . & set CFG=ApacheCore - Win32 Debug& nmake /nologo -f ApacheCore.mak cd . & set CFG=Apache - Win32 Debug& nmake /nologo -f Apache.mak *** *** 34,42 cd nt & set CFG=ApacheModuleUserTrack - Win32 Debug& nmake /nologo -f ApacheModuleUserTrack.mak cd modules\proxy & set CFG=ApacheModuleProxy - Win32 Debug& nmake /nologo -f ApacheModuleProxy.mak ! installr: _release -mkdir \Apache -mkdir \Apache\modules copy ApacheR\Apache.exe \Apache copy CoreR\ApacheCore.dll \Apache copy nt\ApacheModuleStatusR\ApacheModuleStatus.dll \Apache\modules --- 36,46 cd nt & set CFG=ApacheModuleUserTrack - Win32 Debug& nmake /nologo -f ApacheModuleUserTrack.mak cd modules\proxy & set CFG=ApacheModuleProxy - Win32 Debug& nmake /nologo -f ApacheModuleProxy.mak ! installr: release -mkdir \Apache -mkdir \Apache\modules + -mkdir \Apache\logs + -mkdir \Apache\conf copy ApacheR\Apache.exe \Apache copy CoreR\ApacheCore.dll \Apache copy nt\ApacheModuleStatusR\ApacheModuleStatus.dll \Apache\modules *** *** 49,57 copy nt\ApacheModuleUserTrackR\ApacheModuleUserTrack.dll \Apache\modules copy modules\proxy\Release\ApacheModuleProxy.dll \Apache\modules ! installd: _debug -mkdir \Apache -mkdir \Apache\modules copy ApacheD\Apache.exe \Apache copy CoreD\ApacheCore.dll \Apache copy nt\ApacheModuleStatusD\ApacheModuleStatus.dll \Apache\modules --- 53,63 copy nt\ApacheModuleUserTrackR\ApacheModuleUserTrack.dll \Apache\modules copy modules\proxy\Release\ApacheModuleProxy.dll \Apache\modules ! installd: debug -mkdir \Apache -mkdir \Apache\modules + -mkdir \Apache\logs + -mkdir \Apache\conf copy ApacheD\Apache.exe \Apache copy CoreD\ApacheCore.dll \Apache copy nt\ApacheModuleStatusD\ApacheModuleStatus.dll \Apache\modules
cvs commit: apache/src dummy.c
akosut 97/07/21 11:57:18 Modified:src dummy.c Log: Make Apache/Windows work again. Dean's recent change broke it. Revision ChangesPath 1.3 +1 -1 apache/src/dummy.c Index: dummy.c === RCS file: /export/home/cvs/apache/src/dummy.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C3 -r1.2 -r1.3 *** dummy.c 1997/07/21 03:37:49 1.2 --- dummy.c 1997/07/21 18:57:17 1.3 *** *** 1,3 ! void main() { } --- 1,3 ! void dummy() { }
cvs commit: apache/src/nt modules.c ApacheModuleAccess.mak ApacheModuleActions.mak ApacheModuleAlias.mak ApacheModuleAsis.mak ApacheModuleAuth.mak ApacheModuleAutoIndex.mak ApacheModuleBrowser.mak ApacheModuleCGI.mak ApacheModuleDir.mak ApacheModuleEnv.mak ApacheModuleIMap.mak ApacheModuleLogConfig.mak ApacheModuleMIME.mak ApacheModuleNegotiation.mak modules_dll.c
akosut 97/07/18 16:54:29 Modified:src ApacheCore.mak Makefile.nt src/ntmodules.c Added: src Apache.mak Removed: src ApacheLaunch.mak apache.mak src/ntApacheModuleAccess.mak ApacheModuleActions.mak ApacheModuleAlias.mak ApacheModuleAsis.mak ApacheModuleAuth.mak ApacheModuleAutoIndex.mak ApacheModuleBrowser.mak ApacheModuleCGI.mak ApacheModuleDir.mak ApacheModuleEnv.mak ApacheModuleIMap.mak ApacheModuleLogConfig.mak ApacheModuleMIME.mak ApacheModuleNegotiation.mak modules_dll.c Log: Update Windows stuff: move standard modules back into ApacheCore. Change ApacheLaunch to Apache. Update nt/modules.c Revision ChangesPath 1.5 +10 -10apache/src/ApacheCore.mak Index: ApacheCore.mak === RCS file: /export/home/cvs/apache/src/ApacheCore.mak,v retrieving revision 1.4 retrieving revision 1.5 diff -c -C3 -r1.4 -r1.5 *** ApacheCore.mak1997/07/18 19:49:27 1.4 --- ApacheCore.mak1997/07/18 23:54:22 1.5 *** *** 85,91 [EMAIL PROTECTED] "$(INTDIR)\mod_mime.obj" [EMAIL PROTECTED] "$(INTDIR)\mod_negotiation.obj" [EMAIL PROTECTED] "$(INTDIR)\mod_userdir.obj" ! [EMAIL PROTECTED] "$(INTDIR)\modules_dll.obj" [EMAIL PROTECTED] "$(INTDIR)\multithread.obj" [EMAIL PROTECTED] "$(INTDIR)\readdir.obj" [EMAIL PROTECTED] "$(INTDIR)\rfc1413.obj" --- 85,91 [EMAIL PROTECTED] "$(INTDIR)\mod_mime.obj" [EMAIL PROTECTED] "$(INTDIR)\mod_negotiation.obj" [EMAIL PROTECTED] "$(INTDIR)\mod_userdir.obj" ! [EMAIL PROTECTED] "$(INTDIR)\modules.obj" [EMAIL PROTECTED] "$(INTDIR)\multithread.obj" [EMAIL PROTECTED] "$(INTDIR)\readdir.obj" [EMAIL PROTECTED] "$(INTDIR)\rfc1413.obj" *** *** 159,165 "$(INTDIR)\mod_mime.obj" \ "$(INTDIR)\mod_negotiation.obj" \ "$(INTDIR)\mod_userdir.obj" \ ! "$(INTDIR)\modules_dll.obj" \ "$(INTDIR)\multithread.obj" \ "$(INTDIR)\readdir.obj" \ "$(INTDIR)\rfc1413.obj" \ --- 159,165 "$(INTDIR)\mod_mime.obj" \ "$(INTDIR)\mod_negotiation.obj" \ "$(INTDIR)\mod_userdir.obj" \ ! "$(INTDIR)\modules.obj" \ "$(INTDIR)\multithread.obj" \ "$(INTDIR)\readdir.obj" \ "$(INTDIR)\rfc1413.obj" \ *** *** 251,258 [EMAIL PROTECTED] "$(INTDIR)\mod_negotiation.sbr" [EMAIL PROTECTED] "$(INTDIR)\mod_userdir.obj" [EMAIL PROTECTED] "$(INTDIR)\mod_userdir.sbr" ! [EMAIL PROTECTED] "$(INTDIR)\modules_dll.obj" ! [EMAIL PROTECTED] "$(INTDIR)\modules_dll.sbr" [EMAIL PROTECTED] "$(INTDIR)\multithread.obj" [EMAIL PROTECTED] "$(INTDIR)\multithread.sbr" [EMAIL PROTECTED] "$(INTDIR)\readdir.obj" --- 251,258 [EMAIL PROTECTED] "$(INTDIR)\mod_negotiation.sbr" [EMAIL PROTECTED] "$(INTDIR)\mod_userdir.obj" [EMAIL PROTECTED] "$(INTDIR)\mod_userdir.sbr" ! [EMAIL PROTECTED] "$(INTDIR)\modules.obj" ! [EMAIL PROTECTED] "$(INTDIR)\modules.sbr" [EMAIL PROTECTED] "$(INTDIR)\multithread.obj" [EMAIL PROTECTED] "$(INTDIR)\multithread.sbr" [EMAIL PROTECTED] "$(INTDIR)\readdir.obj" *** *** 329,335 "$(INTDIR)\mod_mime.sbr" \ "$(INTDIR)\mod_negotiation.sbr" \ "$(INTDIR)\mod_userdir.sbr" \ ! "$(INTDIR)\modules_dll.sbr" \ "$(INTDIR)\multithread.sbr" \ "$(INTDIR)\readdir.sbr" \ "$(INTDIR)\rfc1413.sbr" \ --- 329,335 "$(INTDIR)\mod_mime.sbr" \ "$(INTDIR)\mod_negotiation.sbr" \ "$(INTDIR)\mod_userdir.sbr" \ ! "$(INTDIR)\modules.sbr" \ "$(INTDIR)\multithread.sbr" \ "$(INTDIR)\readdir.sbr" \ "$(INTDIR)\rfc1413.sbr" \ *** *** 386,392 "$(INTDIR)\mod_mime.obj" \ "$(INTDIR)\mod_negotiation.obj" \ "$(INTDIR)\mod_userdir.obj" \ ! "$(INTDIR)\modules_dll.obj" \ "$(INTDIR)\multithread.obj" \ "$(INTDIR)\readdir.obj" \ "$(INTDIR)\rfc1413.obj" \ --- 386,392 "$(INTDIR)\mod_mime.obj" \ "$(INTDIR)\mod_negotiation.obj" \ "$(INTDIR)\mod_userdir.obj" \ ! "$(INTDIR)\modules.obj" \ "$(INTDIR)\multithread.obj" \ "$(INTDIR)\readdir.obj" \ "$(INTDIR)\rfc1413.obj" \ *** *** 1119,1125 # Begin Source File ! SOURCE=.\nt\modules_dll.c DEP_CPP_MODUL=\ ".\alloc.h"\ ".\buff.h"\ --- 1119,1125 ###
cvs commit: apache/htdocs/manual new_features_1_3.html
akosut 97/07/18 14:01:31 Modified:. CHANGES htdocs/manual new_features_1_3.html Log: Add additional Apache 1.3 docs. Revision ChangesPath 1.10 +57 -121 apache/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache/CHANGES,v retrieving revision 1.9 retrieving revision 1.10 diff -c -C3 -r1.9 -r1.10 *** CHANGES 1997/04/24 23:51:34 1.9 --- CHANGES 1997/07/18 21:01:29 1.10 *** *** 1,129 !OVERVIEW OF NEW FEATURES IN APACHE 1.2 New features with this release, as extensions of the Apache functionality For more information, see the documentation included with this release (htdocs/manual/) or http://www.apache.org/docs/ In addition to a number of bug fixes and internal performance ! enhancements, Apache 1.2 has the following specific new user features: ! ! *) HTTP/1.1 Compliance !Aside from the optional proxy module (which operates as HTTP/1.0), !Apache is conditionally compliant with the HTTP/1.1 proposed standard, !as approved by the IESG and the IETF HTTP working group. !HTTP/1.1 provides a much-improved protocol, and should allow for !greater performance and efficiency when transferring files. Apache !does, however, still work great with HTTP/1.0 browsers. We are very !close to being unconditionally compliant; if you note any deviance !from the proposed standard, please report it as a bug. ! ! *) eXtended Server Side Includes (XSSI) !A new set of server-side include directives allows the user to !better create WWW pages. This includes number of powerful new !features, such as the ability to set variables and use conditional !HTML. ! ! *) File-based and Regex-enabled Directive Sections !The new section allows directives to be enabled based on !full filename, not just directory and URL. In addition, !sections can appear in .htaccess files. , along with ! and , can also now be based on regular !expressions, not just simple prefix matching. ! ! *) Browser-based Environment Variables !Environment variables can now be set based on the User-Agent !string of the browser. Combined with XSSI, this allows you to !write browser-based conditional HTML documents. ! ! *) SetUID CGI Execution !Apache now supports the execution of CGI scripts as users other !than the server user. A number of security checks are built in to !try and make this as safe as possible. ! ! *) URL Rewriting Module !The optional mod_rewrite module is now included. This module can !provide powerful URL mapping, using regular expressions. There's !nothing this module can't do! ! ! *) Enhanced, Configurable Logging !The optional mod_log_config included with earlier versions of !Apache is now standard, and has been enhanced to allow logging of !much more detail about the transaction, and can be used to open !more than one log at once (each of which can have a different log !format). ! ! *) User Tracking (Cookies) Revisions !The mod_cookies included with previous versions of Apache has been !renamed mod_usertrack, to more accurately reflect its function !(some people inadvertently thought it enabled cookie support in !Apache, which is not true - Apache supports the use of cookies !directly). It is also now possible to disable the generation of !cookies, even when the cookie module is compiled in. Also, an !expiry time can be set on the cookies. ! ! *) Multiple IPs in !The directive can now take more than one IP address !or hostname. This lets a single vhost handles requests for !multiple IPs or hostnames. ! ! *) CGI Debugging Environment !ScriptLog allows you to now set up a log that records all input !and output to failed CGI scripts. This includes environment !variables, input headers, POST data, output, and more. This makes !CGI scripts much easier to debug. ! ! *) Resource Limits for CGI Scripts !New directives allow the limiting of resources used by CGI scripts !(e.g. max CPU time). This is helpful in preventing 'runaway' CGI !processes. ! ! *) Redirect Directive Can Return Alternate Status !The Redirect directive can return permanent or temporary redirects, !"Gone" or "See Other" HTTP status. For NCSA-compatibility, !RedirectTemp and RedirectPermanent are also implemented. ! ! *) Graceful Restarts !Apache can re
cvs commit: apache/src/regex regcomp.c regerror.c regex.h regex2.h regexec.c regfree.c
akosut 97/07/15 17:41:28 Modified:src conf.h http_core.c http_core.h util_snprintf.c src/regex regcomp.c regerror.c regex.h regex2.h regexec.c regfree.c Log: Add a few more API_EXPORT tags. Also ensure that regex.h is correctly recreated when mkh is used. Revision ChangesPath 1.115 +2 -1 apache/src/conf.h Index: conf.h === RCS file: /export/home/cvs/apache/src/conf.h,v retrieving revision 1.114 retrieving revision 1.115 diff -c -C3 -r1.114 -r1.115 *** conf.h1997/07/15 22:36:49 1.114 --- conf.h1997/07/16 00:41:20 1.115 *** *** 634,640 #define ap_vsnprintfvsnprintf #else API_EXPORT(int) ap_snprintf(char *buf, size_t len, const char *format,...); ! int ap_vsnprintf(char *buf, size_t len, const char *format, va_list ap); #endif #if !defined(NEXT) && !defined(CONVEXOS) && !defined(WIN32) --- 634,641 #define ap_vsnprintfvsnprintf #else API_EXPORT(int) ap_snprintf(char *buf, size_t len, const char *format,...); ! API_EXPORT(int) ap_vsnprintf(char *buf, size_t len, const char *format, ! va_list ap); #endif #if !defined(NEXT) && !defined(CONVEXOS) && !defined(WIN32) 1.96 +5 -6 apache/src/http_core.c Index: http_core.c === RCS file: /export/home/cvs/apache/src/http_core.c,v retrieving revision 1.95 retrieving revision 1.96 diff -c -C3 -r1.95 -r1.96 *** http_core.c 1997/07/15 22:36:50 1.95 --- http_core.c 1997/07/16 00:41:21 1.96 *** *** 251,257 return conf->opts; } ! int allow_overrides (request_rec *r) { core_dir_config *conf = (core_dir_config *)get_module_config(r->per_dir_config, &core_module); --- 251,257 return conf->opts; } ! API_EXPORT(int) allow_overrides (request_rec *r) { core_dir_config *conf = (core_dir_config *)get_module_config(r->per_dir_config, &core_module); *** *** 259,265 return conf->override; } ! char *auth_type (request_rec *r) { core_dir_config *conf = (core_dir_config *)get_module_config(r->per_dir_config, &core_module); --- 259,265 return conf->override; } ! API_EXPORT(char *) auth_type (request_rec *r) { core_dir_config *conf = (core_dir_config *)get_module_config(r->per_dir_config, &core_module); *** *** 267,273 return conf->auth_type; } ! char *auth_name (request_rec *r) { core_dir_config *conf = (core_dir_config *)get_module_config(r->per_dir_config, &core_module); --- 267,273 return conf->auth_type; } ! API_EXPORT(char *) auth_name (request_rec *r) { core_dir_config *conf = (core_dir_config *)get_module_config(r->per_dir_config, &core_module); *** *** 283,289 return conf->default_type ? conf->default_type : DEFAULT_TYPE; } ! char *document_root (request_rec *r) /* Don't use this!!! */ { core_server_config *conf = (core_server_config *)get_module_config(r->server->module_config, --- 283,289 return conf->default_type ? conf->default_type : DEFAULT_TYPE; } ! API_EXPORT(char *) document_root (request_rec *r) /* Don't use this!!! */ { core_server_config *conf = (core_server_config *)get_module_config(r->server->module_config, *** *** 387,394 } } ! const char * ! get_remote_logname(request_rec *r) { core_dir_config *dir_conf; --- 387,393 } } ! API_EXPORT(const char *) get_remote_logname(request_rec *r) { core_dir_config *dir_conf; 1.24 +5 -5 apache/src/http_core.h Index: http_core.h === RCS file: /export/home/cvs/apache/src/http_core.h,v retrieving revision 1.23 retrieving revision 1.24 diff -c -C3 -r1.23 -r1.24 *** http_core.h 1997/07/15 22:36:50 1.23 --- http_core.h 1997/07/16 00:41:21 1.24 *** *** 83,97 #define SATISFY_NOSPEC 2 API_EXPORT(int) allow_options (request_rec *); ! int allow_overrides (request_rec *); API_EXPORT(char *) default_type (request_rec *); ! char *document_root (request_rec *); /* Don't use this! If your request went * through a Userdir, or something like * that, it'll screw you. But it's * back-compatible
cvs commit: apache/src/nt mod_dll.c
akosut 97/07/15 14:51:57 Modified:src/ntmod_dll.c Log: Change LoadLibrary() to LoadLibraryEx(), to use a more appropriate search path. Revision ChangesPath 1.2 +2 -1 apache/src/nt/mod_dll.c Index: mod_dll.c === RCS file: /export/home/cvs/apache/src/nt/mod_dll.c,v retrieving revision 1.1 retrieving revision 1.2 diff -c -C3 -r1.1 -r1.2 *** mod_dll.c 1997/07/13 19:01:34 1.1 --- mod_dll.c 1997/07/15 21:51:56 1.2 *** *** 111,117 if (been_there_done_that) return NULL; ! if (!(modhandle = LoadLibrary(szModuleFile))) return pstrcat (cmd->pool, "Cannot load ", szModuleFile, " into server", NULL); --- 111,118 if (been_there_done_that) return NULL; ! if (!(modhandle = LoadLibraryEx(szModuleFile, NULL, ! LOAD_WITH_ALTERED_SEARCH_PATH))) return pstrcat (cmd->pool, "Cannot load ", szModuleFile, " into server", NULL);
cvs commit: apache/src alloc.c alloc.h buff.c buff.h http_bprintf.c http_conf_globals.h http_config.c http_config.h http_log.c http_log.h http_main.c http_main.h http_protocol.c http_protocol.h http_request.c http_request.h httpd.h scoreboard.h util.c util_md5.c util_md5.h util_script.c util_script.h
akosut 97/07/15 14:40:21 Modified:src alloc.c alloc.h buff.c buff.h http_bprintf.c http_conf_globals.h http_config.c http_config.h http_log.c http_log.h http_main.c http_main.h http_protocol.c http_protocol.h http_request.c http_request.h httpd.h scoreboard.h util.c util_md5.c util_md5.h util_script.c util_script.h Log: Tag (most of) the rest of the Apache module API symbols with API_EXPORT. Reviewed by: Ben Laurie Revision ChangesPath 1.40 +7 -3 apache/src/alloc.c Index: alloc.c === RCS file: /export/home/cvs/apache/src/alloc.c,v retrieving revision 1.39 retrieving revision 1.40 diff -c -C3 -r1.39 -r1.40 *** alloc.c 1997/07/14 11:28:54 1.39 --- alloc.c 1997/07/15 21:39:50 1.40 *** *** 299,305 permanent_pool = make_sub_pool (NULL); } ! void clear_pool (struct pool *a) { block_alarms(); --- 299,305 permanent_pool = make_sub_pool (NULL); } ! API_EXPORT(void) clear_pool (struct pool *a) { block_alarms(); *** *** 333,340 unblock_alarms(); } ! long bytes_in_pool (pool *p) { return bytes_in_block_list (p->first); } ! long bytes_in_free_blocks () { return bytes_in_block_list (block_freelist); } /* * --- 333,344 unblock_alarms(); } ! API_EXPORT(long) bytes_in_pool (pool *p) { ! return bytes_in_block_list (p->first); ! } ! API_EXPORT(long) bytes_in_free_blocks () { ! return bytes_in_block_list (block_freelist); ! } /* * 1.29 +3 -3 apache/src/alloc.h Index: alloc.h === RCS file: /export/home/cvs/apache/src/alloc.h,v retrieving revision 1.28 retrieving revision 1.29 diff -c -C3 -r1.28 -r1.29 *** alloc.h 1997/07/13 19:01:07 1.28 --- alloc.h 1997/07/15 21:39:50 1.29 *** *** 86,92 /* Clearing out EVERYTHING in an pool... destroys any sub-pools */ ! void clear_pool (struct pool *); /* Preparing for exec() --- close files, etc., but *don't* flush I/O * buffers, *don't* wait for subprocesses, and *don't* free any memory. --- 86,92 /* Clearing out EVERYTHING in an pool... destroys any sub-pools */ ! API_EXPORT(void) clear_pool (struct pool *); /* Preparing for exec() --- close files, etc., but *don't* flush I/O * buffers, *don't* wait for subprocesses, and *don't* free any memory. *** *** 262,266 /* Finally, some accounting */ ! long bytes_in_pool(pool *p); ! long bytes_in_free_blocks(); --- 262,266 /* Finally, some accounting */ ! API_EXPORT(long) bytes_in_pool(pool *p); ! API_EXPORT(long) bytes_in_free_blocks(); 1.37 +14 -24apache/src/buff.c Index: buff.c === RCS file: /export/home/cvs/apache/src/buff.c,v retrieving revision 1.36 retrieving revision 1.37 diff -c -C3 -r1.36 -r1.37 *** buff.c1997/07/13 19:01:08 1.36 --- buff.c1997/07/15 21:39:50 1.37 *** *** 246,253 /* * Create a new buffered stream */ ! BUFF * ! bcreate(pool *p, int flags) { BUFF *fb; --- 246,252 /* * Create a new buffered stream */ ! API_EXPORT(BUFF *) bcreate(pool *p, int flags) { BUFF *fb; *** *** 290,304 /* * Push some I/O file descriptors onto the stream */ ! void ! bpushfd(BUFF *fb, int fd_in, int fd_out) { fb->fd = fd_out; fb->fd_in = fd_in; } ! int ! bsetopt(BUFF *fb, int optname, const void *optval) { if (optname == BO_BYTECT) { --- 289,301 /* * Push some I/O file descriptors onto the stream */ ! API_EXPORT(void) bpushfd(BUFF *fb, int fd_in, int fd_out) { fb->fd = fd_out; fb->fd_in = fd_in; } ! API_EXPORT(int) bsetopt(BUFF *fb, int optname, const void *optval) { if (optname == BO_BYTECT) { *** *** 311,318 } } ! int ! bgetopt(BUFF *fb, int optname, void *optval) { if (optname == BO_BYTECT) { --- 308,314 } } ! API_EXPORT(int) bgetopt(BUFF *fb, int optname, void *optval) { if (optname == BO_BYTECT) { *** *** 415,421 /* * Set a flag on (1) or off (0). */ ! int bsetflag(BUFF *f
cvs commit: apache/conf access.conf-dist-win httpd.conf-dist-win srm.conf-dist-win
akosut 97/07/14 12:21:43 Added: conf access.conf-dist-win httpd.conf-dist-win srm.conf-dist-win Log: Add default Windows *.conf files. These have been added with -kb, and should have DOS line breaks. Reviewed by: Marc Slemko, Jim Jagielski, Randy Terbush Revision ChangesPath 1.1 apache/conf/access.conf-dist-win Index: access.conf-dist-win === # access.conf: Global access configuration # Online docs at http://www.apache.org/ # This file defines server settings which affect which types of services # are allowed, and in what circumstances. # Each directory to which Apache has access, can be configured with respect # to which services and features are allowed and/or disabled in that # directory (and its subdirectories). # Note: Where filenames are specified, you must use forward slashes # instead of backslashes. e.g. "c:/apache" instead of "c:\apache". If # the drive letter is ommited, the drive where Apache.exe is located # will be assumed # Originally by Rob McCool # This should be changed to whatever you set DocumentRoot to. # This may also be "None", "All", or any combination of "Indexes", # "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews". # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you (or at least, not yet). Options Indexes FollowSymLinks # This controls which options the .htaccess files in directories can # override. Can also be "All", or any combination of "Options", "FileInfo", # "AuthConfig", and "Limit" AllowOverride None # Controls who can get stuff from this server. order allow,deny allow from all # /apache/cgi-bin should be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. AllowOverride None Options None # Allow server status reports, with the URL of http://servername/server-status # Change the ".your_domain.com" to match your domain to enable. # #SetHandler server-status #order deny,allow #deny from all #allow from .your_domain.com # # There have been reports of people trying to abuse an old bug from pre-1.1 # days. This bug involved a CGI script distributed as a part of Apache. # By uncommenting these lines you can redirect these attacks to a logging # script on phf.apache.org. Or, you can record them yourself, using the script # support/phf_abuse_log.cgi. # #deny from all #ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi # # You may place any other directories or locations you wish to have # access information for after this one. 1.1 apache/conf/httpd.conf-dist-win Index: httpd.conf-dist-win === # This is the main server configuration file. See URL http://www.apache.org/ # for instructions. # Do NOT simply read the instructions in here without understanding # what they do, if you are unsure consult the online docs. You have been # warned. # Note: Where filenames are specified, you must use forward slashes # instead of backslashes. e.g. "c:/apache" instead of "c:\apache". If # the drive letter is ommited, the drive where Apache.exe is located # will be assumed # Originally by Rob McCool # ServerType must be standalone. ServerType standalone # Port: The port the standalone listens to. Port 80 # HostnameLookups: Log the names of clients or just their IP numbers # e.g. www.apache.org (on) or 204.62.129.132 (off) # The default is off because it'd be overall better for the net if people # had to knowingly turn this feature on. HostnameLookups off # If you wish httpd to run as a different user or group, you must run # httpd as root initially and it will switch. # User/Group: The name (or #number) of the user/group to run httpd as. User nobody Group #-1 # The following directive disables keepalives and HTTP header flushes for # Netscape 2.x and browsers which spoof it. There are known problems with # these BrowserMatch Mozilla/2 nokeepalive # ServerAdmin: Your address, where problems with the server should be # e-mailed. ServerAdmin [EMAIL PROTECTED] # ServerRoot: The directory the server's config, error, and log files # are kept in ServerRoot /apache # BindAddress: You can support virtual hosts with this option. This option # is used to tell the server which IP address to listen to. It can either # contain "*", an IP address, or a fully qualified Internet domain name. # See also the VirtualHost directive. #BindAddress * # ErrorLog: The location of the error log file. If this does not start # with /, ServerRoot is prepended
cvs commit: apache/src mod_usertrack.c
akosut 97/07/08 14:18:51 Modified:src mod_usertrack.c Log: Fix mod_usertrack to work with Windows. Revision ChangesPath 1.12 +18 -2 apache/src/mod_usertrack.c Index: mod_usertrack.c === RCS file: /export/home/cvs/apache/src/mod_usertrack.c,v retrieving revision 1.11 retrieving revision 1.12 diff -c -C3 -r1.11 -r1.12 *** mod_usertrack.c 1997/07/07 14:34:28 1.11 --- mod_usertrack.c 1997/07/08 21:18:50 1.12 *** *** 97,103 --- 97,105 #include "httpd.h" #include "http_config.h" #include "http_core.h" + #ifndef WIN32 #include + #endif module usertrack_module; *** *** 106,111 --- 108,117 time_t expires; } cookie_log_state; + static const char month_names[12][4] = { + "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" + }; + /* Define this to allow post-2000 cookies. Cookies use two-digit dates, * so it might be dicey. (Netscape does it correctly, but others may not) */ *** *** 123,129 #if defined(NO_GETTIMEOFDAY) clock_t mpe_times; struct tms mpe_tms; ! #else struct timeval tv; struct timezone tz = { 0 , 0 }; #endif --- 129,135 #if defined(NO_GETTIMEOFDAY) clock_t mpe_times; struct tms mpe_tms; ! #elif !defined(WIN32) struct timeval tv; struct timezone tz = { 0 , 0 }; #endif *** *** 146,151 --- 152,167 ap_snprintf(cookiebuf, 1024, "%s%d%ld%ld", rname, (int)getpid(), (long)time(NULL), (long)mpe_tms.tms_utime); + #elif defined(WIN32) + /* We lack gettimeofday() and we lack times(). So we'll use + * a combination of time() and GetTickCount(), which returns + * milliseconds since Windows was started. It should be relatively + * unique. + */ + + ap_snprintf(cookiebuf, 1024, "%s%d%ld%ld", rname, (int)getpid(), + (long)time(NULL), (long)GetTickCount()); + #else gettimeofday(&tv, &tz); *** *** 174,180 ap_snprintf(new_cookie, 1024, "%s%s; path=/; expires=%s, %.2d-%s-%.2d %.2d:%.2d:%.2d GMT", COOKIE_NAME, cookiebuf, days[tms->tm_wday], ! tms->tm_mday, month_snames[tms->tm_mon], (tms->tm_year >= 100) ? tms->tm_year - 100 : tms->tm_year, tms->tm_hour, tms->tm_min, tms->tm_sec); } --- 190,196 ap_snprintf(new_cookie, 1024, "%s%s; path=/; expires=%s, %.2d-%s-%.2d %.2d:%.2d:%.2d GMT", COOKIE_NAME, cookiebuf, days[tms->tm_wday], ! tms->tm_mday, month_names[tms->tm_mon], (tms->tm_year >= 100) ? tms->tm_year - 100 : tms->tm_year, tms->tm_hour, tms->tm_min, tms->tm_sec); }
cvs commit: apache/src/regex engine.ih regcomp.ih regerror.ih .cvsignore Makefile
akosut 97/07/08 11:05:44 Modified:src/regex .cvsignore Makefile Added: src/regex engine.ih regcomp.ih regerror.ih Log: Don't delete .ih files when doing a make clean, and add them to the distribution. Revision ChangesPath 1.4 +0 -1 apache/src/regex/.cvsignore Index: .cvsignore === RCS file: /export/home/cvs/apache/src/regex/.cvsignore,v retrieving revision 1.3 retrieving revision 1.4 diff -c -C3 -r1.3 -r1.4 *** .cvsignore1997/07/05 22:09:29 1.3 --- .cvsignore1997/07/08 18:05:38 1.4 *** *** 1,4 - *.ih re Debug Release --- 1,3 1.5 +1 -1 apache/src/regex/Makefile Index: Makefile === RCS file: /export/home/cvs/apache/src/regex/Makefile,v retrieving revision 1.4 retrieving revision 1.5 diff -c -C3 -r1.4 -r1.5 *** Makefile 1996/07/28 10:32:19 1.4 --- Makefile 1997/07/08 18:05:39 1.5 *** *** 126,132 rm -f junk* core core.* *.core dtr *.tmp lint clean: tidy ! rm -f *.o *.s *.ih re libregex.a # don't do this one unless you know what you're doing spotless: clean --- 126,132 rm -f junk* core core.* *.core dtr *.tmp lint clean: tidy ! rm -f *.o *.s re libregex.a # don't do this one unless you know what you're doing spotless: clean 1.1 apache/src/regex/engine.ih Index: engine.ih === /* = begin header generated by ./mkh = */ #ifdef __cplusplus extern "C" { #endif /* === engine.c === */ static int matcher(register struct re_guts *g, char *string, size_t nmatch, regmatch_t pmatch[], int eflags); static char *dissect(register struct match *m, char *start, char *stop, sopno startst, sopno stopst); static char *backref(register struct match *m, char *start, char *stop, sopno startst, sopno stopst, sopno lev); static char *fast(register struct match *m, char *start, char *stop, sopno startst, sopno stopst); static char *slow(register struct match *m, char *start, char *stop, sopno startst, sopno stopst); static states step(register struct re_guts *g, sopno start, sopno stop, register states bef, int ch, register states aft); #define BOL (OUT+1) #define EOL (BOL+1) #define BOLEOL (BOL+2) #define NOTHING (BOL+3) #define BOW (BOL+4) #define EOW (BOL+5) #define CODEMAX (BOL+5) /* highest code used */ #define NONCHAR(c) ((c) > CHAR_MAX) #define NNONCHAR(CODEMAX-CHAR_MAX) #ifdef REDEBUG static void print(struct match *m, char *caption, states st, int ch, FILE *d); #endif #ifdef REDEBUG static void at(struct match *m, char *title, char *start, char *stop, sopno startst, sopno stopst); #endif #ifdef REDEBUG static char *pchar(int ch); #endif #ifdef __cplusplus } #endif /* = end header generated by ./mkh = */ 1.1 apache/src/regex/regcomp.ih Index: regcomp.ih === /* = begin header generated by ./mkh = */ #ifdef __cplusplus extern "C" { #endif /* === regcomp.c === */ static void p_ere(register struct parse *p, int stop); static void p_ere_exp(register struct parse *p); static void p_str(register struct parse *p); static void p_bre(register struct parse *p, register int end1, register int end2); static int p_simp_re(register struct parse *p, int starordinary); static int p_count(register struct parse *p); static void p_bracket(register struct parse *p); static void p_b_term(register struct parse *p, register cset *cs); static void p_b_cclass(register struct parse *p, register cset *cs); static void p_b_eclass(register struct parse *p, register cset *cs); static char p_b_symbol(register struct parse *p); static char p_b_coll_elem(register struct parse *p, int endc); static char othercase(int ch); static void bothcases(register struct parse *p, int ch); static void ordinary(register struct parse *p, register int ch); static void nonnewline(register struct parse *p); static void repeat(register struct parse *p, sopno start, int from, int to); static int seterr(register struct parse *p, int e); static cset *allocset(register struct parse *p); static void freeset(register struct parse *p, register cset *cs); static int freezeset(register struct parse *p, register cset *cs); static int firstch(register struct parse *p, register cset *cs); static int nch(register struct parse *p, register cset *cs); static void mcadd(register struct parse *p, register cs
cvs commit: apache/src http_config.c
akosut 97/07/08 11:02:08 Modified:src http_config.c Log: Fix add_module() so it works with modules dynamically loaded at runtime. Revision ChangesPath 1.57 +2 -5 apache/src/http_config.c Index: http_config.c === RCS file: /export/home/cvs/apache/src/http_config.c,v retrieving revision 1.56 retrieving revision 1.57 diff -c -C3 -r1.56 -r1.57 *** http_config.c 1997/07/08 02:04:41 1.56 --- http_config.c 1997/07/08 18:02:07 1.57 *** *** 83,90 * of modules which control just about all of the server operation. */ - /* num_modules is the number of currently active modules. */ - static int num_modules = 0; /* total_modules is the number of modules linked in. */ static int total_modules = 0; module *top_module = NULL; --- 83,88 *** *** 470,477 top_module = m; } if (m->module_index == -1) { ! m->module_index = num_modules++; } /** XXX: this will be slow if there's lots of add_modules */ build_method_shortcuts (); } --- 468,476 top_module = m; } if (m->module_index == -1) { ! m->module_index = total_modules++; } + /** XXX: this will be slow if there's lots of add_modules */ build_method_shortcuts (); } *** *** 539,546 *m = NULL; m = next_m; } - - num_modules = 0; /* This is required; so we add it always. */ add_named_module ("http_core.c"); --- 538,543
cvs commit: apache/src CHANGES http_core.c mod_alias.c
server to run the script /web/cgi-bin/foo. + + + + ScriptAliasMatch + + Syntax: ScriptAliasMatch regex directory-filename + Context: server config, virtual host + Status: Base + Module: mod_alias + Compatibility: Available in Apache 1.3 and later + + + This directive is equivilent to ScriptAlias, but + makes use of standard regular expressions, instead of simple prefix + matching. The supplied regular expression is matched against the URL, + and if it matches, the server will substitute any parenthesized + matches into the given string and use it as a filename. For example, + to activate the standard /cgi-bin, one might use: + + ScriptAlias ^/cgi-bin(.*) /usr/local/etc/httpd/cgi-bin$1 + + 1.327 +5 -0 apache/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.326 retrieving revision 1.327 diff -c -C3 -r1.326 -r1.327 *** CHANGES 1997/07/08 02:04:40 1.326 --- CHANGES 1997/07/08 04:45:26 1.327 *** *** 1,5 --- 1,10 Changes with Apache 1.3 + *) AliasMatch, ScriptAliasMatch and RedirectMatch directives added, + giving regex support to mod_alias. , + and sections added to succeed , etc... + [Alexei Kosut] + *) The AccessFileName directive can now take more than one filename. ["Lou D. Langholtz" <[EMAIL PROTECTED]>] 1.92 +20 -3 apache/src/http_core.c Index: http_core.c === RCS file: /export/home/cvs/apache/src/http_core.c,v retrieving revision 1.91 retrieving revision 1.92 diff -c -C3 -r1.91 -r1.92 *** http_core.c 1997/07/08 02:04:43 1.91 --- http_core.c 1997/07/08 04:45:27 1.92 *** *** 637,643 #endif cmd->override = OR_ALL|ACCESS_CONF; ! if (!strcmp(cmd->path, "~")) { cmd->path = getword_conf (cmd->pool, &arg); r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED); } --- 637,646 #endif cmd->override = OR_ALL|ACCESS_CONF; ! if (cmd->info) { /* */ ! r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED); ! } ! else if (!strcmp(cmd->path, "~")) { cmd->path = getword_conf (cmd->pool, &arg); r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED); } *** *** 681,687 cmd->path = getword_conf (cmd->pool, &arg); cmd->override = OR_ALL|ACCESS_CONF; ! if (!strcmp(cmd->path, "~")) { cmd->path = getword_conf (cmd->pool, &arg); r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED); } --- 684,693 cmd->path = getword_conf (cmd->pool, &arg); cmd->override = OR_ALL|ACCESS_CONF; ! if (cmd->info) { /* */ ! r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED); ! } ! else if (!strcmp(cmd->path, "~")) { cmd->path = getword_conf (cmd->pool, &arg); r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED); } *** *** 728,734 if (cmd->path) cmd->override = OR_ALL|ACCESS_CONF; ! if (!strcmp(cmd->path, "~")) { cmd->path = getword_conf (cmd->pool, &arg); if (old_path && cmd->path[0] != '/' && cmd->path[0] != '^') cmd->path = pstrcat(cmd->pool, "^", old_path, cmd->path, NULL); --- 734,745 if (cmd->path) cmd->override = OR_ALL|ACCESS_CONF; ! if (cmd->info) { /* */ ! if (old_path && cmd->path[0] != '/' && cmd->path[0] != '^') ! cmd->path = pstrcat(cmd->pool, "^", old_path, cmd->path, NULL); ! r = pregcomp(cmd->pool, cmd->path, REG_EXTENDED); ! } ! else if (!strcmp(cmd->path, "~")) { cmd->path = getword_conf (cmd->pool, &arg); if (old_path && cmd->path[0] != '/' && cmd->path[0] != '^') cmd->path = pstrcat(cmd->pool, "^", old_path, cmd->path, NULL); *** *** 1206,1211 --- 1217,1228 { "", endlimit, NULL, OR_ALL, RAW_ARGS, "Marks end of " }, { "", end_ifmod, NULL, OR_ALL, NO_ARGS, "Marks end of " }, + { "", end_dirsection, NULL, ACCESS_CONF, NO_ARGS, "Marks end of " }, + { "", end_urlsection, NULL, ACCESS_CONF, NO_ARGS, "Ma
cvs commit: apache/src httpd.h
akosut 97/07/03 13:27:41 Modified:src httpd.h Log: Change default server root to /apache on Windows Reviewed by: Marc Slemko, Ken Coar Revision ChangesPath 1.125 +3 -0 apache/src/httpd.h Index: httpd.h === RCS file: /export/home/cvs/apache/src/httpd.h,v retrieving revision 1.124 retrieving revision 1.125 diff -c -C3 -r1.124 -r1.125 *** httpd.h 1997/07/02 03:38:30 1.124 --- httpd.h 1997/07/03 20:27:40 1.125 *** *** 69,74 --- 69,77 #ifdef __EMX__ /* Set default for OS/2 file system */ #define HTTPD_ROOT "/os2httpd" + #elif defined(WIN32) + /* Set default for Windows file system */ + #define HTTPD_ROOT "/apache" #else #define HTTPD_ROOT "/usr/local/etc/httpd" #endif
cvs commit: apache/htdocs/manual new_features_1_3.html index.html
akosut 97/06/23 00:07:00 Modified:htdocs/manual index.html Added: htdocs/manual new_features_1_3.html Log: Begin documenting Apache 1.3. It's never too early. Revision ChangesPath 1.15 +1 -0 apache/htdocs/manual/index.html Index: index.html === RCS file: /export/home/cvs/apache/htdocs/manual/index.html,v retrieving revision 1.14 retrieving revision 1.15 diff -c -C3 -r1.14 -r1.15 *** index.html1997/06/04 11:07:48 1.14 --- index.html1997/06/23 07:06:59 1.15 *** *** 19,24 --- 19,25 Release Notes + New features in Apache 1.3 New features in Apache 1.2 New features in Apache 1.1 New features in Apache 1.0
cvs commit: apache/src util.c
akosut 97/06/22 13:35:27 Modified:src util.c Log: Fix pregsub to check the correct value, and not try and substitute matches that didn't occur. Reviewed by: Ralf S. Engelschall, Randy Terbush Revision ChangesPath 1.54 +2 -2 apache/src/util.c Index: util.c === RCS file: /export/home/cvs/apache/src/util.c,v retrieving revision 1.53 retrieving revision 1.54 diff -c -C3 -r1.53 -r1.54 *** util.c1997/06/15 19:22:34 1.53 --- util.c1997/06/22 20:35:26 1.54 *** *** 232,238 if (c == '\\' && (*src == '$' || *src == '&')) c = *src++; len++; ! } else if (no <= nmatch && pmatch[no].rm_so < pmatch[no].rm_eo) { len += pmatch[no].rm_eo - pmatch[no].rm_so; } --- 232,238 if (c == '\\' && (*src == '$' || *src == '&')) c = *src++; len++; ! } else if (no < nmatch && pmatch[no].rm_so < pmatch[no].rm_eo) { len += pmatch[no].rm_eo - pmatch[no].rm_so; } *** *** 256,262 if (c == '\\' && (*src == '$' || *src == '&')) c = *src++; *dst++ = c; ! } else if (no <= nmatch && pmatch[no].rm_so < pmatch[no].rm_eo) { len = pmatch[no].rm_eo - pmatch[no].rm_so; strncpy(dst, source + pmatch[no].rm_so, len); dst += len; --- 256,262 if (c == '\\' && (*src == '$' || *src == '&')) c = *src++; *dst++ = c; ! } else if (no < nmatch && pmatch[no].rm_so < pmatch[no].rm_eo) { len = pmatch[no].rm_eo - pmatch[no].rm_so; strncpy(dst, source + pmatch[no].rm_so, len); dst += len;
cvs commit: apache/src CHANGES
akosut 97/02/19 19:37:38 Modified:src CHANGES Log: Add MSIE/byterange to CHANGES Revision ChangesPath 1.170 +3 -2 apache/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.169 retrieving revision 1.170 diff -C3 -r1.169 -r1.170 *** CHANGES 1997/02/19 08:18:56 1.169 --- CHANGES 1997/02/20 03:37:37 1.170 *** *** 79,86 *) Remove free() from clean_env() in suexec wrapper. This was nuking the clean environment on some systems. ! *) Tweak byteserving code (e.g. serving PDF files) to work around a ! bug in Netscape Navigator. [Alexei Kosut] *) Port to HP MPE operating system for HP 3000 machines [Mark Bixby <[EMAIL PROTECTED]>] --- 79,87 *) Remove free() from clean_env() in suexec wrapper. This was nuking the clean environment on some systems. ! *) Tweak byteserving code (e.g. serving PDF files) to work around ! bugs in Netscape Navigator and Microsoft Internet Explorer. ! [Alexei Kosut] *) Port to HP MPE operating system for HP 3000 machines [Mark Bixby <[EMAIL PROTECTED]>]
cvs commit: apache/src http_protocol.c
akosut 97/02/19 17:23:25 Modified:src http_protocol.c Log: Add a check for MSIE 3 to send multipart/x-byteranges instead of byteranges. Remove quotes from the boundary string (MSIE has problems with them). Reviewed by: Paul, Jim, Ben Revision ChangesPath 1.103 +17 -3 apache/src/http_protocol.c Index: http_protocol.c === RCS file: /export/home/cvs/apache/src/http_protocol.c,v retrieving revision 1.102 retrieving revision 1.103 diff -C3 -r1.102 -r1.103 *** http_protocol.c 1997/02/18 14:41:29 1.102 --- http_protocol.c 1997/02/20 01:23:23 1.103 *** *** 1053,1058 --- 1053,1073 return OK; } + /* + * Here we try to be compatible with clients that want multipart/x-byteranges + * instead of multipart/byteranges (also see above), as per HTTP/1.1. We + * look for the Request-Range header (e.g. Netscape 2 and 3) as an indication + * that the browser supports an older protocol. We also check User-Agent + * for Microsoft Internet Explorer 3, which needs this as well. + */ + + static int use_range_x(request_rec *r) { + char *ua; + return (table_get(r->headers_in, "Request-Range") || + ((ua = table_get(r->headers_in, "User-Agent")) + && strstr(ua, "MSIE 3"))); + } + void send_http_header(request_rec *r) { conn_rec *c = r->connection; *** *** 1083,1091 if (r->byterange > 1) bvputs(fd, "Content-Type: multipart/", !table_get(r->headers_in, "Request-Range") ? !"x-byteranges" : "byteranges", !"; boundary=\"", r->boundary, "\"\015\012", NULL); else if (r->content_type) bvputs(fd, "Content-Type: ", nuke_mime_parms (r->pool, r->content_type), "\015\012", NULL); --- 1098,1105 if (r->byterange > 1) bvputs(fd, "Content-Type: multipart/", !use_range_x(r) ? "x-byteranges" : "byteranges", !"; boundary=", r->boundary, "\015\012", NULL); else if (r->content_type) bvputs(fd, "Content-Type: ", nuke_mime_parms (r->pool, r->content_type), "\015\012", NULL);
cvs commit: apache/src http_protocol.c
akosut 97/02/10 22:33:36 Modified:src http_protocol.c Log: Add Content-Length header to multipart/byteranges responses. Reviewed by: Roy T. Fielding, Dean Guadet Revision ChangesPath 1.99 +49 -11apache/src/http_protocol.c Index: http_protocol.c === RCS file: /export/home/cvs/apache/src/http_protocol.c,v retrieving revision 1.98 retrieving revision 1.99 diff -C3 -r1.98 -r1.99 *** http_protocol.c 1997/02/06 21:40:35 1.98 --- http_protocol.c 1997/02/11 06:33:34 1.99 *** *** 106,111 --- 106,113 return 1; } + static int internal_byterange(int, long*, request_rec*, char**, long*, long*); + int set_byterange (request_rec *r) { char *range = table_get (r->headers_in, "Range"); *** *** 161,171 else { /* a multiple range */ char boundary[33]; /* Long enough */ r->byterange = 2; - table_unset(r->headers_out, "Content-Length"); ap_snprintf(boundary, sizeof(boundary), "%lx%lx", r->request_time, (long)getpid()); r->boundary = pstrdup(r->pool, boundary); } r->status = PARTIAL_CONTENT; --- 163,177 else { /* a multiple range */ char boundary[33]; /* Long enough */ + char *r_range = pstrdup(r->pool, range + 6); + long tlength = 0; r->byterange = 2; ap_snprintf(boundary, sizeof(boundary), "%lx%lx", r->request_time, (long)getpid()); r->boundary = pstrdup(r->pool, boundary); + while (internal_byterange(0, &tlength, r, &r_range, NULL, NULL)); + ap_snprintf(ts, sizeof(ts), "%ld", tlength); + table_set(r->headers_out, "Content-Length", ts); } r->status = PARTIAL_CONTENT; *** *** 175,205 } int each_byterange (request_rec *r, long *offset, long *length) { long range_start, range_end; char *range; ! if (!*r->range) { ! if (r->byterange > 1) ! rvputs(r, "\015\012--", r->boundary, "--\015\012", NULL); return 0; } ! range = getword_nc(r->pool, &r->range, ','); if (!parse_byterange(range, r->clength, &range_start, &range_end)) ! return each_byterange(r, offset, length); /* Skip this one */ if (r->byterange > 1) { char *ct = r->content_type ? r->content_type : default_type(r); char ts[MAX_STRING_LEN]; ! ap_snprintf(ts, sizeof(ts), "%ld-%ld/%ld", range_start, range_end, r->clength); ! rvputs(r, "\015\012--", r->boundary, "\015\012Content-type: ", ct, "\015\012Content-range: bytes ", ts, "\015\012\015\012", NULL); } ! *offset = range_start; ! *length = range_end - range_start + 1; return 1; } --- 181,243 } int each_byterange (request_rec *r, long *offset, long *length) { + return internal_byterange(1, NULL, r, &r->range, offset, length); + } + + /* If this function is called with realreq=1, it will spit out + * the correct headers for a byterange chunk, and set offset and + * length to the positions they should be. + * + * If it is called with realreq=0, it will add to tlength the length + * it *would* have used with realreq=1. + * + * Either case will return 1 if it should be called again, and 0 + * when done. + * + */ + + static int internal_byterange(int realreq, long *tlength, request_rec *r, + char **r_range, long *offset, long *length) { long range_start, range_end; char *range; ! if (!**r_range) { ! if (r->byterange > 1) { ! if (realreq) ! rvputs(r, "\015\012--", r->boundary, "--\015\012", NULL); ! else ! *tlength += 4 + strlen(r->boundary) + 4; ! } return 0; } ! range = getword_nc(r->pool, r_range, ','); if (!parse_byterange(range, r->clength, &range_start, &range_end)) ! /* Skip this one */ ! return internal_byterange(realreq, tlength, r, r_range, offset, ! length); if (r->byterange > 1) { char *ct = r->content_type ? r->content_type : default_type(r); char ts[MAX_STRING_LEN]; ! ap_snprintf(ts, sizeof(ts), "%ld-%ld/%ld", range_start, range_end, r->clength); ! if (realreq) ! rvputs(r, "\015\012--", r->boundary, "\015\012Content-type: ", ct, "\015\012Content-range: bytes ", ts, "\015\012\015\012", NULL); + else + *tlength += 4 + strlen(r->boundary) + 16 + strlen(ct) + 23 + + strlen(ts) + 4; } ! if (realreq) { ! *offset = range_start; ! *length = r
cvs commit: apache/src CHANGES http_protocol.c
akosut 97/02/06 13:40:38 Modified:src CHANGES http_protocol.c Log: Tweak byteserving code to work around a bug in Netscape Navigator that causes it to only recognize multipart/x-byteranges, not multipart/byteranges (as per HTTP/1.1). Reviewed by: Dean Gaudet, Jim Jagielski Revision ChangesPath 1.145 +3 -0 apache/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.144 retrieving revision 1.145 diff -C3 -r1.144 -r1.145 *** CHANGES 1997/02/04 23:57:23 1.144 --- CHANGES 1997/02/06 21:40:34 1.145 *** *** 1,5 --- 1,8 Changes with Apache 1.2b7 + *) Tweak byteserving code (e.g. serving PDF files) to work around a + bug in Netscape Navigator. [Alexei Kosut] + *) Port to HP MPE operating system for HP 3000 machines [Mark Bixby <[EMAIL PROTECTED]>] 1.98 +15 -2 apache/src/http_protocol.c Index: http_protocol.c === RCS file: /export/home/cvs/apache/src/http_protocol.c,v retrieving revision 1.97 retrieving revision 1.98 diff -C3 -r1.97 -r1.98 *** http_protocol.c 1997/01/30 03:46:13 1.97 --- http_protocol.c 1997/02/06 21:40:35 1.98 *** *** 113,118 --- 113,129 char ts[MAX_STRING_LEN], *match; long range_start, range_end; + /* Also check, for backwards-compatibility with second-draft + * Luotonen/Franks byte-ranges (e.g. Netscape Navigator 2-3) + * + * We support this form, with Request-Range, and (farther down) we + * send multipart/x-byteranges instead of multipart/byteranges for + * Request-Range based requests to work around a bug in Netscape + * Navigator 2 and 3. + */ + + if (!range) range = table_get (r->headers_in, "Request-Range"); + /* Reasons we won't do ranges... */ if (!r->clength || r->assbackwards) return 0; *** *** 1032,1039 bputs("Transfer-Encoding: chunked\015\012", fd); if (r->byterange > 1) ! bvputs(fd, "Content-Type: multipart/byteranges; boundary=\"", !r->boundary, "\"\015\012", NULL); else if (r->content_type) bvputs(fd, "Content-Type: ", nuke_mime_parms (r->pool, r->content_type), "\015\012", NULL); --- 1043,1052 bputs("Transfer-Encoding: chunked\015\012", fd); if (r->byterange > 1) ! bvputs(fd, "Content-Type: multipart/", !table_get(r->headers_in, "Request-Range") ? !"x-byteranges" : "byteranges", !"; boundary=\"", r->boundary, "\"\015\012", NULL); else if (r->content_type) bvputs(fd, "Content-Type: ", nuke_mime_parms (r->pool, r->content_type), "\015\012", NULL);
cvs commit: apache/htdocs/manual/mod core.html
akosut 97/01/25 17:31:15 Modified:htdocs/manual keepalive.html htdocs/manual/mod core.html Log: Update documentation for new KeepAlive syntax. Revision ChangesPath 1.5 +3 -0 apache/htdocs/manual/keepalive.html Index: keepalive.html === RCS file: /export/home/cvs/apache/htdocs/manual/keepalive.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C3 -r1.4 -r1.5 *** keepalive.html1996/12/12 01:09:40 1.4 --- keepalive.html1997/01/26 01:31:13 1.5 *** *** 21,26 --- 21,29 Apache 1.1 comes with Keep-Alive support on by default, however there are some directives you can use to modify Apache's behavior: + Note: Apache 1.2 uses a different syntax for the KeepAlive directive. + KeepAlive Syntax: KeepAlive max-requests Default: KeepAlive 5 1.30 +26 -3 apache/htdocs/manual/mod/core.html Index: core.html === RCS file: /export/home/cvs/apache/htdocs/manual/mod/core.html,v retrieving revision 1.29 retrieving revision 1.30 diff -C3 -r1.29 -r1.30 *** core.html 1997/01/10 11:22:45 1.29 --- core.html 1997/01/26 01:31:14 1.30 *** *** 38,43 --- 38,44 ListenMaxClients + MaxKeepAliveRequests MaxRequestsPerChild MaxSpareServers MinSpareServers *** *** 544,551 KeepAlive ! Syntax: KeepAlive max-requests ! Default: KeepAlive 5 Context: server config Status: Core Compatibility: KeepAlive is only available in Apache --- 545,554 KeepAlive ! Syntax: (Apache 1.1) KeepAlive max-requests ! Default: (Apache 1.1) KeepAlive 5 ! Syntax: (Apache 1.2) KeepAlive on/off ! Default: (Apache 1.2) KeepAlive On Context: server config Status: Core Compatibility: KeepAlive is only available in Apache *** *** 553,563 This directive enables Keep-Alive ! support. Set max-requests to the maximum number of requests you want Apache to entertain per request. A limit is imposed to prevent a client from hogging your server resources. Set this to 0 to disable support. KeepAliveTimeout Syntax: KeepAliveTimeout seconds Default: KeepAliveTimeout 15 --- 556,572 This directive enables Keep-Alive ! support. ! ! Apache 1.1: Set max-requests to the maximum number of requests you want Apache to entertain per request. A limit is imposed to prevent a client from hogging your server resources. Set this to 0 to disable support. + Apache 1.2 and later: Set to "On" to enable + persistent connections, "Off" to disable. See also the MaxKeepAliveRequests directive. + KeepAliveTimeout Syntax: KeepAliveTimeout seconds Default: KeepAliveTimeout 15 *** *** 676,681 --- 685,704 The MaxClients directive sets the limit on the number of simultaneous requests that can be supported; not more than this number of child server processes will be created. + + MaxKeepAliveRequests + Syntax: MaxKeepAliveRequests number + Default: MaxKeepAliveRequests + Context: server config + Status: core + Compatibility: Only available in Apache + 1.2 and later. + + The MaxKeepAliveRequests directive limits the number of requests + allowed per connection when KeepAlive is + on. If it is set to "0," unlimited requests will be + allowed. We reccomend that this setting is kept to a high value, for + maximum server peformance. MaxRequestsPerChild directive
cvs commit: apache/conf httpd.conf-dist
akosut 97/01/25 17:19:16 Modified:conf httpd.conf-dist Log: Change config file to reflect new KeepAlive setup. Revision ChangesPath 1.10 +9 -3 apache/conf/httpd.conf-dist Index: httpd.conf-dist === RCS file: /export/home/cvs/apache/conf/httpd.conf-dist,v retrieving revision 1.9 retrieving revision 1.10 diff -C3 -r1.9 -r1.10 *** httpd.conf-dist 1997/01/01 18:28:20 1.9 --- httpd.conf-dist 1997/01/26 01:19:14 1.10 *** *** 91,100 Timeout 400 ! # KeepAlive: The number of Keep-Alive persistent requests to accept ! # per connection. Set to 0 to deactivate Keep-Alive support ! KeepAlive 5 # KeepAliveTimeout: Number of seconds to wait for the next request --- 91,106 Timeout 400 ! # KeepAlive: Whether or not to allow persistent connections (more than ! # one request per connection). Set to "Off" to deactivate. ! KeepAlive On ! ! # MaxKeepAliveRequests: The maximum number of requests to allow ! # during a persistent connection. Set to 0 to allow an unlimited amount. ! # We reccomend you leave this number high, for maximum performance. ! ! MaxKeepAliveRequests 100 # KeepAliveTimeout: Number of seconds to wait for the next request
cvs commit: apache/src mod_info.c
akosut 97/01/25 17:16:17 Modified:src mod_info.c Log: Change mod_info to correspond to the new keep-alive structure. Submitted by: Dean Gaudet Reviewed by: Alexei Kosut, Marc Slemko Revision ChangesPath 1.11 +1 -1 apache/src/mod_info.c Index: mod_info.c === RCS file: /export/home/cvs/apache/src/mod_info.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C3 -r1.10 -r1.11 *** mod_info.c1997/01/20 04:28:14 1.10 --- mod_info.c1997/01/26 01:16:17 1.11 *** *** 311,317 rputs(buf,r); ap_snprintf(buf, sizeof(buf), "Daemons: start: %d   min idle: %d   max idle: %d   max: %d\n",daemons_to_start,daemons_min_free,daemons_max_free,daemons_limit); rputs(buf,r); ! ap_snprintf(buf, sizeof(buf), "Max Requests: per child: %d   per connection: %d\n",max_requests_per_child,serv->keep_alive); rputs(buf,r); ap_snprintf(buf, sizeof(buf), "Timeouts: connection: %d   keep-alive: %d",serv->timeout,serv->keep_alive_timeout); rputs(buf,r); --- 311,317 rputs(buf,r); ap_snprintf(buf, sizeof(buf), "Daemons: start: %d   min idle: %d   max idle: %d   max: %d\n",daemons_to_start,daemons_min_free,daemons_max_free,daemons_limit); rputs(buf,r); ! ap_snprintf(buf, sizeof(buf), "Max Requests: per child: %d   keep alive: %s   max per connection: %d\n",max_requests_per_child,serv->keep_alive ? "on":"off", serv->keep_alive_max); rputs(buf,r); ap_snprintf(buf, sizeof(buf), "Timeouts: connection: %d   keep-alive: %d",serv->timeout,serv->keep_alive_timeout); rputs(buf,r);
cvs commit: apache/src CHANGES http_config.c http_core.c http_protocol.c httpd.h
akosut 97/01/25 17:15:18 Modified:src CHANGES http_config.c http_core.c http_protocol.c httpd.h Log: Change KeepAlive semantics, add MaxKeepAliveRequests directives (NCSA-style). Change keep-alive defaults. Reviewed by: Dean Gaudet, Marc Slemko Revision ChangesPath 1.136 +3 -0 apache/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.135 retrieving revision 1.136 diff -C3 -r1.135 -r1.136 *** CHANGES 1997/01/25 22:42:56 1.135 --- CHANGES 1997/01/26 01:15:11 1.136 *** *** 1,5 --- 1,8 Changes with Apache 1.2b5 + *) Change KeepAlive semantics (On|Off instead of a number), add + MaxKeepAliveRequests directive. [Alexei Kosut] + *) Various NeXT compilation patches, as well as a change in regex/regcomp.c since that file also used a NEXT define. [Andreas Koenig] 1.42 +6 -1 apache/src/http_config.c Index: http_config.c === RCS file: /export/home/cvs/apache/src/http_config.c,v retrieving revision 1.41 retrieving revision 1.42 diff -C3 -r1.41 -r1.42 *** http_config.c 1997/01/20 04:28:07 1.41 --- http_config.c 1997/01/26 01:15:11 1.42 *** *** 936,941 --- 936,942 s->timeout = 0; s->keep_alive_timeout = 0; s->keep_alive = -1; + s->keep_alive_max = -1; /* start the list of addreses */ addrs = &s->addrs; while( hostname[0] ) { *** *** 998,1003 --- 999,1007 if (virt->keep_alive == -1) virt->keep_alive = main_server->keep_alive; + if (virt->keep_alive_max == -1) + virt->keep_alive_max = main_server->keep_alive_max; + if (virt->send_buffer_size == 0) virt->send_buffer_size = main_server->send_buffer_size; } *** *** 1040,1046 s->access_confname = ACCESS_CONFIG_FILE; s->timeout = DEFAULT_TIMEOUT; s->keep_alive_timeout = DEFAULT_KEEPALIVE_TIMEOUT; ! s->keep_alive = DEFAULT_KEEPALIVE; s->next = NULL; s->addrs = pcalloc(p, sizeof (server_addr_rec)); s->addrs->host_addr.s_addr = htonl (INADDR_ANY); /* NOT virtual host; --- 1044,1051 s->access_confname = ACCESS_CONFIG_FILE; s->timeout = DEFAULT_TIMEOUT; s->keep_alive_timeout = DEFAULT_KEEPALIVE_TIMEOUT; ! s->keep_alive_max = DEFAULT_KEEPALIVE; ! s->keep_alive = 1; s->next = NULL; s->addrs = pcalloc(p, sizeof (server_addr_rec)); s->addrs->host_addr.s_addr = htonl (INADDR_ANY); /* NOT virtual host; 1.61 +14 -2 apache/src/http_core.c Index: http_core.c === RCS file: /export/home/cvs/apache/src/http_core.c,v retrieving revision 1.60 retrieving revision 1.61 diff -C3 -r1.60 -r1.61 *** http_core.c 1997/01/24 07:42:45 1.60 --- http_core.c 1997/01/26 01:15:12 1.61 *** *** 899,905 } const char *set_keep_alive (cmd_parms *cmd, void *dummy, char *arg) { ! cmd->server->keep_alive = atoi (arg); return NULL; } --- 899,916 } const char *set_keep_alive (cmd_parms *cmd, void *dummy, char *arg) { ! /* We've changed it to On/Off, but used to use numbers ! * so we accept anything but "Off" or "0" as "On" ! */ ! if (!strcasecmp(arg, "off") || !strcmp(arg, "0")) ! cmd->server->keep_alive = 0; ! else ! cmd->server->keep_alive = 1; ! return NULL; ! } ! ! const char *set_keep_alive_max (cmd_parms *cmd, void *dummy, char *arg) { ! cmd->server->keep_alive_max = atoi (arg); return NULL; } *** *** 1172,1178 "The pathname the server can be reached at" }, { "Timeout", set_timeout, NULL, RSRC_CONF, TAKE1, "Timeout duration (sec)"}, { "KeepAliveTimeout", set_keep_alive_timeout, NULL, RSRC_CONF, TAKE1, "Keep-Alive timeout duration (sec)"}, ! { "KeepAlive", set_keep_alive, NULL, RSRC_CONF, TAKE1, "Maximum Keep-Alive requests per connection (0 to disable)" }, { "IdentityCheck", set_idcheck, NULL, RSRC_CONF|ACCESS_CONF, FLAG, "Enable identd (RFC931) user lookups - SLOW" }, { "ContentDigest", set_content_md5, NULL, RSRC_CONF|ACCESS_CONF|OR_AUTHCFG, FLAG, "whether or not to send a Content-MD5 h
cvs commit: apache/src CHANGES
akosut 97/01/11 23:13:13 Modified:src CHANGES Log: Add some things to CHANGES Revision ChangesPath 1.116 +7 -0 apache/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.115 retrieving revision 1.116 diff -C3 -r1.115 -r1.116 *** CHANGES 1997/01/10 18:47:37 1.115 --- CHANGES 1997/01/12 07:13:12 1.116 *** *** 1,11 --- 1,16 Changes with Apache 1.2b5 + *) Add rflush() function. [Alexei Kosut] + *) remove duplicate pcalloc() call in new_connection(). *) Fix incorrect comparison which could allow number of children = MaxClients + 1 if less than HARD_SERVER_LIMIT. Also fix potential problem if StartServers > HARD_SERVER_LIMIT. [Ed Korthof] + *) Updated support for OSes (MachTen, ULTRIX, Paragon, ISC, OpenBSD + AIX PS/2, CONVEXOS) + *) Replace instances of inet_ntoa() with inet_addr() for ProxyBlock. It's more portable. [Martin Kraemer] *** *** 16,21 --- 21,28 caching to NoCache directive as well. ProxyBlock works with all handlers; NoCache now also works with FTP for anonymous logins. Still more code cleanup. [Chuck Murcko] + + *) Add "header parse" API hook [Ben Laurie] *) Fix byte ordering problems for REMOTE_PORT [Chuck Murcko]
cvs commit: apache/htdocs/manual/mod mod_cgi.html
akosut 97/01/11 23:02:00 Modified:htdocs/manual/mod mod_cgi.html Log: Add text about possible problems with ScriptLog. Also fix a spelling error. Revision ChangesPath 1.7 +7 -1 apache/htdocs/manual/mod/mod_cgi.html Index: mod_cgi.html === RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_cgi.html,v retrieving revision 1.6 retrieving revision 1.7 diff -C3 -r1.6 -r1.7 *** mod_cgi.html 1996/12/09 02:04:55 1.6 --- mod_cgi.html 1997/01/12 07:01:59 1.7 *** *** 33,39 CGI Environment variables The server will set the CGI environment variables as described in the CGI ! specification, with the following provisons: REMOTE_HOST This will only be set if the server has not been compiled with --- 33,39 CGI Environment variables The server will set the CGI environment variables as described in the CGI ! specification, with the following provisions: REMOTE_HOST This will only be set if the server has not been compiled with *** *** 122,127 --- 122,133 into the filename given as argument. If this is a relative file or path it is taken relative to the server root. + + Note that script logging is meant to be a debugging feature when + writing CGI scripts, and is not meant to be activated continuously on + running servers. It is not optimized for speed or efficiency, and may + have security problems if used in a manner other than that for which + it was designed. ScriptLogLength
cvs commit: apache/src http_protocol.c http_protocol.h
akosut 97/01/10 11:28:55 Modified:src http_protocol.c http_protocol.h Log: Add rflush() function. Reviewed by: Dirk van Gulik, Chuck Murcko, Randy Terbush Revision ChangesPath 1.88 +4 -0 apache/src/http_protocol.c Index: http_protocol.c === RCS file: /export/home/cvs/apache/src/http_protocol.c,v retrieving revision 1.87 retrieving revision 1.88 diff -C3 -r1.87 -r1.88 *** http_protocol.c 1997/01/01 18:10:21 1.87 --- http_protocol.c 1997/01/10 19:28:52 1.88 *** *** 1436,1441 --- 1436,1445 return k; } + int rflush (request_rec *r) { + return bflush(r->connection->client); + } + void send_error_response (request_rec *r, int recursive_error) { conn_rec *c = r->connection; 1.17 +1 -0 apache/src/http_protocol.h Index: http_protocol.h === RCS file: /export/home/cvs/apache/src/http_protocol.h,v retrieving revision 1.16 retrieving revision 1.17 diff -C3 -r1.16 -r1.17 *** http_protocol.h 1997/01/01 18:10:21 1.16 --- http_protocol.h 1997/01/10 19:28:53 1.17 *** *** 115,120 --- 115,121 int rwrite(const void *buf, int nbyte, request_rec *r); int rvputs(request_rec *r, ...); int rprintf(request_rec *r,const char *fmt,...); + int rflush(request_rec *r); /* * Index used in custom_responses array for a specific error code
cvs commit: apache/conf srm.conf-dist
akosut 97/01/06 22:38:05 Modified:conf srm.conf-dist Log: Remove reference to non-existant CGI script. Revision ChangesPath 1.11 +0 -8 apache/conf/srm.conf-dist Index: srm.conf-dist === RCS file: /export/home/cvs/apache/conf/srm.conf-dist,v retrieving revision 1.10 retrieving revision 1.11 diff -C3 -r1.10 -r1.11 *** srm.conf-dist 1997/01/01 18:28:21 1.10 --- srm.conf-dist 1997/01/07 06:38:04 1.11 *** *** 173,186 # Format: Action media/type /cgi-script/location # Format: Action handler-name /cgi-script/location - # For example to add a footer (footer.html in your document root) to - # files with extension .foot (e.g. foo.html.foot), you could use: - #AddHandler foot-action foot - #Action foot-action /cgi-bin/footer - - # Or to do this for all HTML files, for example, use: - #Action text/html /cgi-bin/footer - # MetaDir: specifies the name of the directory in which Apache can find # meta information files. These files contain additional HTTP headers # to include when sending the document --- 173,178
cvs commit: apache/src CHANGES http_core.c
akosut 96/12/30 21:48:02 Modified:src CHANGES http_core.c Log: Correctly set overrides for sections. Reviewed by: Randy Terbush, Chuck Murcko Revision ChangesPath 1.110 +3 -0 apache/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.109 retrieving revision 1.110 diff -C3 -r1.109 -r1.110 *** CHANGES 1996/12/31 05:38:47 1.109 --- CHANGES 1996/12/31 05:48:00 1.110 *** *** 1,5 --- 1,8 Changes with Apache 1.2b5 + *) Correctly allow access and auth directives in sections in + server config files. [Alexei Kosut] + *) Fix bug with ServerPath that could cause certaub files to be not found by the server. [Alexei Kosut] 1.56 +5 -0 apache/src/http_core.c Index: http_core.c === RCS file: /export/home/cvs/apache/src/http_core.c,v retrieving revision 1.55 retrieving revision 1.56 diff -C3 -r1.55 -r1.56 *** http_core.c 1996/12/31 05:38:48 1.55 --- http_core.c 1996/12/31 05:48:01 1.56 *** *** 685,690 --- 685,691 { const char *errmsg; char *endp = strrchr (arg, '>'); + int old_overrides = cmd->override; char *old_path = cmd->path; core_dir_config *conf; regex_t *r = NULL; *** *** 696,701 --- 697,705 if (cmd->limited != -1) return "Can't have within "; cmd->path = getword_conf (cmd->pool, &arg); + /* Only if not an .htaccess file */ + if (cmd->path) + cmd->override = OR_ALL|ACCESS_CONF; if (!strcmp(cmd->path, "~")) { cmd->path = getword_conf (cmd->pool, &arg); *** *** 716,721 --- 720,726 add_file_conf (c, new_file_conf); cmd->path = old_path; + cmd->override = old_overrides; return NULL; }
cvs commit: apache/src CHANGES http_core.c http_protocol.c
akosut 96/12/30 21:38:51 Modified:src CHANGES http_core.c http_protocol.c Log: Make ServerPath properly recognize path segments. Reviewed by: Randy Terbush, Chuck Murcko Revision ChangesPath 1.109 +5 -0 apache/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.108 retrieving revision 1.109 diff -C3 -r1.108 -r1.109 *** CHANGES 1996/12/31 02:28:59 1.108 --- CHANGES 1996/12/31 05:38:47 1.109 *** *** 1,3 --- 1,8 + Changes with Apache 1.2b5 + + *) Fix bug with ServerPath that could cause certaub files to be not + found by the server. [Alexei Kosut] + Changes with Apache 1.2b4: *) Fix possible race condition in accept_mutex_init() that 1.55 +4 -1 apache/src/http_core.c Index: http_core.c === RCS file: /export/home/cvs/apache/src/http_core.c,v retrieving revision 1.54 retrieving revision 1.55 diff -C3 -r1.54 -r1.55 *** http_core.c 1996/12/28 00:04:49 1.54 --- http_core.c 1996/12/31 05:38:48 1.55 *** *** 1223,1229 if ((r->uri[0] != '/') && strcmp(r->uri, "*")) return BAD_REQUEST; if (r->server->path && ! !strncmp(r->uri, r->server->path, r->server->pathlen)) r->filename = pstrcat (r->pool, conf->document_root, (r->uri + r->server->pathlen), NULL); else --- 1223,1232 if ((r->uri[0] != '/') && strcmp(r->uri, "*")) return BAD_REQUEST; if (r->server->path && ! !strncmp(r->uri, r->server->path, r->server->pathlen) && ! (r->server->path[r->server->pathlen - 1] == '/' || ! r->uri[r->server->pathlen] == '/' || ! r->uri[r->server->pathlen] == '\0')) r->filename = pstrcat (r->pool, conf->document_root, (r->uri + r->server->pathlen), NULL); else 1.86 +4 -1 apache/src/http_protocol.c Index: http_protocol.c === RCS file: /export/home/cvs/apache/src/http_protocol.c,v retrieving revision 1.85 retrieving revision 1.86 diff -C3 -r1.85 -r1.86 *** http_protocol.c 1996/12/28 00:04:51 1.85 --- http_protocol.c 1996/12/31 05:38:49 1.86 *** *** 614,620 */ for (s = r->server->next; s; s = s->next) { ! if (s->path && !strncmp(r->uri, s->path, s->pathlen)) r->server = r->connection->server = s; } } --- 614,623 */ for (s = r->server->next; s; s = s->next) { ! if (s->path && !strncmp(r->uri, s->path, s->pathlen) && ! (s->path[s->pathlen - 1] == '/' || ! r->uri[s->pathlen] == '/' || ! r->uri[s->pathlen] == '\0')) r->server = r->connection->server = s; } }
cvs commit: apache/htdocs/manual cgi_path.html new_features_1_2.html
akosut 96/12/19 21:42:15 Modified:htdocs/manual new_features_1_2.html Added: htdocs/manual cgi_path.html Log: Document the change in SCRIPT_NAME/PATH_INFO behavior, and the addition of FILEPATH_INFO. Revision ChangesPath 1.20 +5 -0 apache/htdocs/manual/new_features_1_2.html Index: new_features_1_2.html === RCS file: /export/home/cvs/apache/htdocs/manual/new_features_1_2.html,v retrieving revision 1.19 retrieving revision 1.20 diff -C3 -r1.19 -r1.20 *** new_features_1_2.html 1996/12/14 12:35:41 1.19 --- new_features_1_2.html 1996/12/20 05:42:14 1.20 *** *** 15,20 --- 15,25 href="misc/client_block_api.html">programmer's note on the subject is available. + Additionally, some changes were made to the CGI environment that + may cause some CGI scripts to work incorrectly. If you are + experiencing trouble with a CGI that worked fine under Apache 1.1.1, + please see our explanation of the changes. + New Features with Apache 1.2 New features with this release, as extensions of the Apache functionality. Because the core code has changed so
cvs commit: apache/src CHANGES util_script.c
akosut 96/12/15 14:06:55 Modified:src CHANGES util_script.c Log: Add FILEPATH_INFO env variable, which contains the old-style PATH_INFO. Reviewed by: Ben Laurie, Randy Terbush Revision ChangesPath 1.87 +4 -0 apache/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.86 retrieving revision 1.87 diff -C3 -r1.86 -r1.87 *** CHANGES 1996/12/12 17:01:59 1.86 --- CHANGES 1996/12/15 22:06:53 1.87 *** *** 1,5 --- 1,9 Changes with Apache 1.2b3: + *) Add FILEPATH_INFO variable to CGI environment, which is equal to + PATH_INFO from previous versions of Apache (in certain situations, + Apache 1.2's PATH_INFO will be different than 1.1's). [Alexei Kosut] + *) Add rwrite() function to API to allow for sending strings of arbitrary length. [Doug MacEachern] 1.30 +11 -0 apache/src/util_script.c Index: util_script.c === RCS file: /export/home/cvs/apache/src/util_script.c,v retrieving revision 1.29 retrieving revision 1.30 diff -C3 -r1.29 -r1.30 *** util_script.c 1996/12/09 01:00:40 1.29 --- util_script.c 1996/12/15 22:06:53 1.30 *** *** 236,241 --- 236,252 table_set (e, "PATH_INFO", r->uri + path_info_start); } + /* Some CGI apps need the old-style PATH_INFO (taken from the + * filename, not the URL), so we provide it in a different env + * variable. CGI scripts can use something like (in Perl) + * $path_info = $ENV{'FILEPATH_INFO'} || $ENV{'PATH_INFO'}; + * to get the right information with both old and new + * versions of Apache (and other servers). + */ + + if (r->path_info && *r->path_info) + table_set (e, "FILEPATH_INFO", r->path_info); + if (r->path_info && r->path_info[0]) { /* * To get PATH_TRANSLATED, treat PATH_INFO as a URI path.
cvs commit: apache/src CHANGES http_config.h
akosut 96/12/11 17:02:14 Modified:src CHANGES http_config.h Log: Add CHANGES entry for rwrite(), and update MODULE_MAGIC_NUMBER. Revision ChangesPath 1.85 +3 -0 apache/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.84 retrieving revision 1.85 diff -C3 -r1.84 -r1.85 *** CHANGES 1996/12/11 05:21:38 1.84 --- CHANGES 1996/12/12 01:02:02 1.85 *** *** 1,5 --- 1,8 Changes with Apache 1.2b3: + *) Add rwrite() function to API to allow for sending strings of + arbitrary length. [Doug MacEachern] + *) Remove rlim_t typedef for NetBSD. Do older versions need this? *) Defined rlim_t and WANTHSREGEX=yes for NeXT. 1.24 +1 -1 apache/src/http_config.h Index: http_config.h === RCS file: /export/home/cvs/apache/src/http_config.h,v retrieving revision 1.23 retrieving revision 1.24 diff -C3 -r1.23 -r1.24 *** http_config.h 1996/12/01 20:28:20 1.23 --- http_config.h 1996/12/12 01:02:12 1.24 *** *** 225,231 * handle it back-compatibly, or at least signal an error). */ ! #define MODULE_MAGIC_NUMBER 19961125 #define STANDARD_MODULE_STUFF MODULE_MAGIC_NUMBER, -1, __FILE__, NULL /* Generic accessors for other modules to get at their own module-specific --- 225,231 * handle it back-compatibly, or at least signal an error). */ ! #define MODULE_MAGIC_NUMBER 19961211 #define STANDARD_MODULE_STUFF MODULE_MAGIC_NUMBER, -1, __FILE__, NULL /* Generic accessors for other modules to get at their own module-specific
cvs commit: apache/htdocs/manual .htaccess
akosut 96/12/10 13:29:34 Removed: htdocs/manual .htaccess Log: Remove this darn file already...
cvs commit: apache/src mod_negotiation.c
akosut 96/12/08 20:37:05 Modified:src mod_negotiation.c Log: Fix infinite loop when processing Content-language lines in type-map files. Reviewed by: Randy Terbush, Chuck Murcko Revision ChangesPath 1.27 +1 -1 apache/src/mod_negotiation.c Index: mod_negotiation.c === RCS file: /export/home/cvs/apache/src/mod_negotiation.c,v retrieving revision 1.26 retrieving revision 1.27 diff -C3 -r1.26 -r1.27 *** mod_negotiation.c 1996/12/09 03:56:24 1.26 --- mod_negotiation.c 1996/12/09 04:37:03 1.27 *** *** 417,423 char **new = (char **)push_array (lang_recs); *new = get_token (p, lang_line, 0); str_tolower (*new); ! if (**lang_line == ',') ++(*lang_line); } --- 417,423 char **new = (char **)push_array (lang_recs); *new = get_token (p, lang_line, 0); str_tolower (*new); ! if (**lang_line == ',' || **lang_line == ';') ++(*lang_line); }
cvs commit: apache/htdocs/manual/mod mod_cgi.html mod_log_config.html mod_usertrack.html
akosut 96/12/08 18:05:01 Modified:htdocs/manual/mod mod_cgi.html mod_log_config.html mod_usertrack.html Log: Fix some typos. Make some clarifications in mod_usertrack.html (and put the directives in alphabetical order). Submitted by by: WWW server manager <[EMAIL PROTECTED]> Revision ChangesPath 1.6 +3 -3 apache/htdocs/manual/mod/mod_cgi.html Index: mod_cgi.html === RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_cgi.html,v retrieving revision 1.5 retrieving revision 1.6 diff -C3 -r1.5 -r1.6 *** mod_cgi.html 1996/12/02 18:14:03 1.5 --- mod_cgi.html 1996/12/09 02:04:55 1.6 *** *** 73,79 %% HTTP-status CGI-script-filename ! If the error is the that CGI script cannot be run, the log file will contain an extra two lines: --- 73,79 %% HTTP-status CGI-script-filename ! If the error is that CGI script cannot be run, the log file will contain an extra two lines: *** *** 82,88 error-message ! Alternatively, if the error is the result of the script returning the incorrect header information (often due to a bug in the script), the following information is logged: --- 82,88 error-message ! Alternatively, if the error is the result of the script returning incorrect header information (often due to a bug in the script), the following information is logged: *** *** 146,152 Status: mod_cgi ! The size of any PUR or POST entity body that is logged to the file is limited, to prevent the log file growing too big too quickly if large bodies are being received. By default, up to 1024 bytes are logged, but this can be changed with this directive. --- 146,152 Status: mod_cgi ! The size of any PUT or POST entity body that is logged to the file is limited, to prevent the log file growing too big too quickly if large bodies are being received. By default, up to 1024 bytes are logged, but this can be changed with this directive. 1.7 +3 -3 apache/htdocs/manual/mod/mod_log_config.html Index: mod_log_config.html === RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_log_config.html,v retrieving revision 1.6 retrieving revision 1.7 diff -C3 -r1.6 -r1.7 *** mod_log_config.html 1996/12/02 18:14:08 1.6 --- mod_log_config.html 1996/12/09 02:04:56 1.7 *** *** 20,26 to create a log file, LogFormat to set a custom format, and CustomLog to define a log file and format in one go. The TransferLog and CustomLog directives can ! be use multiple times in each server to cause each request to be logged to multiple files. --- 20,26 to create a log file, LogFormat to set a custom format, and CustomLog to define a log file and format in one go. The TransferLog and CustomLog directives can ! be used multiple times in each server to cause each request to be logged to multiple files. *** *** 29,36 This module is based on mod_log_config distributed with previous Apache releases, now updated to handle multiple logs. ! There is now no need to re-configure Apache to get use ! configuration log formats. The module also implements the CookieLog directive, used to log user-tracking information created by This module is based on mod_log_config distributed with previous Apache releases, now updated to handle multiple logs. ! There is now no need to re-configure Apache to use configuration log ! formats. The module also implements the CookieLog directive, used to log user-tracking information created by Directives - CookieTracking CookieExpires CookieTracking Syntax: CookieTracking on | off Context: server config, virtual host, directory, --- 40,66 Directives CookieExpires + CookieTracking + CookieExpires + Syntax: CookieExpires expiry-period + Context: server config, virtual host + Status: optional + Module: mod_usertrack + + When used, this directive sets an expiry time on the cookie generated + by the usertrack module. The expiry-period can be given either + as a number of seconds, or in the format such as "2 weeks 3 days 7 + hours". Valid denominations are: years, months, weeks, hours, minutes + and seconds. + + If this directive is not used, cookies last only for the current + browser session. + CookieTracking Syntax: CookieTracking on | off Context: server config, virtual host, directory,
cvs commit: apache/htdocs/manual new_features_1_2.html
akosut 96/12/01 09:27:09 Modified:htdocs/manual new_features_1_2.html Log: This file exists now, sorta. Revision ChangesPath 1.12 +1 -2 apache/htdocs/manual/new_features_1_2.html Index: new_features_1_2.html === RCS file: /export/home/cvs/apache/htdocs/manual/new_features_1_2.html,v retrieving revision 1.11 retrieving revision 1.12 diff -C3 -r1.11 -r1.12 *** new_features_1_2.html 1996/12/01 07:44:37 1.11 --- new_features_1_2.html 1996/12/01 17:27:09 1.12 *** *** 66,73 href="xssi.html">XSSI, this allows you to write browser-based conditional HTML documents. ! SetUID CGI Execution ! [Documentation to be written] Apache now supports the execution of CGI scripts as users other than the server user. A number of security checks are built in --- 66,72 href="xssi.html">XSSI, this allows you to write browser-based conditional HTML documents. ! SetUID CGI Execution Apache now supports the execution of CGI scripts as users other than the server user. A number of security checks are built in
cvs commit: apache/src CHANGES
akosut 96/12/01 02:41:19 Modified:src CHANGES Log: Update src/CHANGES: remove entries from the first of each major release (1.0.0, 1.1b1, 1.2b1) Reviewed by: Well, no one objected (and I proposed it three times)... Revision ChangesPath 1.72 +6 -337apache/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache/src/CHANGES,v retrieving revision 1.71 retrieving revision 1.72 diff -C3 -r1.71 -r1.72 *** CHANGES 1996/11/03 20:56:02 1.71 --- CHANGES 1996/12/01 10:41:17 1.72 *** *** 1,116 Changes with Apache 1.2b1: ! *) Allow directives to have any number of arguments between one ! and three, with TAKE12, TAKE23, TAKE123, TAKE13 and TAKE3. ! ! *) Phase I proxy overhaul: ! Added support for null form data set [Petr Lampa] ! Added RFC 850 date support (Netscape uses it) [Andrew Daviel] ! Removed old ftp handler and conditional compile stuff ! Added server.sin_family=AF_INET to guarantee new ftp works ! Changed proxy ftp userid to [EMAIL PROTECTED] [Chuck Murcko] ! ! *) Cookie module has been renamed from mod_cookies.c to mod_usertrack.c ! to stop user confusion. You only need the usertrack module if you ! want to accurately track users clickstreams. You do not need any ! special modules to just use Cookies on your site. [Mark Cox] ! ! *) Cookies module now logs initial transaction. Logging for Cookies is ! now handled by using %{Cookie}n directive in log module. Old ! "CookieLog" directive still works but isn't recommended; see ! mod_cookies.c for explanation [Mark Cox] ! ! *) New logging directives, %U (URL path requested), %f filename, ! %P (Process ID), %{}n (item from notes table) [Alexei Kosut] ! ! *) Requests can be logged to more than one log file, using multiple ! TransferLog directives, and/or new CustomLog directives with a ! configurable format. [Paul Sutton] ! ! *) Negotiation updated to implement all aspects of HTTP/1.1, including ! charset and encoding negotiation. Now server-driven negotiation ! can return a list of variants (the 406 response). ! Some code included for transparent negotiation (not compiled ! in by default). [Paul Sutton] ! ! *) IP Virtual Hosts now work where the vhost IP address is the main ! IP address of the host and the port s not the default port. ! [Paul Sutton] ! ! *) Domain names on 'allow' and 'deny' lines are now case-insensitive. ! [Paul Sutton] ! ! *) Netscape 2.x keepalive fix, using BrowserMatch/mod_browser. ! [Chuck Murcko] ! ! *) Status module updates: prevent rollover/overflow with heavily ! used systems. Add additional information, such as time ! to process request and additional "states" [Jim Jagielski] ! ! *) Fix a race condition which could cause the parent server to hang on ! heavily loaded systems. [Ben Laurie] ! ! *) Configuration flags should be either "on" or "off". Apache was not ! enforcing this restriction. Fixed. [Ben Laurie] ! ! *) Really fix misspellings of Authoritative in various directives. ! ! *) Add new option; "-h". This lists all directives known to Apache, ! together with their help text and the module which implements them. ! [Ben Laurie]. ! ! *) Somewhat cleaner Configure implementation ! GuessOS script used to determine OS/Platform for Configure. ! Concept of "Rules" added to allow for control of Configure's ! behavior. [Jim Jagielski] ! ! *) Add setuid/gid execution via setuid wrapper ! Apache can now execute CGI scripts as the User/Group of the ! virtualhost, or as the owner of the UserDir through ~user. ! The wrapper program (suexec) is detected and configured at ! startup. [Randy Terbush, Jason Dour] ! ! *) Add RLimit??? resource control ! For systems supporting the setrlimit() functionality, it is ! now possible to limit system resource usage of CGI programs ! via RLimitCPU, RLimitNPROC and RLimitMEM directives. Each ! directive takes 1|2 arguments to set the soft/hard limit values ! for each system limit. Setting the hard limit requires the ! server to be running as root. [Randy Terbush, Ben Laurie] ! ! *) Centralize exec() code ! Changed as a first step toward handling setuid()/setgid() ! execution with a setuid wrapper program directly from Apache. ! Modules requiring the use of exec() should probably do so ! through a call to cal_exec(). [Randy Terbush] ! ! *) Supplemental
cvs commit: apache/htdocs/manual/mod mod_browser.html
akosut 96/12/01 00:40:01 Modified:htdocs/manual/mod mod_browser.html Log: Oops... HTML muckup. I think I got it right this time (knock on wood). Revision ChangesPath 1.5 +3 -3 apache/htdocs/manual/mod/mod_browser.html Index: mod_browser.html === RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_browser.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C3 -r1.4 -r1.5 *** mod_browser.html 1996/12/01 08:38:24 1.4 --- mod_browser.html 1996/12/01 08:40:01 1.5 *** *** 32,39 Sytnax: BrowserMatch regex attr1 attr2... Context: server config Status: base ! Module: mod_browser ! Compatibility: Apache 1.2 and above The BrowserMatch directive defines environment variables based on the User-Agent --- 32,39 Sytnax: BrowserMatch regex attr1 attr2... Context: server config Status: base ! Module: mod_browser ! Compatibility: Apache 1.2 and above The BrowserMatch directive defines environment variables based on the User-Agent *** *** 59,65 Sytnax: BrowserMatchNoCase regex attr1 attr2... Context: server config Status: base ! Module: mod_browser Compatibility: Apache 1.2 and above The BrowserMatchNoCase directive is semantically identical to --- 59,65 Sytnax: BrowserMatchNoCase regex attr1 attr2... Context: server config Status: base ! Module: mod_browser Compatibility: Apache 1.2 and above The BrowserMatchNoCase directive is semantically identical to
cvs commit: apache/htdocs/manual/mod mod_browser.html
akosut 96/12/01 00:38:25 Modified:htdocs/manual/mod mod_browser.html Log: Forgot to add 1.2-only lines. Oops. Revision ChangesPath 1.4 +3 -1 apache/htdocs/manual/mod/mod_browser.html Index: mod_browser.html === RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_browser.html,v retrieving revision 1.3 retrieving revision 1.4 diff -C3 -r1.3 -r1.4 *** mod_browser.html 1996/12/01 08:31:23 1.3 --- mod_browser.html 1996/12/01 08:38:24 1.4 *** *** 9,15 Apache module mod_browser This module is contained in the mod_browser.c file, and ! is compiled in by default. It provides for setting environment variables based on the browser. Summary --- 9,15 Apache module mod_browser This module is contained in the mod_browser.c file, and ! is compiled in by default with Apache 1.2 and above. It provides for setting environment variables based on the browser. Summary *** *** 33,38 --- 33,39 Context: server config Status: base Module: mod_browser + Compatibility: Apache 1.2 and above The BrowserMatch directive defines environment variables based on the User-Agent *** *** 59,64 --- 60,66 Context: server config Status: base Module: mod_browser + Compatibility: Apache 1.2 and above The BrowserMatchNoCase directive is semantically identical to the BrowserMatch
cvs commit: apache/htdocs/manual/mod directives.html mod_browser.html
akosut 96/12/01 00:31:25 Modified:htdocs/manual/mod directives.html mod_browser.html Log: Enhance mod_browser documentation. Revision ChangesPath 1.5 +2 -0 apache/htdocs/manual/mod/directives.html Index: directives.html === RCS file: /export/home/cvs/apache/htdocs/manual/mod/directives.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C3 -r1.4 -r1.5 *** directives.html 1996/12/01 06:57:35 1.4 --- directives.html 1996/12/01 08:31:23 1.5 *** *** 39,44 --- 39,46 AuthName AuthType BindAdress + BrowserMatch + BrowserMatchNoCase CacheDefaultExpire CacheGcInterval CacheLastModified 1.3 +52 -28apache/htdocs/manual/mod/mod_browser.html Index: mod_browser.html === RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_browser.html,v retrieving revision 1.2 retrieving revision 1.3 diff -C3 -r1.2 -r1.3 *** mod_browser.html 1996/11/26 06:03:47 1.2 --- mod_browser.html 1996/12/01 08:31:23 1.3 *** *** 9,54 Apache module mod_browser This module is contained in the mod_browser.c file, and ! is compiled in by default. It provides for setting various variables ! based on the User-Agent header passed to the server. Summary ! Directives ! BrowserMatch ! BrowserMatchNoCase ! BrowserMatch ! ! Syntax: BrowserMatch User-Agent Regex Variable ! Context: server config, virtual host ! Status: Base ! Module: mod_browser ! Compatibility: BrowserMatch is only available in ! Apache 1.2 and later. ! ! If the user-agent passed by the browser matches the regex passed to ! browsermatch, th variable is set. ! ! BrowserMatchNoCase ! ! Syntax: BrowserMatchNoCase User-Agent Regex Variable ! Context: server config, virtual host ! Status: Base ! Module: mod_browser ! Compatibility: BrowserMatchNoCase is only available in ! Apache 1.2 and later. - Same as BrowserMatch, but the matching is not case-sensitive. - - --- 9,78 Apache module mod_browser This module is contained in the mod_browser.c file, and ! is compiled in by default. It provides for ! setting environment variables based on the browser. Summary ! This module allows you to set environment variables based on the name of ! the browser accessing your document, based on the User-Agent ! header field. This is especially useful when combined with a conditional ! HTML language such as XSSI or PHP, and ! can provide for simple browser-based negotiation of HTML features. ! Directives ! BrowserMatch ! BrowserMatchNoCase ! BrowserMatch ! Sytnax: BrowserMatch regex attr1 attr2... ! Context: server config ! Status: base ! Module: mod_browser ! ! The BrowserMatch directive defines environment variables based on the ! User-Agent ! header. The first argument should be a POSIX.2 extended regular ! expression (similar to an egrep-style regex). The rest of the arguments ! give names of variables to set. These take the form of either ! "varname", "!varname or ! "varname=value". In the first form, the value will be set ! to "1". The second will remove the given variable if already defined, ! and the third will set the variable to the value given by value. If a User-Agent ! string matches more than one entry, they will ! be merged. Entries are processed in the order they appear, and later ! entries can override earlier ones. ! ! For example: ! ! BrowserMatch ^Mozilla forms jpeg=yes browser=netscape ! BrowserMatch "^Mozilla/[2-3]" tables agif frames javascript ! BrowserMatch MSIE !javascript ! ! ! BrowserMatchNoCase ! Sytnax: BrowserMatchNoCase regex attr1 attr2... ! Context: server config ! Status: base ! Module: mod_browser ! ! The BrowserMatchNoCase directive is semantically identical to !the BrowserMatch !directive. However, it provides for case-insensitive matching. For !example: ! ! BrowserMatchNoCase mac platform=macintosh ! BrowserMatchNoCase win platform=windows ! + +
cvs commit: apache/htdocs/manual new_features_1_2.html
akosut 96/11/30 23:44:38 Modified:htdocs/manual new_features_1_2.html Log: This documentation exists now... Revision ChangesPath 1.11 +1 -2 apache/htdocs/manual/new_features_1_2.html Index: new_features_1_2.html === RCS file: /export/home/cvs/apache/htdocs/manual/new_features_1_2.html,v retrieving revision 1.10 retrieving revision 1.11 diff -C3 -r1.10 -r1.11 *** new_features_1_2.html 1996/12/01 06:57:20 1.10 --- new_features_1_2.html 1996/12/01 07:44:37 1.11 *** *** 116,123 variables, input headers, POST data, output, and more. This makes CGI scripts much easier to debug. ! Resource Limits for CGI Scripts ! [Documentation to be written] New directives allow the limiting of resources used by CGI scripts (e.g. max CPU time). This is helpful in preventing 'runaway' CGI processes. --- 116,122 variables, input headers, POST data, output, and more. This makes CGI scripts much easier to debug. ! Resource Limits for CGI Scripts New directives allow the limiting of resources used by CGI scripts (e.g. max CPU time). This is helpful in preventing 'runaway' CGI processes.
cvs commit: apache/htdocs/manual/mod mod_alias.html mod_userdir.html
akosut 96/11/30 22:44:41 Modified:htdocs/manual/mod mod_alias.html mod_userdir.html Log: Fix compat notes, and make the UserDir docs to be (a) correct, and (b) to use more "friendly" expamples (hah). Revision ChangesPath 1.5 +0 -4 apache/htdocs/manual/mod/mod_alias.html Index: mod_alias.html === RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_alias.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C3 -r1.4 -r1.5 *** mod_alias.html1996/11/27 09:30:51 1.4 --- mod_alias.html1996/12/01 06:44:39 1.5 *** *** 30,37 Context: server config, virtual host Status: Base Module: mod_alias - Compatibility: Alias is only available in Apache 1.1 - and later The Alias directive allows documents to be stored in the local filesystem other than under the DocumentRoot. --- 30,35 *** *** 115,122 Context: server config, virtual host Status: Base Module: mod_alias - Compatibility: ScriptAlias is only available in Apache 1.1 - and later The ScriptAlias directive has the same behaviour as the Alias directive, except that in addition it --- 113,118 1.3 +9 -7 apache/htdocs/manual/mod/mod_userdir.html Index: mod_userdir.html === RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_userdir.html,v retrieving revision 1.2 retrieving revision 1.3 diff -C3 -r1.2 -r1.3 *** mod_userdir.html 1996/11/21 10:30:53 1.2 --- mod_userdir.html 1996/12/01 06:44:40 1.3 *** *** 24,46 Default: UserDir public_html Context: server config, virtual host Status: Base ! Module: mod_userdir The UserDir directive sets the real directory in a user's home directory to use when a request for a document for a user is received. Directory is either disabled, to disable this feature, or the name of a directory, following one of the following patterns. If not disabled, then a request for ! http://www.foo.com/~bar/one/two.html will be translated to: ! UserDir public_html -> ~bar/public_html/one/two.html ! UserDir /usr/web-> /usr/web/bar/one/two.html ! UserDir /home/*/www -> /home/bar/www/one/two.html The following directives will send redirects to the client: ! UserDir http://www.x.com/users -> http//www.x.com/users/bar/one/two.html ! UserDir http://www.x.com/*/y -> http://www.x.com/y/one/two.html --- 24,48 Default: UserDir public_html Context: server config, virtual host Status: Base ! Module: mod_userdir ! Compatibility: All forms except the UserDir ! public_html form are only available in Apache 1.1 or above. The UserDir directive sets the real directory in a user's home directory to use when a request for a document for a user is received. Directory is either disabled, to disable this feature, or the name of a directory, following one of the following patterns. If not disabled, then a request for ! http://www.foo.com/~bob/one/two.html will be translated to: ! UserDir public_html -> ~bob/public_html/one/two.html ! UserDir /usr/web-> /usr/web/bob/one/two.html ! UserDir /home/*/www -> /home/bob/www/one/two.html The following directives will send redirects to the client: ! UserDir http://www.foo.com/users -> http//www.foo.com/users/bob/one/two.html ! UserDir http://www.foo.com/*/usr -> http://www.foo.com/bob/usr/one/two.html
cvs commit: apache/htdocs/manual invoking.html new_features_1_0.html new_features_1_1.html new_features_1_2.html
akosut 96/11/30 22:38:14 Modified:htdocs/manual invoking.html new_features_1_0.html new_features_1_1.html new_features_1_2.html Log: Fix links in release notes. Also invalidate links to non-existent files, add "[Documentation to be written]" tag to them, for clarity. Revision ChangesPath 1.4 +1 -1 apache/htdocs/manual/invoking.html Index: invoking.html === RCS file: /export/home/cvs/apache/htdocs/manual/invoking.html,v retrieving revision 1.3 retrieving revision 1.4 diff -C3 -r1.3 -r1.4 *** invoking.html 1996/11/21 15:08:32 1.3 --- invoking.html 1996/12/01 06:38:11 1.4 *** *** 39,45 -v Print the version of httpd, and then exit. ! -h Give a list of directives together with expected arguments and places where the directive is valid --- 39,45 -v Print the version of httpd, and then exit. ! -h Give a list of directives together with expected arguments and places where the directive is valid 1.3 +9 -9 apache/htdocs/manual/new_features_1_0.html Index: new_features_1_0.html === RCS file: /export/home/cvs/apache/htdocs/manual/new_features_1_0.html,v retrieving revision 1.2 retrieving revision 1.3 diff -C3 -r1.2 -r1.3 *** new_features_1_0.html 1996/11/21 10:47:14 1.2 --- new_features_1_0.html 1996/12/01 06:38:11 1.3 *** *** 15,26 the source directory. Because the core code has changed so significantly, there are certain liberties that earlier versions of Apache (and the NCSA daemon) took that Apache 1.0 is pickier about - ! please check the compatibility notes if you have any problems. API for server extensions --- see below for a brief sermon on ! philosophy, or see src/API.html for an actual overview. Most server functionality (including includes, CGI, and most forms of access control) are actually implemented as API-conformant modules; you can also do other neat stuff (we've --- 15,26 the source directory. Because the core code has changed so significantly, there are certain liberties that earlier versions of Apache (and the NCSA daemon) took that Apache 1.0 is pickier about - ! please check the compatibility notes if you have any problems. API for server extensions --- see below for a brief sermon on ! philosophy, or see src/API.html for an actual overview. Most server functionality (including includes, CGI, and most forms of access control) are actually implemented as API-conformant modules; you can also do other neat stuff (we've *** *** 28,34 track click-trails using the http://home.netscape.com/newsref/std/cookie_spec.html";>Netscape cookie mechanism, for visitors who come in through Netscape ! clients). Modules can also be loaded dynamically using GNU DLD. The API is not yet quite stable (see src/TODO for some possible --- 28,34 track click-trails using the http://home.netscape.com/newsref/std/cookie_spec.html";>Netscape cookie mechanism, for visitors who come in through Netscape ! clients). Modules can also be loaded dynamically using GNU DLD. The API is not yet quite stable (see src/TODO for some possible *** *** 94,100 ! Configurable logging module --- this is a replacement for the standard plane-jane Common Log Format code, which supports a LogFormat directive which allows you to control the formatting of entries in the TransferLog, and add some new items if you like (in --- 94,100 ! Configurable logging module --- this is a replacement for the standard plane-jane Common Log Format code, which supports a LogFormat directive which allows you to control the formatting of entries in the TransferLog, and add some new items if you like (in *** *** 105,115 Other features of Apache ! Dynamically loading modules using GNU DLD ! Imagemap Module ! Multiple DirectoryIndex filenames ! "Send as is" file types ! XBITHACK last modified --- 105,115 Other features of Apache ! Dynamically loading modules using GNU DLD ! Imagemap Module ! Multiple DirectoryIndex filenames ! "Send as is" file types ! XBITHACK last modified 1.4 +21 -21apache/htdocs/manual/new_features_1_1.html Index: new_features_1_1.html === RCS file: /export/home/cvs/apache/htdocs/manual/new_features_1_1.html,v retrieving revision 1.3 retrieving revision 1.4 diff -C3 -r
cvs commit: apache/htdocs/manual expand.pl
akosut 96/11/30 22:18:15 Added: htdocs/manual expand.pl Log: Add expand.pl Perl script to expand out SSI references in the manual, so the end user doesn't need to have them turned on for .html files.
cvs commit: apache CHANGES README
akosut 96/11/30 21:38:17 Modified:. CHANGES README Log: Update top-level CHANGES and README files. Revision ChangesPath 1.6 +124 -80 apache/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache/CHANGES,v retrieving revision 1.5 retrieving revision 1.6 diff -C3 -r1.5 -r1.6 *** CHANGES 1996/11/03 20:57:23 1.5 --- CHANGES 1996/12/01 05:38:15 1.6 *** *** 1,85 New features with this release, as extensions of the Apache functionality ! (see also more detailed CHANGES file) in the source directory. For more ! information, see http://www.apache.org/docs/1.1/ In addition to a number of bug fixes and internal performance ! enhancements, Apache 1.1 has the following specific new user features: ! *) Caching Proxy Server !Apache can now act as an HTTP proxy server, allowing clients !behind firewalls to use the server to access the outside world. In !addition, it can cache documents it proxies, speeding up access to !frequently requested documents. ! ! *) Filetype-based Script "Actions" !You can now run CGI scripts whenever a file of a certion type is !requested. Makes it much easier to execute scripts that process !files. ! ! *) Support for Keep-Alive Persistent Connections !Apache now has (optional) support for persistent connections, as !defined by the HTTP/1.1 draft. This protocol, supported by a !number of current HTTP servers and browsers (including Netscape !Navigator 2.0) has been shown to increase speed of document !transfer by up to 50% in certain cases. ! ! *) Customizable CGI Environment Variables (not in this release) !New PassEnv and SetEnv directives allow you to modify the !environment variables passed to CGI scripts ! ! *) CERN Metafile Support !Now emulates the CERN httpd's support for metafiles containing !additional HTTP headers to be supplied with a document. ! ! *) Redirect Now Usable in .htaccess Files !The Redirect directive can now be used in .htaccess files when the !FileInfo directive has been set on. This allows users to redirect !parts of their directories without requiring CGI scripts ! ! *) Improved UserDir Directive (not in this release) !Now supports the ability to point user's files (as specificed by !URLs beginning with the "~" character) at directories other than !those specified by the Unix password file. ! ! *) Minimal DNS Now Runtime Option !New HostnameLookups server configuration directive can be used to !turn On or Off DNS lookups. This supercedes the -DMINIMAL_DNS !compile-time configuration option. ! ! *) Listen to Multiple Addresses and Ports !Using the new Listen directive, Apache can listen to more than one !port and IP address, using the same configuration set. ! ! *) Anonymous HTTP Logins !New options allow you to allow, using Basic HTTP Authentication, !anonymous logins, like those of FTP. This allows you to collect !email addresses of people accessing your site. ! ! *) File Owner Avialable to Included CGI Scripts !Server-side includes that call CGI scripts will now set a !USER_NAME environment variable that contains the owner of the file !which included it. ! ! *) Improved Icons !Thanks to Kevin Hughes, Apache's nifty color GIF icons for !directory listings have been updated. In addition, the Powered by !Apache (apache_pb.gif) logo has been included. ! ! *) Log Rotation ! New support utility to allow log rotation without shutting down the ! server. See support/rotatelogs.c. ! ! NEW AUTHENTICATION MODULES: ! ! Note: These modules are not compiled into the server by default, as ! they require special support on the host system. They must be enabled ! specifically in the Configuration file. ! ! *) Support for Unix DB Authentication - mod_db.c !In addition to DBM support, Apache now contains optional support !for Berkeley DB databases. ! ! *) mSQL Database Authentication - mod_auth_msql.html !Support for the use of mSQL databases for user authentication via !HTTP is now supported. --- 1,129 +OVERVIEW OF NEW FEATURES IN APACHE 1.2 + New features with this release, as extensions of the Apache functionality ! For more information, see the documentation included with this release ! (htdocs/manual/) or http://www.apache.org/docs/ In addition to a number of bug fixes and internal performance ! enhancements, Apache 1.2 h
cvs commit: apache/src mod_dir.c
akosut 96/11/28 09:26:30 Modified:src mod_dir.c Log: Fix directory indexing so that if an index file encounters an error that is not 404, it returns that error instead of a directory index. This was causing unsafe behavior. Reviewed by: Brian Behlendorf, Aram Mirzadeh, Paul Sutton Revision ChangesPath 1.16 +16 -0 apache/src/mod_dir.c Index: mod_dir.c === RCS file: /export/home/cvs/apache/src/mod_dir.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C3 -r1.15 -r1.16 *** mod_dir.c 1996/11/03 20:48:33 1.15 --- mod_dir.c 1996/11/28 17:26:29 1.16 *** *** 768,773 --- 768,774 (dir_config_rec *)get_module_config (r->per_dir_config, &dir_module); const char *names_ptr = d->index_names ? d->index_names : DEFAULT_INDEX; int allow_opts = allow_options (r); + int error_notfound = 0; if (r->uri[0] == '\0' || r->uri[strlen(r->uri)-1] != '/') { char* ifile; *** *** 808,815 --- 809,831 return OK; } + /* If the request returned something other than 404 (or 200), + * it means the module encountered some sort of problem. To be + * secure, we should return the error, rather than create + * along a (possibly unsafe) directory index. + * + * So we store the error, and if none of the listed files + * exist, we return the last error response we got, instead + * of a directory listing. + */ + if (rr->status && rr->status != 404 && rr->status != 200) + error_notfound = rr->status; + destroy_sub_req (rr); } + + if (error_notfound) + return error_notfound; if (r->method_number != M_GET) return NOT_IMPLEMENTED;
cvs commit: apache/htdocs/manual/misc client_block_api.html
akosut 96/11/28 00:34:05 Modified:htdocs/manual/misc client_block_api.html Log: Update *_client_block documentation to match Roy's changes. Revision ChangesPath 1.3 +17 -4 apache/htdocs/manual/misc/client_block_api.html Index: client_block_api.html === RCS file: /export/home/cvs/apache/htdocs/manual/misc/client_block_api.html,v retrieving revision 1.2 retrieving revision 1.3 diff -C3 -r1.2 -r1.3 *** client_block_api.html 1996/11/21 09:55:47 1.2 --- client_block_api.html 1996/11/28 08:34:05 1.3 *** *** 26,32 The New API Functions !int setup_client_block (request_rec *); int should_client_block (request_rec *); long get_client_block (request_rec *, char *buffer, int buffer_size); --- 26,32 The New API Functions !int setup_client_block (request_rec *, int read_policy); int should_client_block (request_rec *); long get_client_block (request_rec *, char *buffer, int buffer_size); *** *** 35,41 Call setup_client_block() near the beginning of the request handler. This will set up all the neccessary properties, and will return either OK, or an error code. If the latter, ! the module should return that error code. When you are ready to possibly accept input, call should_client_block(). --- 35,54 Call setup_client_block() near the beginning of the request handler. This will set up all the neccessary properties, and will return either OK, or an error code. If the latter, ! the module should return that error code. The second parameter ! selects the policy to apply if the request message indicates a ! body, and how a chunked ! transfer-coding sho uld be interpreted. Choose one of ! ! REQUEST_NO_BODY Send 413 error if message has any body ! REQUEST_CHUNKED_ERRORSend 411 error if body without Content-Length ! REQUEST_CHUNKED_DECHUNK If chunked, remove the chunks for me. ! REQUEST_CHUNKED_PASS Pass the chunks to me without removal. ! ! In order to use the last two options, the caller MUST provide a buffer ! large enough to hold a chunk-size line, including any extensions. ! ! When you are ready to possibly accept input, call should_client_block(). *** *** 52,59 buffer and its size. It will put data into the buffer (not neccessarily the full buffer, in the case of chunked inputs), and return the length of ! the input block. When it is done reading, it will return 0, and ! the module should proceed. --- 65,72 buffer and its size. It will put data into the buffer (not neccessarily the full buffer, in the case of chunked inputs), and return the length of ! the input block. When it is done reading, it will ! return 0 if EOF, or -1 if there was an error.
cvs commit: apache/htdocs/manual index.html
akosut 96/11/28 00:21:37 Modified:htdocs/manual index.html Log: Make the images and links here make some sense... no use having two links to the page you've linking from. Revision ChangesPath 1.4 +3 -7 apache/htdocs/manual/index.html Index: index.html === RCS file: /export/home/cvs/apache/htdocs/manual/index.html,v retrieving revision 1.3 retrieving revision 1.4 diff -C3 -r1.3 -r1.4 *** index.html1996/11/21 14:41:14 1.3 --- index.html1996/11/28 08:21:37 1.4 *** *** 5,11 ! Apache User's Guide --- 5,11 ! Apache User's Guide *** *** 40,53 Performance hints for heavily loaded web servers. ! Apache 1.0 documentation (Out of date) ! ! ! ! - --- 40,49 Performance hints for heavily loaded web servers. ! !
cvs commit: apache/htdocs/manual/mod core.html
akosut 96/11/28 00:08:20 Modified:htdocs/manual new_features_1_2.html htdocs/manual/mod core.html Log: Update Directory/Location/Files docs. Revision ChangesPath 1.7 +7 -5 apache/htdocs/manual/new_features_1_2.html Index: new_features_1_2.html === RCS file: /export/home/cvs/apache/htdocs/manual/new_features_1_2.html,v retrieving revision 1.6 retrieving revision 1.7 diff -C3 -r1.6 -r1.7 *** new_features_1_2.html 1996/11/28 07:42:15 1.6 --- new_features_1_2.html 1996/11/28 08:08:17 1.7 *** *** 46,58 number of powerful new features, such as the ability to set variables and use conditional HTML. ! File-based and Regex-enabled Directive ! Sections ! The newsection allows directives to be ! enabled based on full filename, not just directory and URL. In addition, sections can appear in .htaccess files. , along with ! and , can also now be based on regular expressions, not just simple prefix matching. --- 46,60 number of powerful new features, such as the ability to set variables and use conditional HTML. ! File-based and Regex-enabled ! Directive Sections ! The new ! ! section allows directives to be enabled based on full filename, not just directory and URL. In addition, sections can appear in .htaccess files. , along with ! ! and , can also now be based on regular expressions, not just simple prefix matching. 1.7 +71 -17apache/htdocs/manual/mod/core.html Index: core.html === RCS file: /export/home/cvs/apache/htdocs/manual/mod/core.html,v retrieving revision 1.6 retrieving revision 1.7 diff -C3 -r1.6 -r1.7 *** core.html 1996/11/28 07:42:16 1.6 --- core.html 1996/11/28 08:08:19 1.7 *** *** 77,88 ! Syntax: ! Context: server config, virtualhost, directory ! Status: Core. ! The File container applies the directives within to files ! which match the regexp. --- 77,119 ! Syntax: ! ... ! Context: server config, virtual host, htaccess ! Status: core ! Compatibility: only available in Apache ! 1.2 and above. ! ! Thedirective provides for access control by ! filename. It is comparable to the directive. Directives that ! apply to the filename given should be listed ! within.directive and ! directives. It ! should be matched with a sections are processed in the ! order they appear in the configuration file, after the ! sections and .htaccess files are ! read, but before sections. ! The filename argument should include a filename, or a ! wildcard string, where `?' matches any single character, and `*' matches any ! sequences of characters. Extended regular expressions can also be used, with the addition of ! the ~ character. For example: ! ! ! ! ! ! would match most common Internet graphics formats. ! ! Note that unlike and sections, ! sections can be used inside .htaccess ! files. This allows users to control access to their own files, at a ! file-by-file level. When used in an .htaccess file, if the ! filename does not begin with a / character, ! the directory being applied will be prefixed automatically. *** *** 303,310 directive ! Syntax: ... ! Context: server config, virtual host Status: Core. --- 334,340directive ! Syntax: ... Context: server config, virtual host Status: Core. *** *** 314,325 context may be used. Directory is either the full path to a directory, or a wildcard string. In a wildcard string, `?' matches any single character, and `*' matches any sequences of characters. Example: ! ! !! Options Indexes FollowSymLinks ! ! If multiple directory sections match the directory (or its parents) containing a document, then the directives are applied in the order of shortest match first, interspersed with the directives from the .htaccess files. For example, with --- 344,366 context may be used. Directory is either the full path to a directory, or a wildcard string. In a wildcard string, `?' matches any single character, and `*' matches any sequences of cha
cvs commit: apache/htdocs/manual/mod core.html directives.html mod_cgi.html mod_log_config.html mod_usertrack.html
akosut 96/11/27 23:42:19 Modified:htdocs/manual new_features_1_2.html htdocs/manual/mod core.html directives.html mod_cgi.html mod_log_config.html mod_usertrack.html Log: Some cleanup (the directives go in ALPHABETICAL ORDER, please), plus adding of some docs that Paul Sutton sent to the list on October 10th. Revision ChangesPath 1.6 +2 -2 apache/htdocs/manual/new_features_1_2.html Index: new_features_1_2.html === RCS file: /export/home/cvs/apache/htdocs/manual/new_features_1_2.html,v retrieving revision 1.5 retrieving revision 1.6 diff -C3 -r1.5 -r1.6 *** new_features_1_2.html 1996/11/28 06:56:43 1.5 --- new_features_1_2.html 1996/11/28 07:42:15 1.6 *** *** 109,115 address or hostname. This lets a single vhost handles requests for multiple IPs or hostnames. ! CGI Debugging Environment ScriptLog allows you to now set up a log that records all input and output to failed CGI scripts. This includes environment variables, input headers, POST data, output, and more. This makes CGI --- 109,115 address or hostname. This lets a single vhost handles requests for multiple IPs or hostnames. ! CGI Debugging Environment ScriptLog allows you to now set up a log that records all input and output to failed CGI scripts. This includes environment variables, input headers, POST data, output, and more. This makes CGI *** *** 140,146 Optional headers module An optional module is included which can set arbitrary headers in responses. ! Conditional Config Directives A newsection allows directives to be enabled only if a given module is loaded into the server. --- 140,146 Optional headers module An optional module is included which can set arbitrary headers in responses. ! Conditional Config Directives A new section allows directives to be enabled only if a given module is loaded into the server. 1.6 +44 -14apache/htdocs/manual/mod/core.html Index: core.html === RCS file: /export/home/cvs/apache/htdocs/manual/mod/core.html,v retrieving revision 1.5 retrieving revision 1.6 diff -C3 -r1.5 -r1.6 *** core.html 1996/11/26 06:52:26 1.5 --- core.html 1996/11/28 07:42:16 1.6 *** *** 14,41 ! ! DocumentRoot ErrorDocument ErrorLog Group IdentityCheck KeepAlive KeepAliveTimeout --- 14,39 ! RLimitCPU ! RLimitMEM ! RLimitNPROC AccessConfig AccessFileName + AddModule AllowOverride AuthName AuthType BindAdress + ClearModuleList DefaultType DocumentRoot ErrorDocument ErrorLog + Group IdentityCheck + *** *** 50,55 --- 48,55 Port require ResourceConfig + Satisfy + ServerAdmin ServerAlias ServerName *** *** 87,98 ! Syntax: ! Context: server config, virtual host, directory ! Status: core ! Directives within the container are activated ! if the specified module is configured into the server. --- 87,128 ! Syntax: ... ! ! Default: None ! Context: all ! Status: Core ! Compatibility: ScriptLog is only available in 1.2 and ! later. ! ! ! ! The... ! section is used to mark directives that are conditional. The ! directives within an IfModule section are only ! processed if the test is true. If test ! is false, everything between the start and end markers ! is ignored. ! ! The test in thesection directive ! can be one of two forms: ! ! ! module name ! !module name ! ! ! In the former case, the directives between the start and end markers ! are only processed if the module named module name is compiled ! in to Apache. The second format reverses the test, and only processes ! the directives if module name is not compiled in. ! ! The module name argument is a module name as given as the file ! name of the module, at the time it was compiled. For example, ! mod_rewrite.c. ! sections are nestable, which can be used to impleme
cvs commit: apache/htdocs/manual/mod mod_rewrite.html
akosut 96/11/27 23:09:19 Added: htdocs/manual/mod mod_rewrite.html Log: Add docs for mod_rewrite
cvs commit: apache/htdocs/manual/mod mod_fastcgi.html
akosut 96/11/27 22:56:45 Modified:htdocs/manual new_features_1_2.html htdocs/manual/mod mod_fastcgi.html Log: Fix FastCGI link and trivia. Revision ChangesPath 1.5 +1 -1 apache/htdocs/manual/new_features_1_2.html Index: new_features_1_2.html === RCS file: /export/home/cvs/apache/htdocs/manual/new_features_1_2.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C3 -r1.4 -r1.5 *** new_features_1_2.html 1996/11/27 09:37:11 1.4 --- new_features_1_2.html 1996/11/28 06:56:43 1.5 *** *** 74,80 module can provide powerful URL mapping, using regular expressions. There's nothing this module can't do! ! Optional FastCGI Module Included FastCGI is a high-performance alternative to CGI. FastCGI gets its speed by having the Web server keep the application processes running between requests. So, unlike CGI, you do not have the overhead of starting up a new process and doing application initialization (e.g. connecting to a database) each time somebody requests --- 74,80 module can provide powerful URL mapping, using regular expressions. There's nothing this module can't do! ! Optional FastCGI Module Included FastCGI is a high-performance alternative to CGI. FastCGI gets its speed by having the Web server keep the application processes running between requests. So, unlike CGI, you do not have the overhead of starting up a new process and doing application initialization (e.g. connecting to a database) each time somebody requests 1.3 +1 -9 apache/htdocs/manual/mod/mod_fastcgi.html Index: mod_fastcgi.html === RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_fastcgi.html,v retrieving revision 1.2 retrieving revision 1.3 diff -C3 -r1.2 -r1.3 *** mod_fastcgi.html 1996/11/21 10:30:47 1.2 --- mod_fastcgi.html 1996/11/28 06:56:45 1.3 *** *** 20,40 applications in a variety of languages, including Perl, C, C++, Java, and Python. - mod_fastcgi is not compiled into the server by - default. To use mod_fastcgi you first copy - src/mod_fastcgi.c from this kit into your Apache server's - source directory. Then you add the following line to the server build - Configuration file: - - Module fastcgi_modulemod_fastcgi.o - - Any request for a file with the MIME type application/x-httpd-fcgi will be processed by mod_fastcgi. For the request to succeed, the server's configuration must have started the application (executable file) using the AppClass directive. Summary --- 20,32 applications in a variety of languages, including Perl, C, C++, Java, and Python. Any request for a file with the MIME type application/x-httpd-fcgi will be processed by mod_fastcgi. For the request to succeed, the server's configuration must have started the application (executable file) using the AppClass directive. + This module is included optionally in Apache 1.2 and later. Summary
cvs commit: apache/src Configuration.tmpl Configure conf.h
akosut 96/10/21 21:21:47 Modified:src Configuration.tmpl Configure conf.h Log: Remove the BADMMAP rule, and fix HP-UX shared memory (finally). Revision ChangesPath 1.46 +2 -8 apache/src/Configuration.tmpl Index: Configuration.tmpl === RCS file: /export/home/cvs/apache/src/Configuration.tmpl,v retrieving revision 1.45 retrieving revision 1.46 diff -C3 -r1.45 -r1.46 *** Configuration.tmpl1996/10/22 00:03:06 1.45 --- Configuration.tmpl1996/10/22 04:21:43 1.46 *** *** 1,4 ! # $Id: Configuration.tmpl,v 1.45 1996/10/22 00:03:06 jim Exp $ # Config file for the Apache httpd. # Configuration.tmpl is the template for Configuration. Configuration should --- 1,4 ! # $Id: Configuration.tmpl,v 1.46 1996/10/22 04:21:43 akosut Exp $ # Config file for the Apache httpd. # Configuration.tmpl is the template for Configuration. Configuration should *** *** 53,59 # functions. The format is: Rule RULE=value # # At present, only the following RULES are known: WANTHSREGEX, SOCKS4, ! # STATUS, BADMMAP and IRIXNIS. # # For all Rules, if set to "yes", then Configure knows we want that # capability and does what is required to add it in. If set to "default" --- 53,59 # functions. The format is: Rule RULE=value # # At present, only the following RULES are known: WANTHSREGEX, SOCKS4, ! # STATUS and IRIXNIS. # # For all Rules, if set to "yes", then Configure knows we want that # capability and does what is required to add it in. If set to "default" *** *** 94,107 # not use this one by setting WANTHSREGEX to 'no' or commenting # out the Rule. The "default" action is "no" unless overruled # by OS specifics - # - # BADMMAP: - # If you find that your OS can't cope with mmap (compiles OKAY but refuses - # to run and moans "httpd: Could not mmap memory" .. or similar) set - # this to 'yes'. Rule WANTHSREGEX=default - Rule BADMMAP=default # Module configuration --- 94,101 1.29 +3 -23 apache/src/Configure Index: Configure === RCS file: /export/home/cvs/apache/src/Configure,v retrieving revision 1.28 retrieving revision 1.29 diff -C3 -r1.28 -r1.29 *** Configure 1996/10/22 00:03:06 1.28 --- Configure 1996/10/22 04:21:44 1.29 *** *** 1,5 #!/bin/sh ! # $Id: Configure,v 1.28 1996/10/22 00:03:06 jim Exp $ trap 'rm $tmpfile; exit' 0 1 2 3 15 # Apache configuration script, first cut --- rst. --- 1,5 #!/bin/sh ! # $Id: Configure,v 1.29 1996/10/22 04:21:44 akosut Exp $ trap 'rm $tmpfile; exit' 0 1 2 3 15 # Apache configuration script, first cut --- rst. *** *** 112,118 RULE_WANTHSREGEX=`./CutRule WANTHSREGEX $file` RULE_STATUS=`./CutRule STATUS $file` RULE_SOCKS4=`./CutRule SOCKS4 $file` - RULE_BADMMAP=`./CutRule BADMMAP $file` RULE_IRIXNIS=`./CutRule IRIXNIS $file` # --- 112,117 *** *** 123,129 # options) as required. Setting CC and OPTIM here has no effect # if they were set in Configure. # ! # Also, we set DEF_WANTHSREGEX and DEF_BADMMAP to the appropriate # value for each platform. # # As more PLATFORMs are added to Configuration.tmpl, be sure to --- 122,128 # options) as required. Setting CC and OPTIM here has no effect # if they were set in Configure. # ! # Also, we set DEF_WANTHSREGEX and to the appropriate # value for each platform. # # As more PLATFORMs are added to Configuration.tmpl, be sure to *** *** 143,149 LIBS="$LIBS -lposix -lbsd" LFLAGS="$LFLAGS -s" DEF_WANTHSREGEX=no - DEF_BADMMAP=no ;; *-ibm-aix*) OS='IBM AIX' --- 142,147 *** *** 172,178 ;; *-sgi-irix*) DEF_WANTHSREGEX=yes - DEF_BADMMAP=no DBM_LIB="" if [ "$RULE_IRIXNIS" = "yes" ]; then OS='SGI IRIX w/NIS' --- 170,175 *** *** 234,240 LIBS="$LIBS -lsocket -lmalloc -lprot" OSBPRINTF="-K noinline" DEF_WANTHSREGEX=no - DEF_BADMMAP=no ;; *-solaris2*) OS='Solaris 2' --- 231,236 *** *** 276,282 esac # ! # See if we need to override WANTHSREGEX or BADMMAP # if [ "$RULE_WANTHSREGEX" = "default" ]; then if [ "x$DEF_WANTHSREGEX" = "x" ]; then --- 272,278 esac # ! # See if we need to override WANTHSREGEX # if [ "$RULE_WANTHSREGEX" = "de
cvs commit: apache/src http_protocol.c httpd.h
akosut 96/09/02 17:31:29 Modified:src http_protocol.c httpd.h Log: Upgrade protocol version to 1.1. Clean up persistent connection support a bit. Reviewed by: Rob Hartill, Jim Jagielski, Chuck Murcko, Roy T. Fielding Revision ChangesPath 1.45 +14 -24apache/src/http_protocol.c Index: http_protocol.c === RCS file: /export/home/cvs/apache/src/http_protocol.c,v retrieving revision 1.44 retrieving revision 1.45 diff -C3 -r1.44 -r1.45 *** http_protocol.c 1996/08/24 16:04:54 1.44 --- http_protocol.c 1996/09/03 00:31:26 1.45 *** *** 50,56 * */ ! /* $Id: http_protocol.c,v 1.44 1996/08/24 16:04:54 ben Exp $ */ /* * http_protocol.c --- routines which directly communicate with the --- 50,56 * */ ! /* $Id: http_protocol.c,v 1.45 1996/09/03 00:31:26 akosut Exp $ */ /* * http_protocol.c --- routines which directly communicate with the *** *** 284,316 { char *conn = table_get (r->headers_in, "Connection"); char *length = table_get (r->headers_out, "Content-length"); if ((r->server->keep_alive > r->connection->keepalives) && (r->server->keep_alive_timeout > 0) && (r->header_only || length || ((r->proto_num >= 1001) && (r->byterange > 1 || (r->chunked = 1 && (!find_token(r->pool, conn, "close")) && ! #ifdef FORHTTP11 ! ((proto_num >= 1001) || find_token(r->pool, conn, "keep-alive"))) { ! #else ! (find_token(r->pool, conn, "keep-alive"))) { ! #endif char header[26]; int left = r->server->keep_alive - r->connection->keepalives; r->connection->keepalive = 1; r->connection->keepalives++; ! #ifdef FORHTTP11 ! if (r->proto_num < 1001) { ! #endif sprintf(header, "timeout=%d, max=%d", r->server->keep_alive_timeout, left); ! table_merge (r->headers_out, "Connection", "Keep-Alive"); ! table_set (r->headers_out, "Keep-Alive", pstrdup(r->pool, header)); ! #ifdef FORHTTP11 } - #endif return 1; } --- 284,311 { char *conn = table_get (r->headers_in, "Connection"); char *length = table_get (r->headers_out, "Content-length"); + int ka_sent; if ((r->server->keep_alive > r->connection->keepalives) && (r->server->keep_alive_timeout > 0) && (r->header_only || length || ((r->proto_num >= 1001) && (r->byterange > 1 || (r->chunked = 1 && (!find_token(r->pool, conn, "close")) && ! ((ka_sent = find_token(r->pool, conn, "keep-alive")) || ! r->proto_num >= 1001)) { char header[26]; int left = r->server->keep_alive - r->connection->keepalives; r->connection->keepalive = 1; r->connection->keepalives++; ! /* If they sent a Keep-Alive token, send one back */ ! if (ka_sent) { sprintf(header, "timeout=%d, max=%d", r->server->keep_alive_timeout, left); ! rputs("Connection: Keep-Alive\015\012", r); ! rvputs(r, "Keep-Alive: ", header, "\015\012", NULL); } return 1; } *** *** 320,326 * as HTTP/1.0, but pass our request along with our HTTP/1.1 tag * to a HTTP/1.1 client. Better safe than sorry. */ ! table_merge (r->headers_out, "Connection", "close"); return 0; } --- 315,321 * as HTTP/1.0, but pass our request along with our HTTP/1.1 tag * to a HTTP/1.1 client. Better safe than sorry. */ ! rputs("Connection: close\015\012", r); return 0; } *** *** 1274,1293 if (etag) bvputs(c->client, "ETag: ", etag, "\015\012", NULL); if (cloc) bvputs(c->client, "Content-Location: ", cloc, "\015\012", NULL); ! if (set_keepalive(r)) { ! #ifdef FORHTTP11 ! if (r->proto_num < 1001) ! #endif ! bputs("Connection: Keep-Alive\015\012", c->client); ! } ! else bputs("Connection: close\015\012", c->client); bputs("\015\012", c->client); return; } ! /* We don't want persistent connections here, for several reasons. ! * Most importantly, if there's been an error, we don't want ! * it screwing up the next request. */ bputs("Connection: close\015\012", c->client); --- 1269,1283 if (etag) bvputs(c->client, "ETag: ", etag, "\015\012", NULL); if (cloc) bvputs(c->client, "Content-Location: ", cloc, "\015\012", NULL); ! set_keepalive(r); bputs("\01
cvs commit: apache/src mod_log_config.c
akosut 96/08/26 20:34:48 Modified:src mod_log_config.c Log: Fix LogFormat so it is passed onto virtual hosts by default. Revision ChangesPath 1.11 +3 -3 apache/src/mod_log_config.c Index: mod_log_config.c === RCS file: /export/home/cvs/apache/src/mod_log_config.c,v retrieving revision 1.10 retrieving revision 1.11 diff -C3 -r1.10 -r1.11 *** mod_log_config.c 1996/08/20 11:51:15 1.10 --- mod_log_config.c 1996/08/27 03:34:45 1.11 *** *** 50,56 * */ ! /* $Id: mod_log_config.c,v 1.10 1996/08/20 11:51:15 paul Exp $ */ /* * This is module implements the TransferLog directive (same as the --- 50,56 * */ ! /* $Id: mod_log_config.c,v 1.11 1996/08/27 03:34:45 akosut Exp $ */ /* * This is module implements the TransferLog directive (same as the *** *** 586,595 { multi_log_state *base = (multi_log_state *)basev; multi_log_state *add = (multi_log_state *)addv; - multi_log_state *new = - (multi_log_state *)palloc (p, sizeof(multi_log_state)); add->server_config_logs = base->config_logs; return add; } --- 586,595 { multi_log_state *base = (multi_log_state *)basev; multi_log_state *add = (multi_log_state *)addv; add->server_config_logs = base->config_logs; + if (!add->default_format) + add->default_format = base->default_format; return add; }
Re: ServerPath?
On Sat, 24 Aug 1996, Ben Laurie wrote: > Can someone explain the ServerPath directive to me in words of one syllable, > please? I can try (but it will be hard, and more hard to parse than if I could use words more than one beat long). When you have a host that's based on Host:, and get it the old way, with no Host:, there is no way to tell what host it is, and you will get the main host. With the line you talk about (I can't use it, for it is more than one beat long), you can skip this, and make your host work for all, both old and new ways. If you put this line in your file, with "/foo", and then get "/foo" the old and new ways, you will get the right page. And you can still use "/" the new way. Do you get it now? I doubt it: since I can't use real words, I don't make much sense. Hope this helps. Thanks! -- Alexei Kosut <[EMAIL PROTECTED]>The Apache HTTP Server http://www.nueva.pvt.k12.ca.us/~akosut/ http://www.apache.org/
cvs commit: apache/src mod_rewrite.c mod_rewrite.h
akosut 96/08/23 09:16:55 Modified:src mod_rewrite.c mod_rewrite.h Log: Update mod_rewrite to version 2.2 Submitted by: Ralf S. Engelschall Revision ChangesPath 1.4 +96 -70apache/src/mod_rewrite.c 1.5 +42 -24apache/src/mod_rewrite.h
cvs commit: apache/src Configuration.tmpl Configure conf.h
akosut 96/08/21 11:40:05 Modified:src Configuration.tmpl Configure conf.h Log: Add configuration settings for UXP/DS Submitted by: Fumio Moriya <[EMAIL PROTECTED]> Revision ChangesPath 1.32 +2 -1 apache/src/Configuration.tmpl 1.13 +6 -1 apache/src/Configure 1.35 +16 -1 apache/src/conf.h
cvs commit: apache/src util_script.c
akosut 96/08/20 13:18:18 Modified:src util_script.c Log: Fix directory index sizes. Submitted by: Joel Shprentz Revision ChangesPath 1.22 +5 -3 apache/src/util_script.c
cvs commit: apache/src http_config.c http_core.c http_main.c http_protocol.c httpd.h
akosut 96/08/19 11:33:03 Modified:src http_config.c http_core.c http_main.c http_protocol.c httpd.h Log: Allow for multiple IP addresses per virtual host. Submitted by: Dean Gaudet Reviewed by: Alexei Kosut, Mark J Cox Revision ChangesPath 1.20 +86 -6 apache/src/http_config.c Index: http_config.c === RCS file: /export/home/cvs/apache/src/http_config.c,v retrieving revision 1.19 retrieving revision 1.20 diff -C3 -r1.19 -r1.20 *** http_config.c 1996/08/15 13:56:53 1.19 --- http_config.c 1996/08/19 18:32:56 1.20 *** *** 685,693 --- 685,763 * are with the command table in http_core.c. */ + /* + * Parses a host of the form [:port] + * paddr is used to create a list in the order of input + * **paddr is the ->next pointer of the last entry (or s->addrs) + * *paddr is the variable used to keep track of **paddr between calls + */ + static void get_addresses (pool *p, char *w, server_addr_rec ***paddr) + { + struct hostent *hep; + unsigned long my_addr; + int ports; + server_addr_rec *sar; + char *t; + int i; + + if( *w == 0 ) return; + + t = strchr(w, ':'); + ports = 0; + if (t != NULL && strcmp(t+1, "*") != 0) ports = atoi(t+1); + + if (t != NULL) *t = '\0'; + if (strcmp(w, "*") == 0) { + sar = pcalloc( p, sizeof( server_addr_rec ) ); + **paddr = sar; + *paddr = &sar->next; + sar->host_addr.s_addr = htonl(INADDR_ANY); + sar->host_port = ports; + sar->virthost = pstrdup(p, w); + if (t != NULL) *t = ':'; + return; + } + + #ifdef DGUX + my_addr = inet_network(w); + #else + my_addr = inet_addr(w); + #endif + if (my_addr != ((unsigned long) 0x)) { + sar = pcalloc( p, sizeof( server_addr_rec ) ); + **paddr = sar; + *paddr = &sar->next; + sar->host_addr.s_addr = my_addr; + sar->host_port = ports; + sar->virthost = pstrdup(p, w); + if (t != NULL) *t = ':'; + return; + } + + hep = gethostbyname(w); + + if ((!hep) || (hep->h_addrtype != AF_INET || !hep->h_addr_list[0])) { + fprintf (stderr, "Cannot resolve host name %s --- exiting!\n", w); + exit(1); + } + + for( i = 0; hep->h_addr_list[i]; ++i ) { + sar = pcalloc( p, sizeof( server_addr_rec ) ); + **paddr = sar; + *paddr = &sar->next; + sar->host_addr = *(struct in_addr *)hep->h_addr_list[i]; + sar->host_port = ports; + sar->virthost = pstrdup(p, w); + } + + if (t != NULL) *t = ':'; + } + server_rec *init_virtual_host (pool *p, char *hostname) { server_rec *s = (server_rec *)pcalloc (p, sizeof (server_rec)); + char *t; + server_addr_rec **addrs; #ifdef RLIMIT_NOFILE struct rlimit limits; *** *** 708,719 s->timeout = 0; s->keep_alive_timeout = 0; s->keep_alive = -1; ! s->host_addr.s_addr = get_virthost_addr (hostname, &s->host_port); ! s->port = s->host_port; /* set them the same, by default */ s->next = NULL; s->is_virtual = 1; - s->virthost = pstrdup(p, hostname); s->names = NULL; s->module_config = create_empty_config (p); --- 778,798 s->timeout = 0; s->keep_alive_timeout = 0; s->keep_alive = -1; ! /* start the list of addreses */ ! addrs = &s->addrs; ! while( hostname[0] ) { ! get_addresses( p, getword_conf( p, &hostname ), &addrs ); ! } ! /* terminate the list */ ! *addrs = NULL; ! if( s->addrs == NULL ) { ! fprintf( stderr, "virtual host must have at least one address\n" ); ! exit(1); ! } ! s->port = s->addrs->host_port; /* set them the same, by default */ s->next = NULL; s->is_virtual = 1; s->names = NULL; s->module_config = create_empty_config (p); *** *** 804,818 s->keep_alive_timeout = DEFAULT_KEEPALIVE_TIMEOUT; s->keep_alive = DEFAULT_KEEPALIVE; s->next = NULL; ! s->host_addr.s_addr = htonl (INADDR_ANY); /* NOT virtual host; * don't match any real network * interface. */ ! s->host_port = 0; /* matches any port */ s->module_config = create_ser
cvs commit: apache/src mod_log_config.c
akosut 96/08/19 11:12:37 Modified:src mod_log_config.c Log: Add CustomLog capability to mod_log_config. Submitted by: Paul Sutton Reviewed by: Alexei Kosut, Mark J Cox Revision ChangesPath 1.9 +231 -75 apache/src/mod_log_config.c Index: mod_log_config.c === RCS file: /export/home/cvs/apache/src/mod_log_config.c,v retrieving revision 1.8 retrieving revision 1.9 diff -C3 -r1.8 -r1.9 *** mod_log_config.c 1996/08/06 19:33:31 1.8 --- mod_log_config.c 1996/08/19 18:12:35 1.9 *** *** 54,63 /* * This is module implements the TransferLog directive (same as the ! * common log module), and an additional directive, LogFormat. * ! * The argument to LogFormat is a string, which can include literal ! * characters copied into the log files, and '%' directives as follows: * * %...b: bytes sent. * %...h: remote host --- 54,112 /* * This is module implements the TransferLog directive (same as the ! * common log module), and additional directives, LogFormat and CustomLog. * ! * ! * Syntax: ! * ! *TransferLog fn Logs transfers to fn in standard log format, unless ! *a custom format is set with LogFormat ! *LogFormat formatSet a log format from TransferLog files ! *CustomLog fn format ! *Log to file fn with format given by the format ! *argument ! * ! * There can be any number of TransferLog and CustomLog ! * commands. Each request will be logged to _ALL_ the ! * named files, in the appropriate format. ! * ! * If no TransferLog or CustomLog directive appears in a VirtualHost, ! * the request will be logged to the log file(s) defined outside ! * the virtual host section. If a TransferLog or CustomLog directive ! * appears in the VirtualHost section, the log files defined outside ! * the VirtualHost will _not_ be used. This makes this module compatable ! * with the CLF and config log modules, where the use of TransferLog ! * inside the VirtualHost section overrides its use outside. ! * ! * Examples: ! * ! *TransferLoglogs/access_log ! * ! *LogFormat "... custom format ..." ! *TransferLoglog/virtual_only ! *CustomLog log/virtual_useragents "%t %{user-agent}i" ! * ! * ! * This will log using CLF to access_log any requests handled by the ! * main server, while any requests to the virtual host will be logged ! * with the "... custom format..." to virtual_only _AND_ using ! * the custom user-agent log to virtual_useragents. ! * ! * Note that the NCSA referer and user-agent logs are easily added with ! * CustomLog: ! * CustomLog logs/referer "%{referer}i -> %U" ! * CustomLog logs/agent"%{user-agent}i" ! * ! * Except: no RefererIgnore functionality ! * logs '-' if no Referer or User-Agent instead of nothing ! * ! * But using this method allows much easier modification of the ! * log format, e.g. to log hosts along with UA: ! * CustomLog logs/referer "%{referer}i %U %h" ! * ! * The argument to LogFormat and CustomLog is a string, which can include ! * literal characters copied into the log files, and '%' directives as ! * follows: * * %...b: bytes sent. * %...h: remote host *** *** 117,122 --- 166,201 static mode_t xfer_mode = ( S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ); #endif + /* + * multi_log_state is our per-(virtual)-server configuration. We store + * an array of the logs we are going to use, each of type config_log_state. + * If a default log format is given by LogFormat, store in default_format + * (backward compat. with mod_log_config). We also store a pointer to + * the logs specified for the main server for virtual servers, so that + * if this vhost has now logs defined, we can use the main server's + * logs instead. + * + * So, for the main server, config_logs contains a list of the log files + * and server_config_logs in empty. For a vhost, server_config_logs + * points to the same array as config_logs in the main server, and + * config_logs points to the array of logs defined inside this vhost, + * which might be empty. + */ + + typedef struct { + array_header *default_format; + array_header *config_logs; + array_header *server_config_logs; + } multi_log_state; + + /* + * config_log_state holds the status of a single log file. fname cannot + * be NULL. format might be NULL, in which case the default_format from + * the multi_log_state should be used,
cvs commit: apache/src http_protocol.c
akosut 96/08/19 11:05:34 Modified:src http_protocol.c Log: Make Apache correctly read continued headers Submitted by: Paul Sutton Reviewed by: Alexei Kosut, Roy T. Fielding Revision ChangesPath 1.40 +36 -8 apache/src/http_protocol.c Index: http_protocol.c === RCS file: /export/home/cvs/apache/src/http_protocol.c,v retrieving revision 1.39 retrieving revision 1.40 diff -C3 -r1.39 -r1.40 *** http_protocol.c 1996/08/19 17:22:56 1.39 --- http_protocol.c 1996/08/19 18:05:32 1.40 *** *** 530,545 char w[MAX_STRING_LEN]; char *t; conn_rec *c = r->connection; ! while(getline(w, MAX_STRING_LEN-1, c->client)) { ! if(!w[0]) ! return; ! if(!(t = strchr(w,':'))) ! continue; ! *t++ = '\0'; ! while(isspace(*t)) ++t; ! table_merge (r->headers_in, w, t); } } --- 530,573 char w[MAX_STRING_LEN]; char *t; conn_rec *c = r->connection; + int len = 0; + char lookahead[2]; ! if (getline(w, MAX_STRING_LEN-1, c->client)) { ! do { ! if(!w[len]) ! return; ! /* w[] contains the _current_ line. Lets read the ! * first char of the _next_ line into lookahead[] and see ! * if it is a continuation line */ ! if (!getline(lookahead, 2, c->client) || ! *lookahead == '\0' || ! (*lookahead != ' ' && *lookahead != '\t')) { ! /* Not a continuation line -- _next_ line is either ! * a read error, empty, or doesn't start with SPACE or TAB ! * -- so store the _current_ line now */ ! if(!(t = strchr(w,':'))) ! continue; ! *t++ = '\0'; ! while(isspace(*t)) ++t; ! table_merge (r->headers_in, w, t); ! ! if (!*lookahead) /* did we read an empty line? */ ! return; ! ! /* Put what we read as the start of the new _current_ line */ ! w[0] = '\0'; ! } ! /* To get here, here have got a lookahead character in ! * *lookahead, so append it onto the end of w[], then ! * read the next line onto the end of that. Move ! * len on to point to the first char read from the next ! * line of input... we use this at the top of the loop ! * to check whether we actually read anything. */ ! } while (len = strlen(w), ! w[len++] = *lookahead, ! getline (w+len, MAX_STRING_LEN-1-len, c->client)); } }
cvs commit: apache/src util.c
akosut 96/08/19 10:54:53 Modified:src util.c Log: Fix backslash-quoting in getword_conf() Reviewed by: Roy T. Fielding, Someone Else (I forget who, exactly) Revision ChangesPath 1.16 +8 -7 apache/src/util.c Index: util.c === RCS file: /export/home/cvs/apache/src/util.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C3 -r1.15 -r1.16 *** util.c1996/07/29 02:32:34 1.15 --- util.c1996/08/19 17:54:52 1.16 *** *** 458,471 * all honored */ ! char *substring_conf (pool *p, char *start, int len) { char *result = palloc (p, len + 2); char *resp = result; int i; for (i = 0; i < len; ++i) { ! if (start[i] == '\\') *resp++ = start[++i]; else *resp++ = start[i]; --- 458,472 * all honored */ ! char *substring_conf (pool *p, char *start, int len, char quote) { char *result = palloc (p, len + 2); char *resp = result; int i; for (i = 0; i < len; ++i) { ! if (start[i] == '\\' && (start[i+1] == '/' ! || (quote && start[i+1] == quote))) *resp++ = start[++i]; else *resp++ = start[i]; *** *** 490,508 if ((quote = *str) == '"' || quote == '\'') { strend = str + 1; while (*strend && *strend != quote) { ! if (*strend == '\\' && strend[1]) strend += 2; else ++strend; } ! res = substring_conf (p, str + 1, strend - str - 1); if (*strend == quote) ++strend; } else { strend = str; while (*strend && !isspace (*strend)) ! if (*strend == '\\' && strend[1]) strend += 2; ! else ++strend; ! res = substring_conf (p, str, strend - str); } while (*strend && isspace(*strend)) ++ strend; --- 491,509 if ((quote = *str) == '"' || quote == '\'') { strend = str + 1; while (*strend && *strend != quote) { ! if (*strend == '\\' && strend[1] && strend[1] == quote) ! strend += 2; else ++strend; } ! res = substring_conf (p, str + 1, strend - str - 1, quote); if (*strend == quote) ++strend; } else { strend = str; while (*strend && !isspace (*strend)) ! ++strend; ! res = substring_conf (p, str, strend - str, 0); } while (*strend && isspace(*strend)) ++ strend;
cvs commit: apache/src http_protocol.c
akosut 96/08/19 10:22:58 Modified:src http_protocol.c Log: Add a missing CRLF. *sigh* Revision ChangesPath 1.39 +1 -1 apache/src/http_protocol.c Index: http_protocol.c === RCS file: /export/home/cvs/apache/src/http_protocol.c,v retrieving revision 1.38 retrieving revision 1.39 diff -C3 -r1.38 -r1.39 *** http_protocol.c 1996/08/18 20:26:30 1.38 --- http_protocol.c 1996/08/19 17:22:56 1.39 *** *** 1249,1255 #endif bputs("Connection: Keep-Alive\015\012", c->client); } ! else bputs("Connection: close", c->client); bputs("\015\012", c->client); return; } --- 1249,1255 #endif bputs("Connection: Keep-Alive\015\012", c->client); } ! else bputs("Connection: close\015\012", c->client); bputs("\015\012", c->client); return; }
cvs commit: apache/src http_protocol.c
akosut 96/08/18 13:26:31 Modified:src http_protocol.c Log: Oops. Make If-None-Match and If-Match work again. Revision ChangesPath 1.38 +7 -6 apache/src/http_protocol.c Index: http_protocol.c === RCS file: /export/home/cvs/apache/src/http_protocol.c,v retrieving revision 1.37 retrieving revision 1.38 diff -C3 -r1.37 -r1.38 *** http_protocol.c 1996/08/15 23:41:43 1.37 --- http_protocol.c 1996/08/18 20:26:30 1.38 *** *** 326,332 int set_last_modified(request_rec *r, time_t mtime) { ! char *ts, etag[MAX_STRING_LEN]; char *if_modified_since = table_get (r->headers_in, "If-Modified-Since"); char *if_unmodified = table_get (r->headers_in, "If-Unmodified-Since"); char *if_nonematch = table_get (r->headers_in, "If-None-Match"); --- 326,332 int set_last_modified(request_rec *r, time_t mtime) { ! char *ts, *etag, weak_etag[MAX_STRING_LEN]; char *if_modified_since = table_get (r->headers_in, "If-Modified-Since"); char *if_unmodified = table_get (r->headers_in, "If-Unmodified-Since"); char *if_nonematch = table_get (r->headers_in, "If-None-Match"); *** *** 351,362 */ if (r->finfo.st_mode != 0) ! sprintf(etag, "W/\"%lx-%lx-%lx\"", r->finfo.st_ino, r->finfo.st_size, ! mtime); else ! sprintf(etag, "W/\"%lx\"", mtime); ! table_set (r->headers_out, "ETag", !etag + ((r->request_time - mtime > 1) ? 2 : 0)); /* We now do the no_cache stuff using an Expires: header (we used to * withhold Last-modified). However, we still want to enforce this by --- 351,363 */ if (r->finfo.st_mode != 0) ! sprintf(weak_etag, "W/\"%lx-%lx-%lx\"", r->finfo.st_ino, ! r->finfo.st_size, mtime); else ! sprintf(weak_etag, "W/\"%lx\"", mtime); ! ! etag = weak_etag + ((r->request_time - mtime > 1) ? 2 : 0); ! table_set (r->headers_out, "ETag", etag); /* We now do the no_cache stuff using an Expires: header (we used to * withhold Last-modified). However, we still want to enforce this by
cvs commit: apache/src mod_rewrite.c mod_rewrite.h
akosut 96/08/16 16:18:05 Modified:src mod_rewrite.c mod_rewrite.h Log: Update mod_rewrite Submitted by: Ralf S. Engelschall Revision ChangesPath 1.2 +209 -94 apache/src/mod_rewrite.c Index: mod_rewrite.c === RCS file: /export/home/cvs/apache/src/mod_rewrite.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C3 -r1.1 -r1.2 *** mod_rewrite.c 1996/08/14 17:45:15 1.1 --- mod_rewrite.c 1996/08/16 23:18:02 1.2 *** *** 340,350 { rewrite_server_conf *sconf; rewritemap_entry *new; sconf = (rewrite_server_conf *)get_module_config(cmd->server->module_config, &rewrite_module); new = push_array(sconf->rewritemaps); new->name = a1; ! new->file = a2; return NULL; } --- 340,372 { rewrite_server_conf *sconf; rewritemap_entry *new; + struct stat st; sconf = (rewrite_server_conf *)get_module_config(cmd->server->module_config, &rewrite_module); new = push_array(sconf->rewritemaps); + new->name = a1; ! if (strncmp(a2, "txt:", 4) == 0) { ! new->file = a2+4; ! new->type = MAPTYPE_TXT; ! } ! else if (strncmp(a2, "dbm:", 4) == 0) { ! new->file = a2+4; ! new->type = MAPTYPE_DBM; ! } ! else if (strncmp(a2, "prg:", 4) == 0) { ! new->file = a2+4; ! new->type = MAPTYPE_PRG; ! } ! else { ! new->file = a2; ! new->type = MAPTYPE_TXT; ! } ! new->fpin = 0; ! new->fpout = 0; ! ! if (stat(new->file, &st) == -1) ! return pstrcat(cmd->pool, "RewriteMap: map file or program not found:", new->file, NULL); return NULL; } *** *** 658,663 --- 680,689 || strcasecmp(key, "S") == 0 ) { cfg->skip = atoi(val); } + else if ( strcasecmp(key, "forbidden") == 0 + || strcasecmp(key, "F") == 0 ) { + cfg->flags |= RULEFLAG_FORBIDDEN; + } else { return pstrcat(p, "RewriteRule: unknown flag '", key, "'\n", NULL); } *** *** 676,684 static void init_module(server_rec *s, pool *p) { /* step through the servers and !open eachs rewriting logfile */ ! for (; s; s = s->next) open_rewritelog(s, p); /* create the lookup cache */ cachep = init_cache(p); --- 702,713 static void init_module(server_rec *s, pool *p) { /* step through the servers and !- open eachs rewriting logfile !- open the RewriteMap prg:xxx programs */ ! for (; s; s = s->next) { open_rewritelog(s, p); + run_rewritemap_programs(s, p); + } /* create the lookup cache */ cachep = init_cache(p); *** *** 820,825 --- 849,859 rewritelog(r, 1, "redirect to %s [REDIRECT]", r->filename); return REDIRECT; } + else if (strlen(r->filename) > 10 && + strncmp(r->filename, "forbidden:", 10) == 0) { + /* This URLs is forced to be forbidden for the requester */ + return FORBIDDEN; + } else if (strlen(r->filename) > 12 && strncmp(r->filename, "passthrough:", 12) == 0) { /* Hack because of underpowered API: passing the current *** *** 1023,1028 --- 1057,1067 rewritelog(r, 1, "[per-dir %s] redirect to %s [REDIRECT]", dconf->directory, r->filename); return REDIRECT; } + else if (strlen(r->filename) > 10 && + strncmp(r->filename, "forbidden:", 10) == 0) { + /* This URLs is forced to be forbidden for the requester */ + return FORBIDDEN; + } else { /* it was finally rewritten to a local path */ *** *** 1131,1137 for (i = 0; i < rewriterules->nelts; i++) { p = &entries[i]; ! /* ignore this rule if we are explicitly asked to do so or this is a proxy throughput or a forced redirect rule */ if (r->main != NULL && (p->flags & RULEFLAG_IGNOREONSUBREQ || --- 1170,1176 for (i = 0; i < rewriterules->nelts; i++) { p = &entries[i]; ! /* ignore this rule on subrequests if we are explicitly asked to do so or this is a proxy throughput or a forced redirect rule */ if (r->main != NULL && (p->flags & RULEFLAG_IGNOREONSUBREQ || *** *** 1150,1155 --- 1189,1200 changed
cvs commit: apache/src mod_browser.c
akosut 96/08/16 16:15:20 Modified:src mod_browser.c Log: Make some changes to mod_browser: Change BrowserCase to BrowserNoCase Let per-server entries add, instead of override. Add the ability to use !option to cancel a previously set option. Reviewed by: Jim Jagielski Revision ChangesPath 1.2 +24 -5 apache/src/mod_browser.c Index: mod_browser.c === RCS file: /export/home/cvs/apache/src/mod_browser.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C3 -r1.1 -r1.2 *** mod_browser.c 1996/08/12 18:59:45 1.1 --- mod_browser.c 1996/08/16 23:15:19 1.2 *** *** 82,87 --- 82,97 return (void *)new; } + void *merge_browser_config (pool *p, void *basev, void *overridesv) + { + browser_server_config_rec *a = + pcalloc(p, sizeof(browser_server_config_rec)); + browser_server_config_rec *base = basev, *overrides = overridesv; + + a->browsers = append_arrays(p, base->browsers, overrides->browsers); + return a; + } + char *add_browser(cmd_parms *cmd, void *dummy, char *name, char *feature) { browser_server_config_rec *sconf = *** *** 97,102 --- 107,113 if (!strcmp(b->name, name)) { var = getword(cmd->pool, &feature, '='); if (*feature) table_set(b->features, var, feature); + else if (*var == '!') table_set(b->features, var + 1, "!"); else table_set(b->features, var, "1"); return NULL; } *** *** 113,118 --- 124,130 var = getword(cmd->pool, &feature, '='); if (*feature) table_set(new->features, var, feature); + else if (*var == '!') table_set(new->features, var + 1, "!"); else table_set(new->features, var, "1"); return NULL; *** *** 121,127 command_rec browser_module_cmds[] = { { "BrowserMatch", add_browser, (void*)0, RSRC_CONF, ITERATE2, "A browser regex and a list of variables." }, ! { "BrowserCase", add_browser, (void*)REG_ICASE, RSRC_CONF, ITERATE2, "a browser regex and a list of variables." }, { NULL }, }; --- 133,139 command_rec browser_module_cmds[] = { { "BrowserMatch", add_browser, (void*)0, RSRC_CONF, ITERATE2, "A browser regex and a list of variables." }, ! { "BrowserNoCase", add_browser, (void*)REG_ICASE, RSRC_CONF, ITERATE2, "a browser regex and a list of variables." }, { NULL }, }; *** *** 132,139 browser_server_config_rec *sconf = get_module_config (s->module_config, &browser_module); browser_entry *entries = (browser_entry *)sconf->browsers->elts; char *ua = table_get(r->headers_in, "User-Agent"); ! int i; if (!ua) return DECLINED; --- 144,152 browser_server_config_rec *sconf = get_module_config (s->module_config, &browser_module); browser_entry *entries = (browser_entry *)sconf->browsers->elts; + table_entry *elts; char *ua = table_get(r->headers_in, "User-Agent"); ! int i, j; if (!ua) return DECLINED; *** *** 141,148 browser_entry *b = &entries[i]; if (!regexec(b->preg, ua, 0, NULL, 0)) { ! r->subprocess_env = overlay_tables(r->pool, r->subprocess_env, !b->features); } } --- 154,167 browser_entry *b = &entries[i]; if (!regexec(b->preg, ua, 0, NULL, 0)) { ! elts = (table_entry *)b->features->elts; ! ! for (j = 0; j < b->features->nelts; ++j) { ! if (!strcmp(elts[j].val, "!")) ! table_unset(r->subprocess_env, elts[j].key); ! else ! table_set(r->subprocess_env, elts[j].key, elts[j].val); ! } } } *** *** 155,161 NULL,/* dir config creater */ NULL,/* dir merger --- default is to override */ create_browser_config, /* server config */ !NULL,/* merge server configs */ browser_module_cmds, /* command table */ NULL,/* handlers */ NULL,/* filename translation */ --- 174,180 NULL,/* dir config creater */ NULL,/* dir merger --- default is to override */ create_browser_config, /* server config */ !merge_browser_config,/* merge server configs */ browser_module_cmds, /* command table */ NULL,
cvs commit: apache/src http_protocol.c
akosut 96/08/15 16:41:44 Modified:src http_protocol.c Log: If a request comes within a second of a file's last-modified date, send a weak ETag instead of a strong one. This allows a file to be modified twice in one second and still allow strong validation without fear of inaccuracies. Revision ChangesPath 1.37 +9 -3 apache/src/http_protocol.c Index: http_protocol.c === RCS file: /export/home/cvs/apache/src/http_protocol.c,v retrieving revision 1.36 retrieving revision 1.37 diff -C3 -r1.36 -r1.37 *** http_protocol.c 1996/08/15 19:22:34 1.36 --- http_protocol.c 1996/08/15 23:41:43 1.37 *** *** 343,356 * length and inode number - note that this doesn't have to match * the content-length (i.e. includes), it just has to be unique * for the file. */ if (r->finfo.st_mode != 0) ! sprintf(etag, "\"%lx-%lx-%lx\"", r->finfo.st_ino, r->finfo.st_size, mtime); else ! sprintf(etag, "\"%lx\"", mtime); ! table_set (r->headers_out, "ETag", etag); /* We now do the no_cache stuff using an Expires: header (we used to * withhold Last-modified). However, we still want to enforce this by --- 343,362 * length and inode number - note that this doesn't have to match * the content-length (i.e. includes), it just has to be unique * for the file. + * + * If the request was made within a second of the last-modified date, + * we send a weak tag instead of a strong one, since it could + * be modified again later in the second, and the validation + * would be incorrect. */ if (r->finfo.st_mode != 0) ! sprintf(etag, "W/\"%lx-%lx-%lx\"", r->finfo.st_ino, r->finfo.st_size, mtime); else ! sprintf(etag, "W/\"%lx\"", mtime); ! table_set (r->headers_out, "ETag", !etag + ((r->request_time - mtime > 1) ? 2 : 0)); /* We now do the no_cache stuff using an Expires: header (we used to * withhold Last-modified). However, we still want to enforce this by