cvs commit: apache-2.0/docs README
dgaudet 98/02/02 18:50:10 Added: docs README Log: explain that last commit Revision ChangesPath 1.1 apache-2.0/docs/README Index: README === This won't really be docs about how to run the server... but I couldn't really think of a better name for it. I guess it could have been called proposals... but eventually the stuff here will really be docs. Dean
cvs commit: apache-2.0/docs process-model.html
dgaudet 98/02/02 18:53:02 Added: docs process-model.html Log: here ya go, my process-model proposal... the one which I think is way overboard now Revision ChangesPath 1.1 apache-2.0/docs/process-model.html Index: process-model.html === html head titleProcess Model Design/title /head body bgcolor=#ff text=#00 link=#ff vlink=#80 alink=#ff h1Process Model Design/h1 hrbr pNote: Dean wrote the initial version of this with input from various other folks. RST has since mailed Dean and convinced Dean that a lot of this is way overboard... and some day when Dean has a chance those extra arguments will appear here. But for now, here's a start on this which is way overboard. hrbr pStart by reading the a href=http://www.cs.wustl.edu/~jxh/research/research.html;JAWS papers/a. They provide a good background for what we need to think about. pApache's process models are currently implemented by codehttp_main.c/code. The addition of the WIN32 code has made it almost unreadable. It needs abstraction and cleanup. Specifically, codehttp_main/code provides the following functionality: ul lirequest dispatch litimers limutexes lishared memory liprocess/thread mgmt /ul Most of the above are not abstracted sufficiently (i.e. timers, mutexes, shared memory). And there are some missing things that will be needed for some of the process models. pNote that the beauty of Apache's current design is that outside of codehttp_main/code very little code cares about how requests are dispatched. The module API has also been designed such that essentially no synchronization needs to be done between running requests, for example there are (almost) no data structures that require mutexes. But the latter is not something that we absolutely need to maintain, because there are optimizations that set up data structures which require some synchronization... and opening up these potentials is one of the purposes of this paper. h3Definitions/h3 dl dtprocess ddA process is the heaviest unit of kernel scheduling. Processes do not share address spaces or file resources except through explicit methods (such as inheriting file handles or share mem segments, or mapping the same file in a shared way). Processes are pre-emptively multitasked. dtthread ddThe term thread will refer bonly to kernel supplied threads/b. A thread is the lightest unit of kernel scheduling. At least one thread exists within each process. If multiple threads can exist within each process then they all share the same memory and file resources. Threads are pre-emptively multitasked. dtfiber ddA fiber is a user-level thread. Fibers are bco-operatively multitasked/b, with context switching occuring only at I/O points or at explicit yield points. A fiber can be scheduled to run in any thread in the same process. Typically fibers are implemented entirely by user-level libraries, under Unix the I/O would be handled by using select() multiplexing. The term is borrowed from WIN32, which actually supplies a fiber interface in the API. Fibers are very similar to co-routines. SunOS 4.x light-weight processes are fibers, but SunOS 5.x LWPs are actually threads. /dl h3What process models are interesting?/h3 pThe models vary in three dimensions: number of processes, number of threads within each process, number of fibers within each thread. In all models, a fiber is used to handle each request -- that is, most code in the server can treat the fiber as the only unit of execution worth worrying about. pI believe the following models are interesting: ul liSingle process, single thread, single fiber (SSS). This is the current inetd mode and -X mode. It should be easy to maintain as a special case of other models. liMultiple process, single thread, single fiber (MSS). This is the current Unix model, and needs to be maintained for maximum portability. liMultiple process, single thread, multiple fiber (MSM). In each process a user-level threads package handles context switches according to the completion of I/O. This is typical select-event threading under Unix. This is how Zeus and Squid work, and should be portable to essentially every Unix, with a performance advantage over MSS. In the MSM model there should be enough processes to exploit the available parallelism in the hardware. liSingle process, multiple thread, single fiber (SMS). This is probably the easiest to implement multi-threaded model. One process has multiple kernel threads, each thread runs a single fiber. This should be implementable under WIN32, OS2, and with POSIX threads. liSingle process, multiple thread, multiple fiber (SMM
cvs commit: apache-1.3/src/os/win32 mod_isapi.c
dgaudet 98/02/02 23:29:54 Modified:src/os/win32 mod_isapi.c Log: r-finfo.st_mode == 0 should be the first test before using r-finfo in a handler Revision ChangesPath 1.7 +3 -3 apache-1.3/src/os/win32/mod_isapi.c Index: mod_isapi.c === RCS file: /export/home/cvs/apache-1.3/src/os/win32/mod_isapi.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- mod_isapi.c 1998/01/07 16:47:08 1.6 +++ mod_isapi.c 1998/02/03 07:29:53 1.7 @@ -129,11 +129,11 @@ if (!(allow_options(r) OPT_EXECCGI)) return FORBIDDEN; -if (S_ISDIR(r-finfo.st_mode)) - return FORBIDDEN; - if (r-finfo.st_mode == 0) return NOT_FOUND; + +if (S_ISDIR(r-finfo.st_mode)) + return FORBIDDEN; /* Load the module */
cvs commit: apache-1.3 STATUS
dgaudet 98/02/03 01:32:50 Modified:.STATUS Log: raining all day long Revision ChangesPath 1.141 +6 -1 apache-1.3/STATUS Index: STATUS === RCS file: /export/home/cvs/apache-1.3/STATUS,v retrieving revision 1.140 retrieving revision 1.141 diff -u -r1.140 -r1.141 --- STATUS1998/02/01 16:37:29 1.140 +++ STATUS1998/02/03 09:32:49 1.141 @@ -143,10 +143,15 @@ * r-allowed cleanup * References to undefined 'cwd' cell fixed in suexec.c * fix options/allowoverride merging +* tweak some table sizes +* fix r-hostname port stripping * Ken's restructuring the header files into src/include +* UseCanonicalName +* default_port/http_method +* ap_read/ap_write +* minor r-finfo handling cleanups Available Patches: - * M.D.Parker's [PATCH] mod_status/1448: Status Information have version [EMAIL PROTECTED]
cvs commit: apache-1.3 STATUS
dgaudet 98/02/03 01:35:37 Modified:.STATUS Log: vote Revision ChangesPath 1.142 +2 -0 apache-1.3/STATUS Index: STATUS === RCS file: /export/home/cvs/apache-1.3/STATUS,v retrieving revision 1.141 retrieving revision 1.142 diff -u -r1.141 -r1.142 --- STATUS1998/02/03 09:32:49 1.141 +++ STATUS1998/02/03 09:35:36 1.142 @@ -259,6 +259,7 @@ * Maybe a http_paths.h file? See [EMAIL PROTECTED] + Dean +1 * Release builds: Should we provide Configuration or not? Should we 'make all suexec' in src/support? @@ -277,6 +278,7 @@ Issues: Underscores: Should I try prepending, appending, and ignoring? - Alexei says look at Java Location? os/unix ?? + Dean +1 * 206 vs. 200 issue on Content-Length See [EMAIL PROTECTED]
cvs commit: apache-1.2/src CHANGES http_protocol.c
dgaudet 98/02/03 01:53:51 Modified:src CHANGES http_protocol.c Log: Ed's patch has been running on one of my 1.2 servers w/name and ip vhosts for 5 days now without a hassle. Ed says: I posted a patch much like this some months ago, but Dean pointed out that it still had a few problems. So far as I can see, this covers all of those; check_fulluri and reduce_uri (in mod_rewrite) can mess with r-filename (removing http[s]://{hostname}[:{port}]), but they don't change r-server, which is where the security hole lies. It also fixes check_fulluri to work for virtual hosts w/ a wildcard port and/or multiple ports. It also fixes check_serverpath, which should make sure the server in question can possibly be listening for this request (note that one of either check_hostalias and check_serverpath will run). It's not needed for 1.3, since Dean's rewrite of the vhost code fixed it in that. Submitted by: Ed Korthof [EMAIL PROTECTED] Revision ChangesPath 1.291 +7 -0 apache-1.2/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.2/src/CHANGES,v retrieving revision 1.290 retrieving revision 1.291 diff -u -r1.290 -r1.291 --- CHANGES 1998/02/01 02:47:37 1.290 +++ CHANGES 1998/02/03 09:53:48 1.291 @@ -1,4 +1,11 @@ Changes with Apache 1.2.6 + + *) SECURITY: When a client connects to a particular port/addr, and + gives a Host: header ensure that the virtual host requested can + actually be reached via that port/addr. [Ed Korthof [EMAIL PROTECTED]] + + *) Support virtual hosts with wildcard port and/or multiple ports + properly. [Ed Korthof [EMAIL PROTECTED]] *) Fixed some case-sensitivity issues according to RFC2068. [Dean Gaudet] 1.131 +112 -31 apache-1.2/src/http_protocol.c Index: http_protocol.c === RCS file: /export/home/cvs/apache-1.2/src/http_protocol.c,v retrieving revision 1.130 retrieving revision 1.131 diff -u -r1.130 -r1.131 --- http_protocol.c 1998/02/01 02:47:39 1.130 +++ http_protocol.c 1998/02/03 09:53:49 1.131 @@ -548,13 +548,15 @@ } } -const char *check_fulluri (request_rec *r, const char *uri) { +const char *check_fulluri (request_rec *r, const char *uri) +{ char *name, *host; int i; unsigned port; + server_addr_rec * sar; /* This routine parses full URLs, if they match the server */ - if (strncmp(uri, http://;, 7)) return uri; + if (strncasecmp(uri, http://;, 7)) return uri; name = pstrdup(r-pool, uri + 7); /* Find the hostname, assuming a valid request */ @@ -567,7 +569,13 @@ else port = 80; /* Make sure ports patch */ - if (port != r-server-port) return uri; + if (port != r-server-port) { +for (sar = r-server-addrs; sar; sar = sar-next) { + if( (sar-host_port == 0) || (port == sar-host_port) ) +break; +} +if (!sar) return uri; + } /* Save it for later use */ r-hostname = pstrdup(r-pool, host); @@ -678,15 +686,29 @@ } } -static void check_hostalias (request_rec *r) { +#define ADDR_MATCHES(addr1,addr2) \ + (addr1.s_addr == addr2.s_addr) || (addr1.s_addr == htonl(INADDR_ANY)) \ +|| (addr1.s_addr == DEFAULT_VHOST_ADDR) + +static void check_hostalias (request_rec *r) +{ const char *hostname=r-hostname; char *host = getword(r-pool, hostname, ':'); /* Get rid of port */ unsigned port = (*hostname) ? atoi(hostname) : 80; - server_rec *s; + server_rec *s = r-server; + server_addr_rec * sar; int l; - if (port (port != r-server-port)) -return; +/* make sure the client can't spoof the port; + * have to check all possiblities to see if the server + * should be listening. */ + if (port != r-server-port) { +for (sar = s-addrs; sar; sar = sar-next) { + if ( (port == sar-host_port) || (sar-host_port == 0) ) +break; +} +if (!sar) return; + } l = strlen(host)-1; if ((host[l]) == '.') { @@ -704,37 +726,68 @@ configuration */ continue; } - -if ((!strcasecmp(host, s-server_hostname)) (port == s-port)) { - r-server = r-connection-server = s; - if (r-hostlen !strncmp(r-uri, http://;, 7)) { - r-uri += r-hostlen; - parse_uri(r, r-uri); +/* ok, now there are several possibilities, and we're matching the + * hostname, the port, and r-connection-local_addr. The last is + * required so as to only respond on an address to which this vhost + * should actually be listening. + * + * Either we can match s-server_name and s-port while matching + * against the ip address in a record in the s-addrs list
cvs commit: apache-1.2/conf httpd.conf-dist
dgaudet 98/02/04 11:42:52 Modified:conf httpd.conf-dist Log: give a clue Revision ChangesPath 1.15 +3 -0 apache-1.2/conf/httpd.conf-dist Index: httpd.conf-dist === RCS file: /export/home/cvs/apache-1.2/conf/httpd.conf-dist,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- httpd.conf-dist 1998/01/30 09:12:49 1.14 +++ httpd.conf-dist 1998/02/04 19:42:51 1.15 @@ -48,6 +48,9 @@ # ServerRoot: The directory the server's config, error, and log files # are kept in +# NOTE! If you intend to place this on a NFS (or otherwise network) +# mounted filesystem then please read the LockFile documentation, +# you will save yourself a lot of trouble. ServerRoot /usr/local/etc/httpd
cvs commit: apache-1.3/src/main http_protocol.c
dgaudet 98/02/04 13:23:34 Modified:src CHANGES src/main http_protocol.c Log: Igor found a memory leak -- we're allocating the initial request_rec in the connection pool rather than creating a new pool first. So each request on a keepalive connection would waste sizeof(request_rec). Revision ChangesPath 1.616 +2 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.615 retrieving revision 1.616 diff -u -r1.615 -r1.616 --- CHANGES 1998/02/03 11:19:26 1.615 +++ CHANGES 1998/02/04 21:23:30 1.616 @@ -1,4 +1,6 @@ Changes with Apache 1.3b4 + + *) Fix a memory leak on keep-alive connections. [Igor Tatarinov] *) Added mod_so module to support dynamic loading of modules on Unix (like mod_dld for Win32). This replaces mod_dld.c. Use SharedModule 1.185 +5 -2 apache-1.3/src/main/http_protocol.c Index: http_protocol.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_protocol.c,v retrieving revision 1.184 retrieving revision 1.185 diff -u -r1.184 -r1.185 --- http_protocol.c 1998/02/02 22:33:33 1.184 +++ http_protocol.c 1998/02/04 21:23:33 1.185 @@ -773,13 +773,16 @@ request_rec *read_request(conn_rec *conn) { -request_rec *r = (request_rec *) pcalloc(conn-pool, sizeof(request_rec)); +request_rec *r; int access_status; +pool *p; +p = make_sub_pool(conn-pool); +r = pcalloc(p, sizeof(request_rec)); +r-pool= p; r-connection = conn; conn-server = conn-base_server; r-server = conn-server; -r-pool= make_sub_pool(conn-pool); conn-keptalive= conn-keepalive == 1; conn-keepalive= 0;
cvs commit: apache-1.3/htdocs/manual/mod directives.html
dgaudet 98/02/04 13:40:05 Modified:htdocs/manual/mod directives.html Log: two of the probably many missing directives Revision ChangesPath 1.39 +2 -0 apache-1.3/htdocs/manual/mod/directives.html Index: directives.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/directives.html,v retrieving revision 1.38 retrieving revision 1.39 diff -u -r1.38 -r1.39 --- directives.html 1998/02/03 11:40:22 1.38 +++ directives.html 1998/02/04 21:40:04 1.39 @@ -136,6 +136,7 @@ LIA HREF=mod_cern_meta.html#metasuffixMetaSuffix/A LIA HREF=mod_mime_magic.html#mimemagicfileMimeMagicFile/A LIA HREF=core.html#minspareserversMinSpareServers/A +LIA HREF=core.html#namevirtualhostNameVirtualHost/A LIA HREF=mod_proxy.html#nocacheNoCache/A LIA HREF=core.html#optionsOptions/A LIA HREF=mod_access.html#orderorder/A @@ -192,6 +193,7 @@ LIA HREF=mod_log_config.html#transferlogTransferLog/A LIA HREF=mod_mime.html#typesconfigTypesConfig/A LIA HREF=mod_env.html#unsetenvUnsetEnv/A +LIA HREF=core.html#usecanonicalnameUseCanonicalName/A LIA HREF=core.html#userUser/A LIA HREF=mod_userdir.html#userdirUserDir/A LIA HREF=core.html#virtualhostlt;VirtualHostgt;/A
cvs commit: apache-1.3/src/modules/standard mod_unique_id.c
dgaudet 98/02/04 23:52:35 Modified:src/modules/standard mod_unique_id.c Log: gethostname doesn't necessarily \0-terminate Submitted by: Marc Slemko Revision ChangesPath 1.12 +1 -0 apache-1.3/src/modules/standard/mod_unique_id.c Index: mod_unique_id.c === RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_unique_id.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- mod_unique_id.c 1998/01/27 10:28:33 1.11 +++ mod_unique_id.c 1998/02/05 07:52:34 1.12 @@ -162,6 +162,7 @@ gethostname: mod_unique_id requires the hostname of the server); exit(1); } +str[sizeof(str) - 1] = '\0'; if ((hent = gethostbyname(str)) == NULL) { aplog_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ALERT, s,
cvs commit: apache-1.3 STATUS
dgaudet 98/02/04 23:55:05 Modified:.STATUS Log: i don't do win32 Revision ChangesPath 1.144 +4 -0 apache-1.3/STATUS Index: STATUS === RCS file: /export/home/cvs/apache-1.3/STATUS,v retrieving revision 1.143 retrieving revision 1.144 diff -u -r1.143 -r1.144 --- STATUS1998/02/03 11:16:45 1.143 +++ STATUS1998/02/05 07:55:04 1.144 @@ -404,3 +404,7 @@ - mod_mime_magic.c (needs access to mod_mime API stage...) * do something to disable bogus warnings + +* double check the test_filename and os_canonical_name thing in + directory_walk ... Dean thinks it looks bogus, r-filename + isn't used for comparisons, test_filename is.
cvs commit: apache-1.3/htdocs/manual upgrading_to_1_3.html
dgaudet 98/02/05 00:04:57 Modified:htdocs/manual upgrading_to_1_3.html Log: document the code changes required for 1.2 modules Revision ChangesPath 1.11 +32 -0 apache-1.3/htdocs/manual/upgrading_to_1_3.html Index: upgrading_to_1_3.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/upgrading_to_1_3.html,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- upgrading_to_1_3.html 1998/02/03 20:24:37 1.10 +++ upgrading_to_1_3.html 1998/02/05 08:04:56 1.11 @@ -161,6 +161,38 @@ /UL +h3Third Party Modules/h3 + +pThe following changes between the 1.2 and 1.3 API may require slight +changes in third party modules not maintained by Apache. + +ul + licodeconstruct_url/code prototype change. The second parameter +was previously a codeserver_rec/code, it has been changed to +a coderequest_rec/code. + + liThe codetable/code datatype has been made an opaque type. +Code which assumes a codetable/code is the same as an +codearray_header/code will not compile. This is actually a +change to enforce the API the way it was intended, all versions +of Apache have had a codetable_elts()/code function which +is intended for code which needs to access the elements of +a table. The changes required for this are pretty easy, and +work with all versions of Apache. + +pSuppose codet/code is a table. Whenever code refers to +codet-gt;elts/code, replace it with something like this: + +blockquotepre +array_header *arr = table_elts(t); +table_entry *elts = (table_entry *)arr-gt;elts; +/pre/blockquote + +Whenever code refers to codet-gt;nelts/code use +codearr-gt;nelts/code. Many examples can be found in +the standard modules, search for codetable_elts/code. +/ul + !--#include virtual=footer.html -- /BODY /HTML
cvs commit: apache-2.0 STATUS
dgaudet 98/02/06 02:10:25 Modified:.STATUS Log: Revision ChangesPath 1.8 +4 -2 apache-2.0/STATUS Index: STATUS === RCS file: /export/home/cvs/apache-2.0/STATUS,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- STATUS1998/02/06 02:58:40 1.7 +++ STATUS1998/02/06 10:10:23 1.8 @@ -44,10 +44,10 @@ to add more, but try not to duplicate earlier items too much. a) multithreading. - Brian +1, Ken +1 + Brian +1, Ken +1, Dean +1 b) new layered I/O. - Brian +1, Ken +1 + Brian +1, Ken +1, Dean +1 c) radically revamped API Ken +1 @@ -60,6 +60,8 @@ f) rewrite in C++ g) revamped process model (Dean's proposal) + Dean says: it's hard to do (a) cleanly without considering a + bunch of this Closed issues:
cvs commit: apache-1.3/src/main buff.c
dgaudet 98/02/07 02:34:47 Modified:src/main buff.c Log: Sorry guys I know we're trying to get 1.3b4 rolled, but I really really really want chunking to work since it is affecting the deployment of HTTP/1.1. I've stressed this patch a fair amount with a module I'll check in shortly. Two more chunking bugs: - start_chunk() called bflush() called start_chunk() caused chaos - if we ended up in the tail of bwrite() where a memcpy happens to copy the remainder, in certain boundary cases with chunking we would go past the end of the buffer Just generally clean up chunking a bit. This would be a lot easier if chunking were just a layered I/O handler. Revision ChangesPath 1.63 +56 -47apache-1.3/src/main/buff.c Index: buff.c === RCS file: /export/home/cvs/apache-1.3/src/main/buff.c,v retrieving revision 1.62 retrieving revision 1.63 diff -u -r1.62 -r1.63 --- buff.c1998/02/03 20:00:58 1.62 +++ buff.c1998/02/07 10:34:43 1.63 @@ -74,6 +74,13 @@ #ifndef DEFAULT_BUFSIZE #define DEFAULT_BUFSIZE (4096) #endif +/* This must be enough to represent (DEFAULT_BUFSIZE - 3) in hex, + * plus two extra characters. + */ +#ifndef CHUNK_HEADER_SIZE +#define CHUNK_HEADER_SIZE (5) +#endif + /* bwrite()s of greater than this size can result in a large_write() call, * which can result in a writev(). It's a little more work to set up the @@ -381,6 +388,8 @@ } } +static int bflush_core(BUFF *fb); + /* * Start chunked encoding. * @@ -392,9 +401,6 @@ */ static void start_chunk(BUFF *fb) { -char chunksize[16]; /* Big enough for practically anything */ -int chunk_header_size; - if (fb-outchunk != -1) { /* already chunking */ return; @@ -404,26 +410,15 @@ return; } -/* we know that the chunk header is going to take at least 3 bytes... */ -chunk_header_size = ap_snprintf(chunksize, sizeof(chunksize), - %x\015\012, fb-bufsiz - fb-outcnt - 3); /* we need at least the header_len + at least 1 data byte * remember that we've overallocated fb-outbase so that we can always * fit the two byte CRLF trailer */ -if (fb-bufsiz - fb-outcnt chunk_header_size + 1) { - bflush(fb); +if (fb-bufsiz - fb-outcnt CHUNK_HEADER_SIZE + 1) { + bflush_core(fb); } -/* assume there's enough space now */ -#ifdef CHARSET_EBCDIC -/* Chunks are an HTTP/1.1 Protocol feature. They must ALWAYS be in ASCII */ -ebcdic2ascii(fb-outbase[fb-outcnt], chunksize, chunk_header_size); -#else /*CHARSET_EBCDIC*/ -memcpy(fb-outbase[fb-outcnt], chunksize, chunk_header_size); -#endif /*CHARSET_EBCDIC*/ fb-outchunk = fb-outcnt; -fb-outcnt += chunk_header_size; -fb-outchunk_header_size = chunk_header_size; +fb-outcnt += CHUNK_HEADER_SIZE; } @@ -433,13 +428,14 @@ static void end_chunk(BUFF *fb) { int i; +char *strp; if (fb-outchunk == -1) { /* not chunking */ return; } -if (fb-outchunk + fb-outchunk_header_size == fb-outcnt) { +if (fb-outchunk + CHUNK_HEADER_SIZE == fb-outcnt) { /* nothing was written into this chunk, and we can't write a 0 size * chunk because that signifies EOF, so just erase it */ @@ -449,26 +445,24 @@ } /* we know this will fit because of how we wrote it in start_chunk() */ -i = ap_snprintf((char *) fb-outbase[fb-outchunk], - fb-outchunk_header_size, - %x, fb-outcnt - fb-outchunk - fb-outchunk_header_size); +i = ap_snprintf((char *) fb-outbase[fb-outchunk], CHUNK_HEADER_SIZE, + %x, fb-outcnt - fb-outchunk - CHUNK_HEADER_SIZE); /* we may have to tack some trailing spaces onto the number we just wrote * in case it was smaller than our estimated size. We've also written * a \0 into the buffer with ap_snprintf so we might have to put a * \r back in. */ -i += fb-outchunk; -while (fb-outbase[i] != '\015' fb-outbase[i] != '\012') { - fb-outbase[i++] = ' '; -} -if (fb-outbase[i] == '\012') { - /* we overwrote the \r, so put it back */ - fb-outbase[i - 1] = '\015'; +strp = fb-outbase[fb-outchunk + i]; +while (i CHUNK_HEADER_SIZE - 2) { + *strp++ = ' '; + ++i; } +*strp++ = '\015'; +*strp = '\012'; #ifdef CHARSET_EBCDIC /* Chunks are an HTTP/1.1 Protocol feature. They must ALWAYS be in ASCII */ -ebcdic2ascii(fb-outbase[fb-outchunk], fb-outbase[fb-outchunk], fb-outchunk_header_size); +ebcdic2ascii(fb-outbase[fb-outchunk], fb-outbase[fb-outchunk], CHUNK_HEADER_SIZE
cvs commit: apache-1.3/src/test check_chunked
dgaudet 98/02/07 02:38:18 Added: src/test check_chunked Log: tool for testing chunked encoding Revision ChangesPath 1.1 apache-1.3/src/test/check_chunked Index: check_chunked === #!/usr/bin/perl -w # This is meant to be used on the raw output of an HTTP/1.1 connection # to check that the chunks are all correctly laid out. It's easiest # to use a tool like netcat to generate the output. This script # *insists* that \r exist in the output. use strict; my $is_chunked = 0; # must toss headers while() { if (/^Transfer-Encoding:\s+chunked/i) { $is_chunked = 1; } last if ($_ eq \r\n); } $is_chunked || die wasn't chunked\n; for(;;) { $_ = || die unexpected end of file!\n; m#^[0-9a-f]+ *\r$#i || die bogus chunklen: $_; my $chunklen = hex; exit 0 if ($chunklen == 0); chop; chop; print $_ ; my $data = ''; read(ARGV, $data, $chunklen) == $chunklen || die short read!\n; $_ = || die unexpected end of file!\n; $_ eq \r\n || die missing chunk trailer!\n; }
cvs commit: apache-1.3/src/modules/test - New directory
dgaudet 98/02/07 02:38:27 apache-1.3/src/modules/test - New directory
cvs commit: apache-1.3/src/modules/test Makefile.tmpl
dgaudet 98/02/07 02:44:34 Added: src/modules/test Makefile.tmpl Log: directory for modules which test server functionality Revision ChangesPath 1.1 apache-1.3/src/modules/test/Makefile.tmpl Index: Makefile.tmpl === # default Makefile.tmpl to force Configure to create a Makefile
cvs commit: apache-1.3/src/modules/test .cvsignore
dgaudet 98/02/07 02:48:34 Added: src/modules/test .cvsignore Log: foo Revision ChangesPath 1.1 apache-1.3/src/modules/test/.cvsignore Index: .cvsignore === Makefile
cvs commit: apache-1.3/conf srm.conf-dist srm.conf-dist-win
dgaudet 98/02/07 04:07:11 Modified:htdocs/manual/misc known_client_problems.html conf srm.conf-dist srm.conf-dist-win Log: Add all the BrowserMatch directives mentioned on the known_client_problems page. Submitted by: Lars Eilebrecht Reviewed by: Dean Gaudet Revision ChangesPath 1.10 +1 -1 apache-1.3/htdocs/manual/misc/known_client_problems.html Index: known_client_problems.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/misc/known_client_problems.html,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- known_client_problems.html1998/02/05 21:19:56 1.9 +++ known_client_problems.html1998/02/07 12:07:08 1.10 @@ -100,7 +100,7 @@ of the early pre-releases of the 1.1 JDK. We think it is fixed in the 1.1 JDK release. In any event the workaround: BLOCKQUOTECODE -BrowserMatch Java1.0 force-response-1.0 BR +BrowserMatch Java/1.0 force-response-1.0 BR BrowserMatch JDK/1.0 force-response-1.0 /CODE/BLOCKQUOTE 1.18 +10 -5 apache-1.3/conf/srm.conf-dist Index: srm.conf-dist === RCS file: /export/home/cvs/apache-1.3/conf/srm.conf-dist,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- srm.conf-dist 1997/11/05 11:32:36 1.17 +++ srm.conf-dist 1998/02/07 12:07:09 1.18 @@ -214,15 +214,20 @@ # to determine its type. #MimeMagicFile conf/magic -# The following directive disables keepalives and HTTP header flushes for -# Netscape 2.x and browsers which spoof it. There are known problems with -# these +# The following directives disable keepalives and HTTP header flushes. +# The first directive disables it for Netscape 2.x and browsers which +# spoof it. There are known problems with these. +# The second directive is for Microsoft Internet Explorer 4.0b2 +# which has a broken HTTP/1.1 implementation and does not properly +# support keepalive when it is used on 301 or 302 (redirect) responses. -BrowserMatch Mozilla/2 nokeepalive +BrowserMatch Mozilla/2 nokeepalive +BrowserMatch MSIE 4\.0b2; nokeepalive downgrade-1.0 force-response-1.0 # The following directive disables HTTP/1.1 responses to browsers which # are in violation of the HTTP/1.0 spec by not being able to grok a # basic 1.1 response. BrowserMatch RealPlayer 4.0 force-response-1.0 - +BrowserMatch Java/1.0 force-response-1.0 +BrowserMatch JDK/1.0 force-response-1.0 1.6 +10 -5 apache-1.3/conf/srm.conf-dist-win Index: srm.conf-dist-win === RCS file: /export/home/cvs/apache-1.3/conf/srm.conf-dist-win,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- srm.conf-dist-win 1997/11/05 11:32:37 1.5 +++ srm.conf-dist-win 1998/02/07 12:07:10 1.6 @@ -218,15 +218,20 @@ # to determine its type. #MimeMagicFile conf/magic -# The following directive disables keepalives and HTTP header flushes for -# Netscape 2.x and browsers which spoof it. There are known problems with -# these +# The following directives disable keepalives and HTTP header flushes. +# The first directive disables it for Netscape 2.x and browsers which +# spoof it. There are known problems with these. +# The second directive is for Microsoft Internet Explorer 4.0b2 +# which has a broken HTTP/1.1 implementation and does not properly +# support keepalive when it is used on 301 or 302 (redirect) responses. -BrowserMatch Mozilla/2 nokeepalive +BrowserMatch Mozilla/2 nokeepalive +BrowserMatch MSIE 4\.0b2; nokeepalive downgrade-1.0 force-response-1.0 # The following directive disables HTTP/1.1 responses to browsers which # are in violation of the HTTP/1.0 spec by not being able to grok a # basic 1.1 response. BrowserMatch RealPlayer 4.0 force-response-1.0 - +BrowserMatch Java/1.0 force-response-1.0 +BrowserMatch JDK/1.0 force-response-1.0
cvs commit: apache-1.3/src/include conf.h
dgaudet 98/02/07 04:11:19 Modified:src/include conf.h Log: Tweak to MiNT port. Submitted by: Jan Paul Schmidt [EMAIL PROTECTED] Reviewed by: Dean Gaudet Revision ChangesPath 1.179 +1 -1 apache-1.3/src/include/conf.h Index: conf.h === RCS file: /export/home/cvs/apache-1.3/src/include/conf.h,v retrieving revision 1.178 retrieving revision 1.179 diff -u -r1.178 -r1.179 --- conf.h1998/02/04 18:18:51 1.178 +++ conf.h1998/02/07 12:11:18 1.179 @@ -85,7 +85,7 @@ #define NO_LONG_DOUBLE #define USE_FLOCK_SERIALIZED_ACCEPT #define _BSD_SOURCE -#define EAGAIN EACCESS +#define EAGAIN EWOULDBLOCK int initgroups (char *, int); char *crypt (const char *pw, const char *salt); int gethostname (char *name, int namelen);
cvs commit: apache-1.3/src/ap ap_execve.c
dgaudet 98/02/07 04:14:56 Modified:src/ap ap_execve.c Log: The code from tcsh is under the UCB license. Submitted by: Martin Kraemer Revision ChangesPath 1.5 +35 -0 apache-1.3/src/ap/ap_execve.c Index: ap_execve.c === RCS file: /export/home/cvs/apache-1.3/src/ap/ap_execve.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- ap_execve.c 1998/01/31 23:54:33 1.4 +++ ap_execve.c 1998/02/07 12:14:56 1.5 @@ -51,6 +51,41 @@ * */ +/* + * Portions of this code are under this license: + * + * Copyright (c) 1980, 1991 The Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + *notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + *notice, this list of conditions and the following disclaimer in the + *documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + *must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + *may be used to endorse or promote products derived from this software + *without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + #include httpd.h #include http_log.h
cvs commit: apache-1.3/src/modules/test README
dgaudet 98/02/07 12:34:08 Added: src/modules/test README Log: document the why Revision ChangesPath 1.1 apache-1.3/src/modules/test/README Index: README === This directory is intended to house modules which are used for testing server functionality. They're unsupported, and not guaranteed to remain consistant between releases. You're on your own completely with these.
cvs commit: apache-1.3/src/test check_chunked
dgaudet 98/02/07 13:14:19 Modified:src/test check_chunked Log: include location of netcat Revision ChangesPath 1.2 +2 -0 apache-1.3/src/test/check_chunked Index: check_chunked === RCS file: /export/home/cvs/apache-1.3/src/test/check_chunked,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- check_chunked 1998/02/07 10:38:17 1.1 +++ check_chunked 1998/02/07 21:14:18 1.2 @@ -4,6 +4,8 @@ # to check that the chunks are all correctly laid out. It's easiest # to use a tool like netcat to generate the output. This script # *insists* that \r exist in the output. +# +# You can find netcat at avian.org:/src/hacks/nc110.tgz. use strict;
cvs commit: apache-1.3/src CHANGES
dgaudet 98/02/07 13:23:31 Modified:src CHANGES Log: a few more updates Revision ChangesPath 1.619 +6 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.618 retrieving revision 1.619 diff -u -r1.618 -r1.619 --- CHANGES 1998/02/07 15:52:11 1.618 +++ CHANGES 1998/02/07 21:23:28 1.619 @@ -4,6 +4,12 @@ in the STANDARD_MODULE_STUFF portion, and the MODULE_MAGIC_NUMBER has been bumped accordingly. [Paul Sutton] + *) All BrowserMatch directives mentioned in + htdocs/manual/known_client_problems.html are in the default + configuration files. [Lars Eilebrecht] + + *) MiNT port update. [Jan Paul Schmidt] + *) HTTP/1.1 requires x-gzip and gzip encodings be treated equivalent, similarly for x-compress and compress. Apache now ignores a leading x- when comparing encodings. It also
cvs commit: apache-1.3/src/include buff.h
dgaudet 98/02/07 13:54:14 Modified:src/include buff.h Log: whoops forgot this part of my chunked patch Revision ChangesPath 1.34 +0 -1 apache-1.3/src/include/buff.h Index: buff.h === RCS file: /export/home/cvs/apache-1.3/src/include/buff.h,v retrieving revision 1.33 retrieving revision 1.34 diff -u -r1.33 -r1.34 --- buff.h1998/01/26 16:46:08 1.33 +++ buff.h1998/02/07 21:54:13 1.34 @@ -96,7 +96,6 @@ int incnt; /* number of bytes left to read from input buffer; * always 0 if had a read error */ int outchunk;/* location of chunk header when chunking */ -int outchunk_header_size;/* how long the header is */ int outcnt; /* number of byte put in output buffer */ unsigned char *inbase; unsigned char *outbase;
cvs commit: apache-1.3/src/test/vhtest/logs .cvsignore
dgaudet 98/02/08 14:50:19 Modified:src/test/vhtest README src/test/vhtest/conf common.conf test1.conf test1d.conf test2.conf test2d.conf test3.conf test4.conf test5.conf test6.conf Added: src/test/vhtest/logs .cvsignore Log: tweak tweak, docs were slightly wrong Revision ChangesPath 1.2 +1 -3 apache-1.3/src/test/vhtest/README Index: README === RCS file: /export/home/cvs/apache-1.3/src/test/vhtest/README,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- README1997/11/10 02:11:41 1.1 +++ README1998/02/08 22:50:12 1.2 @@ -19,9 +19,7 @@ To use: -cd conf -perl -pi.orig -e s#/home/dgaudet/ap/vhtest#`pwd`# *.conf -cd .. +perl -pi.orig -e s#/home/dgaudet/ap/vhtest#`pwd`# conf/*.conf ./runtest /path/to/httpd Or to run a specific test: 1.2 +2 -2 apache-1.3/src/test/vhtest/conf/common.conf Index: common.conf === RCS file: /export/home/cvs/apache-1.3/src/test/vhtest/conf/common.conf,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- common.conf 1997/11/10 02:11:46 1.1 +++ common.conf 1998/02/08 22:50:13 1.2 @@ -3,7 +3,7 @@ HostnameLookups off User nobody Group #-1 -ServerRoot /home/dgaudet/ap/vhtest +ServerRoot /home/dgaudet/ap/apachen/src/test/vhtest ErrorLog logs/error_log LogLevel debug # vhost Host header request response-code @@ -13,7 +13,7 @@ ResourceConfig /dev/null AccessConfig /dev/null ServerName main -DocumentRoot /home/dgaudet/ap/vhtest/docroot/main +DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/main Directory / AllowOverride none 1.2 +5 -5 apache-1.3/src/test/vhtest/conf/test1.conf Index: test1.conf === RCS file: /export/home/cvs/apache-1.3/src/test/vhtest/conf/test1.conf,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- test1.conf1997/11/10 02:11:48 1.1 +++ test1.conf1998/02/08 22:50:14 1.2 @@ -1,6 +1,6 @@ ## test some basic ip-vhosts and a single name-vhost address -Include /home/dgaudet/ap/vhtest/conf/common.conf +Include /home/dgaudet/ap/apachen/src/test/vhtest/conf/common.conf #Listen 127.0.0.1:8080 #Listen 127.0.0.2:8080 @@ -9,20 +9,20 @@ VirtualHost 127.0.0.1:8080 ServerName vhost1 -DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost1 +DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost1 /VirtualHost VirtualHost 127.0.0.2:8080 ServerName vhost2 -DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost2 +DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost2 /VirtualHost VirtualHost 127.0.0.3:8080 ServerName vhost3 -DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost3 +DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost3 /VirtualHost VirtualHost 127.0.0.3:8080 ServerName vhost4 -DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost4 +DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost4 /VirtualHost 1.2 +6 -6 apache-1.3/src/test/vhtest/conf/test1d.conf Index: test1d.conf === RCS file: /export/home/cvs/apache-1.3/src/test/vhtest/conf/test1d.conf,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- test1d.conf 1997/11/10 02:11:48 1.1 +++ test1d.conf 1998/02/08 22:50:14 1.2 @@ -1,6 +1,6 @@ ## same as test1, but we throw in a _default_ -Include /home/dgaudet/ap/vhtest/conf/common.conf +Include /home/dgaudet/ap/apachen/src/test/vhtest/conf/common.conf #Listen 127.0.0.1:8080 #Listen 127.0.0.2:8080 @@ -9,25 +9,25 @@ VirtualHost 127.0.0.1:8080 ServerName vhost1 -DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost1 +DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost1 /VirtualHost VirtualHost 127.0.0.2:8080 ServerName vhost2 -DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost2 +DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost2 /VirtualHost VirtualHost 127.0.0.3:8080 ServerName vhost3 -DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost3 +DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost3 /VirtualHost VirtualHost 127.0.0.3:8080 ServerName vhost4 -DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost4 +DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost4 /VirtualHost VirtualHost _default_:8080 ServerName default1
cvs commit: apache-1.3/src/test/vhtest/conf common.conf test1.conf test1d.conf test2.conf test2d.conf test3.conf test4.conf test5.conf test6.conf
dgaudet 98/02/08 14:51:29 Modified:src/test/vhtest/conf common.conf test1.conf test1d.conf test2.conf test2d.conf test3.conf test4.conf test5.conf test6.conf Log: oh foo this method of configuration sucks Revision ChangesPath 1.3 +2 -2 apache-1.3/src/test/vhtest/conf/common.conf Index: common.conf === RCS file: /export/home/cvs/apache-1.3/src/test/vhtest/conf/common.conf,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- common.conf 1998/02/08 22:50:13 1.2 +++ common.conf 1998/02/08 22:51:24 1.3 @@ -3,7 +3,7 @@ HostnameLookups off User nobody Group #-1 -ServerRoot /home/dgaudet/ap/apachen/src/test/vhtest +ServerRoot /home/dgaudet/ap/vhtest ErrorLog logs/error_log LogLevel debug # vhost Host header request response-code @@ -13,7 +13,7 @@ ResourceConfig /dev/null AccessConfig /dev/null ServerName main -DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/main +DocumentRoot /home/dgaudet/ap/vhtest/docroot/main Directory / AllowOverride none 1.3 +5 -5 apache-1.3/src/test/vhtest/conf/test1.conf Index: test1.conf === RCS file: /export/home/cvs/apache-1.3/src/test/vhtest/conf/test1.conf,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- test1.conf1998/02/08 22:50:14 1.2 +++ test1.conf1998/02/08 22:51:24 1.3 @@ -1,6 +1,6 @@ ## test some basic ip-vhosts and a single name-vhost address -Include /home/dgaudet/ap/apachen/src/test/vhtest/conf/common.conf +Include /home/dgaudet/ap/vhtest/conf/common.conf #Listen 127.0.0.1:8080 #Listen 127.0.0.2:8080 @@ -9,20 +9,20 @@ VirtualHost 127.0.0.1:8080 ServerName vhost1 -DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost1 +DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost1 /VirtualHost VirtualHost 127.0.0.2:8080 ServerName vhost2 -DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost2 +DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost2 /VirtualHost VirtualHost 127.0.0.3:8080 ServerName vhost3 -DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost3 +DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost3 /VirtualHost VirtualHost 127.0.0.3:8080 ServerName vhost4 -DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost4 +DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost4 /VirtualHost 1.3 +6 -6 apache-1.3/src/test/vhtest/conf/test1d.conf Index: test1d.conf === RCS file: /export/home/cvs/apache-1.3/src/test/vhtest/conf/test1d.conf,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- test1d.conf 1998/02/08 22:50:14 1.2 +++ test1d.conf 1998/02/08 22:51:25 1.3 @@ -1,6 +1,6 @@ ## same as test1, but we throw in a _default_ -Include /home/dgaudet/ap/apachen/src/test/vhtest/conf/common.conf +Include /home/dgaudet/ap/vhtest/conf/common.conf #Listen 127.0.0.1:8080 #Listen 127.0.0.2:8080 @@ -9,25 +9,25 @@ VirtualHost 127.0.0.1:8080 ServerName vhost1 -DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost1 +DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost1 /VirtualHost VirtualHost 127.0.0.2:8080 ServerName vhost2 -DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost2 +DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost2 /VirtualHost VirtualHost 127.0.0.3:8080 ServerName vhost3 -DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost3 +DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost3 /VirtualHost VirtualHost 127.0.0.3:8080 ServerName vhost4 -DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/vhost4 +DocumentRoot /home/dgaudet/ap/vhtest/docroot/vhost4 /VirtualHost VirtualHost _default_:8080 ServerName default1 -DocumentRoot /home/dgaudet/ap/apachen/src/test/vhtest/docroot/default1 +DocumentRoot /home/dgaudet/ap/vhtest/docroot/default1 /VirtualHost 1.3 +6 -6 apache-1.3/src/test/vhtest/conf/test2.conf Index: test2.conf === RCS file: /export/home/cvs/apache-1.3/src/test/vhtest/conf/test2.conf,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- test2.conf1998/02/08 22:50:14 1.2 +++ test2.conf1998/02/08 22:51:25 1.3 @@ -1,7 +1,7 @@ ## test more complex ip-vhosts with multiple ports, and name-vhosts on a ## single port of one ip -Include /home/dgaudet/ap/apachen/src/test
cvs commit: apache-2.0/docs stacked_io
dgaudet 98/02/09 01:30:01 Added: docs stacked_io Log: Ed's latest stacked i/o proposal Revision ChangesPath 1.1 apache-2.0/docs/stacked_io Index: stacked_io === This past summer, Alexei and I wrote a spec for an I/O Filters API... this proposal addresses one part of that -- 'stacked' I/O with buff.c. We have a couple of options for stacked I/O: we can either use existing code, such as sfio, or we can rewrite buff.c to do it. We've gone over the first possibility at length, though, and there were problems with each implemenation which was mentioned (licensing and compatibility, specifically); so far as I know, those remain issues. Btw -- sfio will be supported w/in this model... it just wouldn't be the basis for the model's implementation. -- Ed Korthof| Web Server Engineer -- -- [EMAIL PROTECTED]| Organic Online, Inc -- -- (415) 278-5676| Fax: (415) 284-6891 -- --- Stacked I/O With BUFFs Sections: 1.) Overview 2.) The API User-supplied structures API functions 3.) Detailed Description The bfilter structure The bbottomfilter structure The BUFF structure Public functions in buff.c 4.) Efficiency Considerations Buffering Memory copies Function chaining writev 5.) Code in buff.c Default Functions Heuristics for writev Writing Reading Flushing data Closing stacks and filters Flags and Options * Overview The intention of this API is to make Apache's BUFF structure modular while retaining high efficiency. Basically, it involves rewriting buff.c to provide 'stacked' I/O -- where the data passed through a series of 'filters', which may modify it. There are two parts to this, the core code for BUFF structures, and the filters used to implement new behavior. filter is used to refer to both the sets of 5 functions, as shown in the bfilter structure in the next section, and to BUFFs which are created using a specific bfliter. These will also be occasionally refered to as user-supplied, though the Apache core will need to use these as well for basic functions. The user-supplied functions should use only the public BUFF API, rather than any internal details or functions. One thing which may not be clear is that in the core BUFF functions, the BUFF pointer passed in refers to the BUFF on which the operation will happen. OTOH, in the user-supplied code, the BUFF passed in is the next buffer down the chain, not the current one. * The API User-supplied structures First, the bfilter structure is used in all filters: typedef struct { int (*writev)(BUFF *, void *, struct iovect *, int); int (*read)(BUFF *, void *, char *, int); int (*write)(BUFF *, void *, const char *, int); int (*flush)(BUFF *, void *, const char *, int, bfilter *); int (*transmitfile)(BUFF *, void *, file_info_ptr *); void (*close)(BUFF *, void *); } bfilter; bfilters are placed into a BUFF structure along with a user-supplied void * pointer. Second, the following structure is for use with a filter which can sit at the bottom of the stack: typedef struct { void *(*bgetfileinfo)(BUFF *, void *); void (*bpushfileinfo)(BUFF *, void *, void *); } bbottomfilter; BUFF API functions The following functions are new BUFF API functions: For filters: BUFF * bcreatestack(pool *p, int flags, struct bfilter *, struct bbottomfilter *, void *); BUFF * bpushfilter (BUFF *, struct bfilter *, void *); BUFF * bpushbuffer (BUFF *, BUFF *); BUFF * bpopfilter(BUFF *); BUFF * bpopbuffer(BUFF *); void bclosestack(BUFF *); For BUFFs in general: int btransmitfile(BUFF *, file_info_ptr *); int bsetstackopts(BUFF *, int, const void *); int bsetstackflags(BUFF *, int, int); Note that a new flag is needed for bsetstackflags: B_MAXBUFFERING The current bcreate should become BUFF * bcreatebuffer (pool *p, int flags, struct bfilter *, void *); * Detailed Explanation bfilter structure The void * pointer used in all these functions, as well as those
cvs commit: apache-2.0 STATUS
dgaudet 98/02/09 22:49:35 Modified:.STATUS Log: Revision ChangesPath 1.21 +10 -8 apache-2.0/STATUS Index: STATUS === RCS file: /export/home/cvs/apache-2.0/STATUS,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- STATUS1998/02/09 11:10:31 1.20 +++ STATUS1998/02/10 06:49:34 1.21 @@ -4,6 +4,8 @@ 2.0 : In pre-alpha development see: http://www.arctic.org/~dgaudet/apache/2.0/process-model +Dean says: This sounds like I'm working on implementing this +proposal. I'm not. Nobody is as far as I know. Plan: @@ -44,14 +46,14 @@ to add more, but try not to duplicate earlier items too much. * multithreading. - Status: Brian +1, Ken +1, Dean +1, Jim +1, Paul +1, Sameer +1, Marc +1, Ralf +1, MarkC +1, Ben +1 + Status: Brian +1, Ken +1, Jim +1, Paul +1, Sameer +1, Marc +1, Ralf +1, MarkC +1, Ben +1 - Thread Abstraction - Status: Sameer +1, Marc +1, MarkC +1, Ben +1 + Status: Sameer +1, Marc +1, MarkC +1, Ben +1, Dean +1 * revamped process model (Dean's proposal) Dean says: it's hard to do the multithreading work cleanly without considering a bunch of this - Status: Marc +1 on much of it; threads aren't enough for perf. MarkC +1, Paul +1 + Status: Marc +1 on much of it; threads aren't enough for perf. MarkC +1, Paul +1, Dean +1 * new layered I/O. Status: Brian +1, Ken +1, Dean +1, Jim +1, Paul +1, Sameer +1, Marc +1, Ralf +1, MarkC +1, Ben +1 @@ -81,7 +83,7 @@ Status: Ken +1 . documented API - Status: Ken +1, Sameer +1, Marc +1, Ralf +1, Paul +1 + Status: Ken +1, Sameer +1, Marc +1, Ralf +1, Paul +1, Dean +1 . just new API phases Status: Brian +1, Jim +1, Sameer +1 (just the gaping holes), @@ -89,13 +91,13 @@ . change API 'phase' model to use module-registered hooks rather than a fixed static structure - Status: Ken +1, Ralf +1, MarkC +1, Paul +1 + Status: Ken +1, Ralf +1, MarkC +1, Paul +1, Dean +1 - . use virtual functions for module hooks + . use virtual functions for module hooks Status: Ben +1, Paul -1 . clearly identify API functions by renaming them - Status: Ken +1, Ralf +1, Ben +1, Paul +1 (plus back compat.) + Status: Ken +1, Ralf +1, Ben +1, Paul +1 (plus back compat.), Dean +1 . backward compatibility with 1.3 (just require a recompile) if functions get renamed, old names retained as wrappers @@ -103,7 +105,7 @@ . make API call syntax rational (e.g., all r*() routines list r as their first argument, et cetera) - Status: Ken +1, Ralf +0, Paul +0 + Status: Ken +1, Ralf +0, Paul +0, Dean +0 * new configuration language Status: Dean +1, Marc +1, Ralf +0, Ben +1, Paul +0
cvs commit: apache-1.3/src/modules/experimental mod_mmap_static.c
dgaudet 98/02/10 03:00:59 Added: src/modules/experimental mod_mmap_static.c Log: here ya go Revision ChangesPath 1.1 apache-1.3/src/modules/experimental/mod_mmap_static.c Index: mod_mmap_static.c === /* * Copyright (c) 1998 The Apache Group. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright *notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright *notice, this list of conditions and the following disclaimer in *the documentation and/or other materials provided with the *distribution. * * 3. All advertising materials mentioning features or use of this *software must display the following acknowledgment: *This product includes software developed by the Apache Group *for use in the Apache HTTP server project (http://www.apache.org/). * * 4. The names Apache Server and Apache Group must not be used to *endorse or promote products derived from this software without *prior written permission. For written permission, please contact *[EMAIL PROTECTED] * * 5. Redistributions of any form whatsoever must retain the following *acknowledgment: *This product includes software developed by the Apache Group *for use in the Apache HTTP server project (http://www.apache.org/). * * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Group and was originally based * on public domain software written at the National Center for * Supercomputing Applications, University of Illinois, Urbana-Champaign. * For more information on the Apache Group and the Apache HTTP server * project, please see http://www.apache.org/. * */ /* * mod_mmap_static: mmap a config-time list of files for faster serving * * v0.04 * * Author: Dean Gaudet [EMAIL PROTECTED] * * v0.01: initial implementation * v0.02: get rid of the extra stat() in the core by filling in what we know * v0.03: get rid of the cached match from the xlat routine since there are *many cases where the request is modified between it and the *handler... so we do the binary search twice, but the second time *we can use st_ino and st_dev to speed it up. * v0.04: work around mod_rewrite, which sets r-filename to the uri first */ /* Documentation: The concept is simple. Some sites have a set of static files that are really busy, and change infrequently (or even on a regular schedule). Save time by mmap()ing these files into memory and avoid a lot of the crap required to do normal file serving. Place directives such as: mmapfile /path/to/file1 mmapfile /path/to/file2 ... into your configuration. These files are only mmap()d when the server is restarted, so if you change the list, or if the files are changed, then you'll need to restart the server. To reiterate that point: if the files are modified *in place* without restarting the server you may end up serving requests that are completely bogus. You should update files by unlinking the old copy and putting a new copy in place. Most tools such as rdist and mv do this. There's no such thing as inheriting these files across vhosts or whatever... place the directives in the main server only. Known problems: Don't use Alias or RewriteRule to move these files around... unless you feel like paying for an extra stat() on each request. This is a deficiency in the Apache API
cvs commit: apache-1.3/src/modules/experimental .cvsignore
dgaudet 98/02/10 03:03:29 Added: src/modules/experimental .cvsignore Log: the usual Revision ChangesPath 1.1 apache-1.3/src/modules/experimental/.cvsignore Index: .cvsignore === Makefile
cvs commit: apache-1.3/src/modules/standard mod_autoindex.c mod_mime.c mod_negotiation.c
dgaudet 98/02/11 17:09:47 Modified:src CHANGES src/modules/standard mod_autoindex.c mod_mime.c mod_negotiation.c Log: Old clients really don't want to see Content-Encoding: gzip. So now we preserve the encoding given by the AddEncoding directive. This allows us, for example, to move forward with things like AddEncoding deflate .df, while preserving backwards brokenness with AddEncoding x-gzip .gz. Submitted by: [EMAIL PROTECTED] Reviewed by: Dean Gaudet Revision ChangesPath 1.626 +4 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.625 retrieving revision 1.626 diff -u -r1.625 -r1.626 --- CHANGES 1998/02/09 13:25:40 1.625 +++ CHANGES 1998/02/12 01:09:41 1.626 @@ -1,5 +1,9 @@ Changes with Apache 1.3b5 + *) Preserve the content encoding given by the AddEncoding directive + when the client doesn't otherwise specify an encoding. + [Ronald Tschalaer [EMAIL PROTECTED]] + *) WIN32: Append a '.' to extensionless executables in spawn[lv]e* replacements, which makes them work. [Sam Robb [EMAIL PROTECTED], Ben Laurie] 1.67 +0 -6 apache-1.3/src/modules/standard/mod_autoindex.c Index: mod_autoindex.c === RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_autoindex.c,v retrieving revision 1.66 retrieving revision 1.67 diff -u -r1.66 -r1.67 --- mod_autoindex.c 1998/02/06 09:11:39 1.66 +++ mod_autoindex.c 1998/02/12 01:09:44 1.67 @@ -178,9 +178,6 @@ to = ^^DIRECTORY^^; if (cmd-info == BY_ENCODING) { str_tolower(to); - if (to[0] == 'x' to[1] == '-') { - to += 2; - } } push_item(((autoindex_config_rec *) d)-alt_list, cmd-info, to, cmd-path, alt); @@ -207,9 +204,6 @@ to = ^^DIRECTORY^^; if (cmd-info == BY_ENCODING) { str_tolower(to); - if (to[0] == 'x' to[1] == '-') { - to += 2; - } } push_item(((autoindex_config_rec *) d)-icon_list, cmd-info, to, cmd-path, 1.31 +0 -2 apache-1.3/src/modules/standard/mod_mime.c Index: mod_mime.c === RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_mime.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- mod_mime.c1998/02/06 09:11:39 1.30 +++ mod_mime.c1998/02/12 01:09:44 1.31 @@ -127,8 +127,6 @@ { if (*ext == '.') ++ext; -if ((enc[0] == 'x' || enc[0] == 'X') enc[1] == '-') -enc += 2; table_set(m-encoding_types, ext, enc); return NULL; } 1.70 +16 -6 apache-1.3/src/modules/standard/mod_negotiation.c Index: mod_negotiation.c === RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_negotiation.c,v retrieving revision 1.69 retrieving revision 1.70 diff -u -r1.69 -r1.70 --- mod_negotiation.c 1998/02/10 05:54:02 1.69 +++ mod_negotiation.c 1998/02/12 01:09:45 1.70 @@ -1463,6 +1463,7 @@ int i; accept_rec *accept_recs = (accept_rec *) neg-accept_encodings-elts; char *enc = variant-content_encoding; +char *x_enc = NULL; if (!enc || is_identity_encoding(enc)) { return; @@ -1479,19 +1480,28 @@ /* Go through each of the encodings on the Accept-Encoding: header, * looking for a match with our encoding - */ + * Prefer non- 'x-' prefixed token (e.g. gzip over x-gzip) */ +if (enc[0] == 'x' enc[1] == '-') { +enc += 2; +} for (i = 0; i neg-accept_encodings-nelts; ++i) { char *name = accept_recs[i].type_name; -int off = 0; - - if (name[0] == 'x' name[1] == '-') -off = 2; -if (!strcmp(name+off, enc)) { +if (!strcmp(name, enc)) { variant-encoding_quality = 1; variant-content_encoding = name; return; } + +if (name[0] == 'x' name[1] == '-' !strcmp(name+2, enc)) { +x_enc = name; +} +} + +if (x_enc != NULL) { +variant-encoding_quality = 1; +variant-content_encoding = x_enc; +return; } /* Encoding not found on Accept-Encoding: header, so it is
cvs commit: apache-1.3/htdocs/manual/mod mod_mime.html
dgaudet 98/02/11 17:14:37 Modified:htdocs/manual/mod mod_mime.html Log: doc the addencoding mess Revision ChangesPath 1.19 +15 -1 apache-1.3/htdocs/manual/mod/mod_mime.html Index: mod_mime.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_mime.html,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- mod_mime.html 1998/02/05 20:04:56 1.18 +++ mod_mime.html 1998/02/12 01:14:36 1.19 @@ -117,7 +117,21 @@ /CODE/BLOCKQUOTE This will cause files ending in .gz to be marked as encoded using the x-gzip -encoding, and .Z files to be marked as encoded with x-compress.PHR +encoding, and .Z files to be marked as encoded with x-compress.P + +Old clients expect codex-gzip/code and codex-compress/code, +however the standard dictates that they're equivalent to codegzip/code +and codecompress/code respectively. Apache does content encoding +comparisons by ignoring any leading codex-/code. When responding +with an encoding Apache will use whatever form (i.e. codex-foo/code +or codefoo/code) the client requested. If the client didn't +specifically request a particular form Apache will use the form given by +the codeAddEncoding/code directive. To make this long story short, +you should always use codex-gzip/code and codex-compress/code +for these two specific encodings. More recent encodings, such as +codedeflate/code should be specified without the codex-/code. + +PHR H2A name=addhandlerAddHandler/A/H2
cvs commit: apache-1.3/src/modules/standard mod_autoindex.c mod_negotiation.c
dgaudet 98/02/11 18:18:45 Modified:src/ap ap_snprintf.c src/helpers dummy.c src/main fnmatch.c http_core.c src/modules/standard mod_autoindex.c mod_negotiation.c Log: Clean up gcc 2.8.0 -Wall warnings... so we don't have to deal with PRs about them. Revision ChangesPath 1.13 +2 -1 apache-1.3/src/ap/ap_snprintf.c Index: ap_snprintf.c === RCS file: /export/home/cvs/apache-1.3/src/ap/ap_snprintf.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- ap_snprintf.c 1998/01/07 16:45:56 1.12 +++ ap_snprintf.c 1998/02/12 02:18:38 1.13 @@ -426,7 +426,7 @@ return (buf); } -if (format == 'f') +if (format == 'f') { if (decimal_point = 0) { *s++ = '0'; if (precision 0) { @@ -443,6 +443,7 @@ if (precision 0 || add_dp) *s++ = '.'; } +} else { *s++ = *p++; if (precision 0 || add_dp) 1.4 +1 -1 apache-1.3/src/helpers/dummy.c Index: dummy.c === RCS file: /export/home/cvs/apache-1.3/src/helpers/dummy.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- dummy.c 1997/07/25 02:03:17 1.3 +++ dummy.c 1998/02/12 02:18:39 1.4 @@ -1,7 +1,7 @@ /* this file is used by TestLib */ int foo ( const char *c ) { -return 0; +return *c; } int main(void) { const char *c = '\0'; 1.6 +6 -3 apache-1.3/src/main/fnmatch.c Index: fnmatch.c === RCS file: /export/home/cvs/apache-1.3/src/main/fnmatch.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- fnmatch.c 1997/11/06 22:03:40 1.5 +++ fnmatch.c 1998/02/12 02:18:40 1.6 @@ -84,12 +84,15 @@ return (FNM_NOMATCH); /* Optimize for pattern with * at end or before /. */ - if (c == EOS) - if (flags FNM_PATHNAME) + if (c == EOS) { + if (flags FNM_PATHNAME) { return (strchr(string, '/') == NULL ? 0 : FNM_NOMATCH); - else + } + else { return (0); + } + } else if (c == '/' flags FNM_PATHNAME) { if ((string = strchr(string, '/')) == NULL) return (FNM_NOMATCH); 1.158 +12 -6 apache-1.3/src/main/http_core.c Index: http_core.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_core.c,v retrieving revision 1.157 retrieving revision 1.158 diff -u -r1.157 -r1.158 --- http_core.c 1998/02/08 23:15:34 1.157 +++ http_core.c 1998/02/12 02:18:41 1.158 @@ -690,11 +690,14 @@ const char *err = check_cmd_context(cmd, NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT); if (err != NULL) return err; -if (!is_directory (arg)) - if (cmd-server-is_virtual) +if (!is_directory (arg)) { + if (cmd-server-is_virtual) { fprintf (stderr, Warning: DocumentRoot [%s] does not exist\n, arg); - else + } + else { return DocumentRoot must be a directory; + } +} conf-document_root = arg; return NULL; @@ -1551,11 +1554,14 @@ return; } -if ((str = getword_conf(cmd-pool, arg))) - if (!strcasecmp(str, max)) +if ((str = getword_conf(cmd-pool, arg))) { + if (!strcasecmp(str, max)) { cur = limit-rlim_max; - else + } + else { cur = atol(str); + } +} else { aplog_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, cmd-server, Invalid parameters for %s, cmd-cmd-name); 1.68 +8 -4 apache-1.3/src/modules/standard/mod_autoindex.c Index: mod_autoindex.c === RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_autoindex.c,v retrieving revision 1.67 retrieving revision 1.68 diff -u -r1.67 -r1.68 --- mod_autoindex.c 1998/02/12 01:09:44 1.67 +++ mod_autoindex.c 1998/02/12 02:18:43 1.68 @@ -635,12 +635,16 @@ if ((p = ind(titlebuf[++x], '')) != -1) titlebuf[x + p] = '\0'; /* Scan for line breaks for Tanmoy's secretary */ - for (y = x; titlebuf[y]; y++) - if ((titlebuf[y] == CR) || (titlebuf[y] == LF)) - if (y == x) + for (y = x; titlebuf[y]; y
cvs commit: apache-1.3/src/regex Makefile.tmpl
dgaudet 98/02/12 02:15:30 Modified:src Configure Makefile.tmpl src/ap Makefile.tmpl src/main Makefile.tmpl src/modules/example Makefile.tmpl src/modules/experimental Makefile.tmpl src/modules/extra Makefile.tmpl src/modules/proxy Makefile.tmpl src/modules/standard Makefile.tmpl src/modules/test Makefile.tmpl src/os/unix Makefile.tmpl src/regex Makefile.tmpl Log: Out of date dependencies are worse than no dependencies. Without an automated rule we're unlikely to keep them up to date. Resurrect the make depend which existed prior to the makefile rearrangement. It's not perfect, like it lists os/unix/os.h... but that won't break anyone -- win32 developers don't use these dependencies. Folks don't any of them to just compile the server once... and aren't hurt by listing a dependency that doesn't apply to their compilation environment. Revision ChangesPath 1.184 +1 -1 apache-1.3/src/Configure Index: Configure === RCS file: /export/home/cvs/apache-1.3/src/Configure,v retrieving revision 1.183 retrieving revision 1.184 diff -u -r1.183 -r1.184 --- Configure 1998/02/04 18:18:49 1.183 +++ Configure 1998/02/12 10:15:15 1.184 @@ -1090,7 +1090,7 @@ default: all -all clean :: +all clean depend :: for i in \$(MODULES); do (cd \$\$i \$(MAKE) CC='\$(CC)' AUX_CFLAGS='\$(CFLAGS)' RANLIB='\$(RANLIB)' \$@) || exit 1; done EOF 1.76 +8 -3 apache-1.3/src/Makefile.tmpl Index: Makefile.tmpl === RCS file: /export/home/cvs/apache-1.3/src/Makefile.tmpl,v retrieving revision 1.75 retrieving revision 1.76 diff -u -r1.75 -r1.76 --- Makefile.tmpl 1998/02/04 13:32:26 1.75 +++ Makefile.tmpl 1998/02/12 10:15:16 1.76 @@ -62,12 +62,17 @@ $(CC) -MM $(INCLUDES) $(CFLAGS) *.c Makefile.new \ mv Makefile.tmpl Makefile.tmpl.bak \ mv Makefile.new Makefile.tmpl - + for i in $(SUBDIRS); do \ + ( cd $$i $(MAKE) CC='$(CC)' AUX_CFLAGS='$(CFLAGS)' RANLIB='$(RANLIB)' depend) || exit 1; \ + done #Dependencies $(OBJS): Makefile # DO NOT REMOVE -modules.o: modules.c include/httpd.h include/conf.h include/alloc.h \ - include/buff.h include/http_config.h +buildmark.o: buildmark.c +modules.o: modules.c include/httpd.h include/conf.h os/unix/os.h \ + include/hsregex.h include/alloc.h include/buff.h include/ap.h \ + include/http_config.h +tt.o: tt.c 1.12 +27 -7 apache-1.3/src/ap/Makefile.tmpl Index: Makefile.tmpl === RCS file: /export/home/cvs/apache-1.3/src/ap/Makefile.tmpl,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- Makefile.tmpl 1998/02/03 20:00:55 1.11 +++ Makefile.tmpl 1998/02/12 10:15:18 1.12 @@ -24,10 +24,30 @@ ar cr $@ $(OBJS) $(RANLIB) $@ -# dependencies -ap_signal.o: $(INCDIR)/httpd.h -ap_slack.o: $(INCDIR)/httpd.h $(INCDIR)/http_log.h -ap_snprintf.o: $(INCDIR)/conf.h -ap_strings.o: $(INCDIR)/httpd.h -ap_cpystrn.o: $(INCDIR)/httpd.h -ap_execve.o: $(INCDIR)/httpd.h $(INCDIR)/http_log.h +# We really don't expect end users to use this rule. It works only with +# gcc, and rebuilds Makefile.tmpl. You have to re-run Configure after +# using it. +depend: + sed -ne '1,/^# DO NOT REMOVE/p' Makefile.tmpl Makefile.new \ + $(CC) -MM $(INCLUDES) $(CFLAGS) *.c Makefile.new \ + mv Makefile.tmpl Makefile.tmpl.bak \ + mv Makefile.new Makefile.tmpl + +# DO NOT REMOVE +ap_cpystrn.o: ap_cpystrn.c ../include/httpd.h ../include/conf.h \ + ../os/unix/os.h ../include/hsregex.h ../include/alloc.h \ + ../include/buff.h ../include/ap.h +ap_execve.o: ap_execve.c ../include/httpd.h ../include/conf.h \ + ../os/unix/os.h ../include/hsregex.h ../include/alloc.h \ + ../include/buff.h ../include/ap.h ../include/http_log.h +ap_signal.o: ap_signal.c ../include/httpd.h ../include/conf.h \ + ../os/unix/os.h ../include/hsregex.h ../include/alloc.h \ + ../include/buff.h ../include/ap.h +ap_slack.o: ap_slack.c ../include/httpd.h ../include/conf.h \ + ../os/unix/os.h ../include/hsregex.h ../include/alloc.h \ + ../include/buff.h ../include/ap.h ../include/http_log.h +ap_snprintf.o: ap_snprintf.c ../include/conf.h ../os/unix/os.h \ + ../include/hsregex.h +ap_strings.o: ap_strings.c ../include/httpd.h ../include/conf.h \ + ../os/unix/os.h ../include/hsregex.h ../include/alloc.h \ + ../include/buff.h ../include/ap.h 1.10 +88 -55apache-1.3/src/main
cvs commit: apache-1.3/src/main buff.c
dgaudet 98/02/12 13:13:19 Modified:src/main buff.c Log: fix an unsigned char * / signed char * mistake. Revision ChangesPath 1.64 +1 -1 apache-1.3/src/main/buff.c Index: buff.c === RCS file: /export/home/cvs/apache-1.3/src/main/buff.c,v retrieving revision 1.63 retrieving revision 1.64 diff -u -r1.63 -r1.64 --- buff.c1998/02/07 10:34:43 1.63 +++ buff.c1998/02/12 21:13:18 1.64 @@ -428,7 +428,7 @@ static void end_chunk(BUFF *fb) { int i; -char *strp; +unsigned char *strp; if (fb-outchunk == -1) { /* not chunking */
cvs commit: apache-1.2/src CHANGES mod_rewrite.c
dgaudet 98/02/13 18:51:39 Modified:src CHANGES mod_rewrite.c Log: mod_rewrite's RewriteLog should behave like mod_log_config, it shouldn't force hostname lookups. PR: 1684 Revision ChangesPath 1.293 +3 -0 apache-1.2/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.2/src/CHANGES,v retrieving revision 1.292 retrieving revision 1.293 diff -u -r1.292 -r1.293 --- CHANGES 1998/02/03 10:00:47 1.292 +++ CHANGES 1998/02/14 02:51:36 1.293 @@ -1,5 +1,8 @@ Changes with Apache 1.2.6 + *) mod_rewrite's RewriteLog should behave like mod_log_config, it + shouldn't force hostname lookups. [Dean Gaudet] PR#1684 + *) mod_include when using XBitHack Full would send ETags in addition to sending Last-Modifieds. This is incorrect HTTP/1.1 behaviour. [Dean Gaudet] PR#1133 1.31 +1 -1 apache-1.2/src/mod_rewrite.c Index: mod_rewrite.c === RCS file: /export/home/cvs/apache-1.2/src/mod_rewrite.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- mod_rewrite.c 1998/02/01 02:47:41 1.30 +++ mod_rewrite.c 1998/02/14 02:51:37 1.31 @@ -2377,7 +2377,7 @@ ruser = \\; } -rhost = get_remote_host(connect, r-server-module_config, REMOTE_NAME); +rhost = get_remote_host(connect, r-server-module_config, REMOTE_NOLOOKUP); if (rhost == NULL) rhost = UNKNOWN-HOST;
cvs commit: apache-1.3/src/os/win32 os.h
dgaudet 98/02/13 19:08:01 Modified:src CHANGES src/os/bs2000 os-inline.c os.h src/os/emx os-inline.c os.h src/os/unix os-inline.c os.h src/os/win32 os.h Log: It's hard to use os_is_path_absolute() unless it takes a const char *. Revision ChangesPath 1.628 +3 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.627 retrieving revision 1.628 diff -u -r1.627 -r1.628 --- CHANGES 1998/02/14 01:02:05 1.627 +++ CHANGES 1998/02/14 03:07:53 1.628 @@ -1,5 +1,8 @@ Changes with Apache 1.3b6 + *) os_is_path_absolute() now takes a const char * instead of a char *. + [Dean Gaudet] + Changes with Apache 1.3b5 *) Preserve the content encoding given by the AddEncoding directive 1.2 +1 -1 apache-1.3/src/os/bs2000/os-inline.c Index: os-inline.c === RCS file: /export/home/cvs/apache-1.3/src/os/bs2000/os-inline.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- os-inline.c 1998/01/13 23:11:31 1.1 +++ os-inline.c 1998/02/14 03:07:55 1.2 @@ -24,7 +24,7 @@ #endif -INLINE int os_is_path_absolute(char *file) +INLINE int os_is_path_absolute(const char *file) { return (file file[0] == '/' ? 1 : 0); } 1.4 +1 -1 apache-1.3/src/os/bs2000/os.h Index: os.h === RCS file: /export/home/cvs/apache-1.3/src/os/bs2000/os.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- os.h 1998/01/31 23:52:49 1.3 +++ os.h 1998/02/14 03:07:55 1.4 @@ -20,7 +20,7 @@ /* Compiler does not support inline, so prototype the inlineable functions * as normal */ -extern int os_is_path_absolute(char *f); +extern int os_is_path_absolute(const char *f); #endif /* Sorry if this is ugly, but the include order doesn't allow me 1.2 +1 -1 apache-1.3/src/os/emx/os-inline.c Index: os-inline.c === RCS file: /export/home/cvs/apache-1.3/src/os/emx/os-inline.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- os-inline.c 1997/11/05 12:48:22 1.1 +++ os-inline.c 1998/02/14 03:07:56 1.2 @@ -24,7 +24,7 @@ #endif -INLINE int os_is_path_absolute(char *file) +INLINE int os_is_path_absolute(const char *file) { /* For now, just do the same check that http_request.c and mod_alias.c * do. 1.2 +1 -1 apache-1.3/src/os/emx/os.h Index: os.h === RCS file: /export/home/cvs/apache-1.3/src/os/emx/os.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- os.h 1997/11/05 12:48:23 1.1 +++ os.h 1998/02/14 03:07:57 1.2 @@ -16,7 +16,7 @@ /* Compiler does not support inline, so prototype the inlineable functions * as normal */ -extern int os_is_path_absolute(char *f); +extern int os_is_path_absolute(const char *f); #endif /* OS/2 doesn't have symlinks so S_ISLNK is always false */ 1.3 +1 -1 apache-1.3/src/os/unix/os-inline.c Index: os-inline.c === RCS file: /export/home/cvs/apache-1.3/src/os/unix/os-inline.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- os-inline.c 1997/12/26 15:08:13 1.2 +++ os-inline.c 1998/02/14 03:07:58 1.3 @@ -24,7 +24,7 @@ #endif -INLINE int os_is_path_absolute(char *file) +INLINE int os_is_path_absolute(const char *file) { return file[0] == '/'; } 1.5 +1 -1 apache-1.3/src/os/unix/os.h Index: os.h === RCS file: /export/home/cvs/apache-1.3/src/os/unix/os.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- os.h 1997/10/07 05:53:42 1.4 +++ os.h 1998/02/14 03:07:58 1.5 @@ -16,5 +16,5 @@ /* Compiler does not support inline, so prototype the inlineable functions * as normal */ -extern int os_is_path_absolute(char *f); +extern int os_is_path_absolute(const char *f); #endif 1.12 +1 -1 apache-1.3/src/os/win32/os.h Index: os.h === RCS file: /export/home/cvs/apache-1.3/src/os/win32/os.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- os.h
cvs commit: apache-1.3/src/modules/standard mod_userdir.c
dgaudet 98/02/13 19:26:59 Modified:src CHANGES src/modules/standard mod_userdir.c Log: Fix security hole with UserDir /a/b without a * in the path... you could request /~../ and get /a. (djg: I also did a few touches of cleanup.) PR: 1701 Submitted by: Lauri Jesmin [EMAIL PROTECTED] Reviewed by: Marc Slemko, Dean Gaudet Revision ChangesPath 1.629 +5 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.628 retrieving revision 1.629 diff -u -r1.628 -r1.629 --- CHANGES 1998/02/14 03:07:53 1.628 +++ CHANGES 1998/02/14 03:26:56 1.629 @@ -1,5 +1,10 @@ Changes with Apache 1.3b6 + *) SECURITY: UserDir /abspath without a * in the path would allow + remote users to access /~.. and bypass access restrictions + (but note /~../.. was handled properly). + [Lauri Jesmin [EMAIL PROTECTED]] PR#1701 + *) os_is_path_absolute() now takes a const char * instead of a char *. [Dean Gaudet] 1.28 +6 -10 apache-1.3/src/modules/standard/mod_userdir.c Index: mod_userdir.c === RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_userdir.c,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- mod_userdir.c 1998/02/03 08:52:52 1.27 +++ mod_userdir.c 1998/02/14 03:26:58 1.28 @@ -226,9 +226,9 @@ } /* - * If there's no username, it's not for us. + * If there's no username, it's not for us. Ignore . and .. as well. */ -if (!strcmp(w, )) { +if (w[0] == '\0' || (w[1] == '.' (w[2] == '\0' || (w[2] == '.' w[3] == '\0' { return DECLINED; } /* @@ -259,12 +259,7 @@ if (strchr(userdir, '*')) x = getword(r-pool, userdir, '*'); -#if defined(__EMX__) || defined(WIN32) -/* Add support for OS/2 drive letters */ -if ((userdir[0] == '/') || (userdir[1] == ':') || (userdir[0] == '\0')) { -#else -if ((userdir[0] == '/') || (userdir[0] == '\0')) { -#endif + if (userdir[0] == '\0' || os_is_path_absolute(userdir)) { if (x) { #ifdef WIN32 /* @@ -273,10 +268,11 @@ * know of no protocols that are a single letter, if the : is * the second character, I will assume a file was specified */ -if (strchr(x + 2, ':')) { +if (strchr(x + 2, ':')) #else -if (strchr(x, ':')) { +if (strchr(x, ':')) #endif /* WIN32 */ + { redirect = pstrcat(r-pool, x, w, userdir, dname, NULL); table_setn(r-headers_out, Location, redirect); return REDIRECT;
cvs commit: apache-1.2/src CHANGES mod_userdir.c
dgaudet 98/02/13 19:39:20 Modified:src CHANGES mod_userdir.c Log: Deal with /~.. and lame UserDir /abspath. PR: 1701 Submitted by: Lauri Jesmin [EMAIL PROTECTED] Reviewed by: Dean Gaudet, Marc Slemko Revision ChangesPath 1.294 +5 -0 apache-1.2/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.2/src/CHANGES,v retrieving revision 1.293 retrieving revision 1.294 diff -u -r1.293 -r1.294 --- CHANGES 1998/02/14 02:51:36 1.293 +++ CHANGES 1998/02/14 03:39:18 1.294 @@ -1,5 +1,10 @@ Changes with Apache 1.2.6 + *) SECURITY: UserDir /abspath without a * in the path would allow + remote users to access /~.. and bypass access restrictions + (but note /~../.. was handled properly). + [Lauri Jesmin [EMAIL PROTECTED]] PR#1701 + *) mod_rewrite's RewriteLog should behave like mod_log_config, it shouldn't force hostname lookups. [Dean Gaudet] PR#1684 1.16 +2 -1 apache-1.2/src/mod_userdir.c Index: mod_userdir.c === RCS file: /export/home/cvs/apache-1.2/src/mod_userdir.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- mod_userdir.c 1998/01/30 09:14:10 1.15 +++ mod_userdir.c 1998/02/14 03:39:18 1.16 @@ -128,7 +128,8 @@ dname = name + 2; w = getword(r-pool, dname, '/'); - if (!strcmp(w, )) + /* disallow the empty username, . and .. */ + if (w[0] == '\0' || (w[1] == '.' (w[2] == '\0' || (w[2] == '.' w[3] == '\0' return DECLINED; /* The 'dname' funny business involves backing it up to capture
cvs commit: apache-1.3/src/main http_main.c
dgaudet 98/02/14 02:43:22 Modified:src/include ap.h src/main http_main.c Log: move ap_killpg to ap.h Revision ChangesPath 1.7 +13 -0 apache-1.3/src/include/ap.h Index: ap.h === RCS file: /export/home/cvs/apache-1.3/src/include/ap.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- ap.h 1998/02/03 20:00:57 1.6 +++ ap.h 1998/02/14 10:43:19 1.7 @@ -64,4 +64,17 @@ API_EXPORT(int) ap_vsnprintf(char *, size_t, const char *, va_list ap); int ap_execle(const char *, const char *, ...); int ap_execve(const char *, const char *argv[], const char *envp[]); + +/* small utility macros to make things easier to read */ + +#ifdef WIN32 +#define ap_killpg(x, y) +#else +#ifdef NO_KILLPG +#define ap_killpg(x, y) (kill (-(x), (y))) +#else +#define ap_killpg(x, y) (killpg ((x), (y))) +#endif +#endif /* WIN32 */ + #endif /* !APACHE_AP_H */ 1.287 +0 -12 apache-1.3/src/main/http_main.c Index: http_main.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_main.c,v retrieving revision 1.286 retrieving revision 1.287 diff -u -r1.286 -r1.287 --- http_main.c 1998/02/09 01:09:39 1.286 +++ http_main.c 1998/02/14 10:43:20 1.287 @@ -320,18 +320,6 @@ scoreboard *scoreboard_image = NULL; -/* small utility macros to make things easier to read */ - -#ifdef WIN32 -#define ap_killpg(x, y) -#else -#ifdef NO_KILLPG -#define ap_killpg(x, y) (kill (-(x), (y))) -#else -#define ap_killpg(x, y) (killpg ((x), (y))) -#endif -#endif /* WIN32 */ - #if defined(USE_FCNTL_SERIALIZED_ACCEPT) || defined(USE_FLOCK_SERIALIZED_ACCEPT) static void expand_lock_fname(pool *p) {
cvs commit: apache-1.3/src/main http_main.c
dgaudet 98/02/14 02:54:43 Modified:src CHANGES src/main http_main.c Log: The addition of child_init_modules() and child_exit_modules() has made child initialization a critical section. We can't service a USR1, TERM, or HUP request during this period because all our data structures could be in some unknown state. So block_alarms() the whole way through. Fix a segfault caused by terminating before allocating pchild. This won't occur with the above fix in place, but seems a reasonable precaution should there be a need to call clean_child_exit() before pchild is allocated. Fix various cases where exit() was called rather than clean_child_exit(). Revision ChangesPath 1.630 +3 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.629 retrieving revision 1.630 diff -u -r1.629 -r1.630 --- CHANGES 1998/02/14 03:26:56 1.629 +++ CHANGES 1998/02/14 10:54:39 1.630 @@ -1,5 +1,8 @@ Changes with Apache 1.3b6 + *) Cleaned up some race conditions in unix child_main during + initialization. [Dean Gaudet] + *) SECURITY: UserDir /abspath without a * in the path would allow remote users to access /~.. and bypass access restrictions (but note /~../.. was handled properly). 1.288 +40 -22apache-1.3/src/main/http_main.c Index: http_main.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_main.c,v retrieving revision 1.287 retrieving revision 1.288 diff -u -r1.287 -r1.288 --- http_main.c 1998/02/14 10:43:20 1.287 +++ http_main.c 1998/02/14 10:54:41 1.288 @@ -320,6 +320,18 @@ scoreboard *scoreboard_image = NULL; +static APACHE_TLS int volatile exit_after_unblock = 0; + +/* a clean exit from a child with proper cleanup */ +static void __attribute__((noreturn)) clean_child_exit(int code) +{ +if (pchild) { + child_exit_modules(pchild, server_conf); + destroy_pool(pchild); +} +exit(code); +} + #if defined(USE_FCNTL_SERIALIZED_ACCEPT) || defined(USE_FLOCK_SERIALIZED_ACCEPT) static void expand_lock_fname(pool *p) { @@ -472,12 +484,12 @@ if (sigprocmask(SIG_BLOCK, accept_block_mask, accept_previous_mask)) { perror(sigprocmask(SIG_BLOCK)); - exit (1); + clean_child_exit(1); } if ((err = pthread_mutex_lock(accept_mutex))) { errno = err; perror(pthread_mutex_lock); - exit(1); + clean_child_exit(1); } have_accept_mutex = 1; } @@ -489,7 +501,7 @@ if ((err = pthread_mutex_unlock(accept_mutex))) { errno = err; perror(pthread_mutex_unlock); - exit(1); + clean_child_exit(1); } /* There is a slight race condition right here... if we were to die right * now, we'd do another pthread_mutex_unlock. Now, doing that would let @@ -507,7 +519,7 @@ have_accept_mutex = 0; if (sigprocmask(SIG_SETMASK, accept_previous_mask, NULL)) { perror(sigprocmask(SIG_SETMASK)); - exit (1); + clean_child_exit(1); } } @@ -592,7 +604,7 @@ { if (semop(sem_id, op_on, 1) 0) { perror(accept_mutex_on); - exit(1); + clean_child_exit(1); } } @@ -600,7 +612,7 @@ { if (semop(sem_id, op_off, 1) 0) { perror(accept_mutex_off); - exit(1); + clean_child_exit(1); } } @@ -653,7 +665,7 @@ fcntl: F_SETLKW: Error getting accept lock, exiting! Perhaps you need to use the LockFile directive to place your lock file on a local disk!); - exit(1); + clean_child_exit(1); } } @@ -669,7 +681,7 @@ fcntl: F_SETLKW: Error freeing accept lock, exiting! Perhaps you need to use the LockFile directive to place your lock file on a local disk!); - exit(1); + clean_child_exit(1); } } @@ -693,7 +705,7 @@ if (lock_fd == -1) { aplog_error(APLOG_MARK, APLOG_EMERG, server_conf, Child cannot open lock file: %s\n, lock_fname); - exit(1); + clean_child_exit(1); } } @@ -724,7 +736,7 @@ if (ret 0) { aplog_error(APLOG_MARK, APLOG_EMERG, server_conf, flock: LOCK_EX: Error getting accept lock. Exiting!); - exit(1); + clean_child_exit(1); } } @@ -733,7 +745,7 @@ if (flock(lock_fd, LOCK_UN) 0) { aplog_error(APLOG_MARK, APLOG_EMERG, server_conf, flock: LOCK_UN: Error freeing accept lock. Exiting!); - exit(1
cvs commit: apache-1.3/src/support apachectl
dgaudet 98/02/14 02:55:54 Modified:src/support apachectl Log: I used this for the first time... and found it emits error messages (at least on linux) while doing apachectl start. Revision ChangesPath 1.5 +3 -3 apache-1.3/src/support/apachectl Index: apachectl === RCS file: /export/home/cvs/apache-1.3/src/support/apachectl,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- apachectl 1998/01/07 16:47:10 1.4 +++ apachectl 1998/02/14 10:55:53 1.5 @@ -23,8 +23,8 @@ # the path to your PID file PIDFILE=/usr/local/apache/logs/httpd.pid # -# the path to your httpd binary -HTTPD=/usr/local/apache/src/httpd +# the path to your httpd binary, including options if necessary +HTTPD='/usr/local/apache/src/httpd' # # a command that outputs a formatted text version of the HTML at the # url given on the command line. Designed for lynx, however other @@ -49,7 +49,7 @@ # check for pidfile if [ -f $PIDFILE ] ; then PID=`cat $PIDFILE` - PS=`ps -p $PID | tail -1 | grep $PID` + PS=`ps -p $PID 2/dev/null | tail -1 | grep $PID` if [ x$PS = x ]; then STATUS=httpd (pid $PID?) not running RUNNING=0
cvs commit: apache-1.3/src/main http_main.c
dgaudet 98/02/14 04:40:31 Modified:src CHANGES src/main http_main.c Log: note a few more PRs Revision ChangesPath 1.632 +2 -2 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.631 retrieving revision 1.632 diff -u -r1.631 -r1.632 --- CHANGES 1998/02/14 12:17:26 1.631 +++ CHANGES 1998/02/14 12:40:24 1.632 @@ -5,7 +5,7 @@ or library bugs occasionally, and result in log spammage and a generally bad scene. Now the child exits immediately, which seems to be a good workaround. - [Dean Gaudet] PR#1747, 1107, 588, 1787 + [Dean Gaudet] PR#1747, 1107, 588, 1787, 987, 588 *) Cleaned up some race conditions in unix child_main during initialization. [Dean Gaudet] @@ -763,7 +763,7 @@ *) Work around problem under Linux where a child will start looping reporting a select error over and over. - [Rick Franchuk [EMAIL PROTECTED]] PR#1107 + [Rick Franchuk [EMAIL PROTECTED]] PR#1107, 987, 588 *) Fixed error in proxy_util.c when looping through multiple host IP addresses. [Lars Eilebrecht] PR#974 1.290 +2 -1 apache-1.3/src/main/http_main.c Index: http_main.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_main.c,v retrieving revision 1.289 retrieving revision 1.290 diff -u -r1.289 -r1.290 --- http_main.c 1998/02/14 12:17:28 1.289 +++ http_main.c 1998/02/14 12:40:27 1.290 @@ -3097,7 +3097,8 @@ * and other boxes that implement tcp sockets in * userland (i.e. on top of STREAMS). On these * systems, EPROTO can actually result in a fatal - * loop. But we don't deal with that. + * loop. See PR#981 for example. It's hard to + * handle both uses of EPROTO. */ case EPROTO: #endif
cvs commit: apache-1.3/htdocs/manual/misc FAQ.html
dgaudet 98/02/14 05:06:26 Modified:htdocs/manual/misc FAQ.html Log: I am tired tired tired of dealing with kill -9 and killall -whatever httpd bugs Revision ChangesPath 1.107 +63 -1 apache-1.3/htdocs/manual/misc/FAQ.html Index: FAQ.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/misc/FAQ.html,v retrieving revision 1.106 retrieving revision 1.107 diff -u -r1.106 -r1.107 --- FAQ.html 1998/02/11 15:14:33 1.106 +++ FAQ.html 1998/02/14 13:06:25 1.107 @@ -15,7 +15,7 @@ !--#include virtual=header.html -- H1 ALIGN=CENTERApache Server Frequently Asked Questions/H1 P - $Revision: 1.106 $ ($Date: 1998/02/11 15:14:33 $) + $Revision: 1.107 $ ($Date: 1998/02/14 13:06:25 $) /P P The latest version of this FAQ is always available from the main @@ -258,6 +258,13 @@ LIA HREF=#namevhostI upgraded to Apache 1.3b and now my virtual hosts don't work!/A /LI + LIA HREF=#redhatI'm using RedHat Linux and I have problems with httpd +dying randomly or not restarting properly/A + /LI + lia href=#stoppingI upgraded from an Apache version earlier +than 1.2.0 and suddenly I have problems with Apache dying randomly +or not restarting properly/a + /li /OL /LI /UL @@ -2169,6 +2176,61 @@ /P HR /LI + + lia name=redhatstrongI'm using RedHat Linux and I have problems with httpd +dying randomly or not restarting properly/strong/a + +pRedHat Linux versions 4.x (and possibly earlier) rpms contain +various nasty scripts which do not stop or restart Apache properly. +These can affect you even if you're not running the RedHat supplied +rpms. + +p If you're using the default install then you're probably running +Apache 1.1.3, which is outdated. From RedHat's ftp site you can +pick up a more recent RPM for Apache 1.2.x. This will solve one of +the problems. + +p If you're using a custom built Apache rather than the RedHat rpms +then you should coderpm -e apache/code. In particular you want +the mildly broken code/etc/logrotate.d/apache/code script to be +removed, and you want the broken code/etc/rc.d/init.d/httpd/code +(or codehttpd.init/code) script to be removed. The latter is +actually fixed by the apache-1.2.5 rpms but if you're building your +own Apache then you probably don't want the RedHat files. + +pWe can't stress enough how important it is for folks, iespecially +vendors/i to follow the a href=../stopping.htmlstopping Apache +directions/a given in our documentation. In RedHat's defense, +the broken scripts were necessary with Apache 1.1.x because the +Linux support in 1.1.x was very poor, and there were various race +conditions on all platforms. None of this should be necessary with +Apache 1.2 and later. +/p +hr + /li + + lia name=stoppingstrongI upgraded from an Apache version earlier +than 1.2.0 and suddenly I have problems with Apache dying randomly +or not restarting properly/strong/a + +pYou should read a href=#redhatthe previous note/a about +problems with RedHat installations. It is entirely likely that your +installation has start/stop/restart scripts which were built for +an earlier version of Apache. Versions earlier than 1.2.0 had +various race conditions that made it necessary to use +codekill -9/code at times to take out all the httpd servers. +But that should not be necessary any longer. You should follow +the a href=../stopping.htmldirections on how to stop +and restart Apache/a. + +pAs of Apache 1.3 there is a script +codesrc/support/apachectl/code which, after a bit of +customization, is suitable for starting, stopping, and restarting +your server. +/p +hr + + /li !-- Don't forget to add HR tags at the end of each list item.. --
cvs commit: apache-1.3 STATUS
dgaudet 98/02/14 05:17:53 Modified:.STATUS Log: yeah this too Revision ChangesPath 1.153 +11 -4 apache-1.3/STATUS Index: STATUS === RCS file: /export/home/cvs/apache-1.3/STATUS,v retrieving revision 1.152 retrieving revision 1.153 diff -u -r1.152 -r1.153 --- STATUS1998/02/14 13:15:02 1.152 +++ STATUS1998/02/14 13:17:53 1.153 @@ -4,6 +4,7 @@ 2.0 : In pre-alpha development see: http://www.arctic.org/~dgaudet/apache/2.0/process-model +1.3b6: in development 1.3b5: Tagged APACHE_1_3b5 1.3b4: Internal version... not tagged or released. 1.3b3: Released and announced @@ -198,9 +199,6 @@ Help: -* numerous uses of strcpy and strcat have potential for buffer - overflow, someone should rewrite or verify they're safe - * process/thread model - need dynamic thread creation/destruction, similar to Unix process model @@ -289,5 +287,14 @@ - mod_mime_magic.c (needs access to mod_mime API stage...) * do something to disable bogus warnings - + +WIN32 1.3 FINAL RELEASE SHOWSTOPPERS: + * SECURITY: PR#1203 still needs to be dealt with for WIN32 + +* SECURITY: check if the magic con/aux/nul/etc names do anything + really bad + +* SECURITY: numerous uses of strcpy and strcat have potential + for buffer overflow, someone should rewrite or verify + they're safe
cvs commit: apache-1.2/src conf.h
dgaudet 98/02/14 05:37:23 Modified:src conf.h Log: PR: 1568 Revision ChangesPath 1.101 +1 -1 apache-1.2/src/conf.h Index: conf.h === RCS file: /export/home/cvs/apache-1.2/src/conf.h,v retrieving revision 1.100 retrieving revision 1.101 diff -u -r1.100 -r1.101 --- conf.h1998/01/30 09:13:49 1.100 +++ conf.h1998/02/14 13:37:22 1.101 @@ -52,7 +52,7 @@ /* * conf.h: system-dependant #defines and includes... - * See README for a listing of what they mean + * See PORTING for a listing of what they mean */ #if !defined(QNX) !defined(MPE)
cvs commit: apache-1.2/src CHANGES
dgaudet 98/02/14 05:42:46 Modified:src CHANGES Log: PR: 1639 Revision ChangesPath 1.295 +2 -0 apache-1.2/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.2/src/CHANGES,v retrieving revision 1.294 retrieving revision 1.295 diff -u -r1.294 -r1.295 --- CHANGES 1998/02/14 03:39:18 1.294 +++ CHANGES 1998/02/14 13:42:44 1.295 @@ -1,5 +1,7 @@ Changes with Apache 1.2.6 + *) PORT: Add -lm to LIBS for HPUX. [Dean Gaudet] PR#1639 + *) SECURITY: UserDir /abspath without a * in the path would allow remote users to access /~.. and bypass access restrictions (but note /~../.. was handled properly).
cvs commit: apache-1.3/htdocs/manual/mod core.html
dgaudet 98/02/14 16:18:16 Modified:htdocs/manual/mod core.html Log: document piped errorlog Revision ChangesPath 1.100 +3 -0 apache-1.3/htdocs/manual/mod/core.html Index: core.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/core.html,v retrieving revision 1.99 retrieving revision 1.100 diff -u -r1.99 -r1.100 --- core.html 1998/02/07 03:04:51 1.99 +++ core.html 1998/02/15 00:18:14 1.100 @@ -773,6 +773,9 @@ The error log directive sets the name of the file to which the server will log any errors it encounters. If the filename does not begin with a slash (/) then it is assumed to be relative to the A HREF=#serverrootServerRoot/A. +If the filename begins with a pipe (|) then it is assumed to be a command to +spawn to handle the error log. +p Example: BLOCKQUOTECODEErrorLog /dev/null/CODE/BLOCKQUOTE This effectively turns off error logging.P
cvs commit: apache-1.3/src/main http_main.c
dgaudet 98/02/17 03:28:29 Modified:src/main http_main.c Log: Oh foo. I put unblock_alarms() after the setjmp(), so when a timeout occured the child would go to alarms_blocked = -1, and would have alarms blocked forever. Revision ChangesPath 1.291 +3 -3 apache-1.3/src/main/http_main.c Index: http_main.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_main.c,v retrieving revision 1.290 retrieving revision 1.291 diff -u -r1.290 -r1.291 --- http_main.c 1998/02/14 12:40:27 1.290 +++ http_main.c 1998/02/17 11:28:28 1.291 @@ -2959,6 +2959,9 @@ child_init_modules(pchild, server_conf); +/* done with the initialization critical section */ +unblock_alarms(); + (void) update_child_status(my_child_num, SERVER_READY, (request_rec *) NULL); /* @@ -2981,9 +2984,6 @@ DosSetSignalExceptionFocus(0, ulTimes); } #endif - -/* done with the initialization critical section */ -unblock_alarms(); while (1) { BUFF *conn_io;
cvs commit: apache-1.3/src/include http_config.h
dgaudet 98/02/18 00:35:56 Modified:src/include http_config.h Log: comment on the real meaning of cmd-path Revision ChangesPath 1.66 +6 -0 apache-1.3/src/include/http_config.h Index: http_config.h === RCS file: /export/home/cvs/apache-1.3/src/include/http_config.h,v retrieving revision 1.65 retrieving revision 1.66 diff -u -r1.65 -r1.66 --- http_config.h 1998/02/07 13:59:55 1.65 +++ http_config.h 1998/02/18 08:35:55 1.66 @@ -148,6 +148,12 @@ server_rec *server; /* Server_rec being configured for */ char *path; /* If configuring for a directory, * pathname of that directory. + * NOPE! That's what it meant previous to the + * existance of Files, Location and regex + * matching. Now the only usefulness that can + * be derived from this field is whether a command + * is being called in a server context (path == NULL) + * or being called in a dir context (path != NULL). */ const command_rec *cmd; /* configuration command */ } cmd_parms;
cvs commit: apache-1.3/src/include httpd.h
dgaudet 98/02/18 00:39:22 Modified:src/include httpd.h Log: another comment that was sitting in my mailbox Revision ChangesPath 1.187 +21 -0 apache-1.3/src/include/httpd.h Index: httpd.h === RCS file: /export/home/cvs/apache-1.3/src/include/httpd.h,v retrieving revision 1.186 retrieving revision 1.187 diff -u -r1.186 -r1.187 --- httpd.h 1998/02/14 01:02:09 1.186 +++ httpd.h 1998/02/18 08:39:21 1.187 @@ -578,6 +578,27 @@ char *method;/* GET, HEAD, POST, etc. */ int method_number; /* M_GET, M_POST, etc. */ + +/* + allowed is a bitvector of the allowed methods. + + A handler must ensure that the request method is one that + it is capable of handling. Generally modules should DECLINE + any request methods they do not handle. Prior to aborting the + handler like this the handler should set r-allowed to the list + of methods that it is willing to handle. This bitvector is used + to construct the Allow: header required for OPTIONS requests, + and METHOD_NOT_ALLOWED and NOT_IMPLEMENTED status codes. + + Since the default_handler deals with OPTIONS, all modules can + usually decline to deal with OPTIONS. TRACE is always allowed, + modules don't need to set it explicitly. + + Since the default_handler will always handle a GET, a + module which does *not* implement GET should probably return + METHOD_NOT_ALLOWED. Unfortunately this means that a Script GET + handler can't be installed by mod_actions. +*/ int allowed; /* Allowed methods - for 405, OPTIONS, etc */ int sent_bodyct; /* byte count in stream is for body */
cvs commit: apache-1.3/src/main http_core.c http_request.c
dgaudet 98/02/18 02:01:18 Modified:htdocs/manual upgrading_to_1_3.html htdocs/manual/mod core.html src CHANGES src/include http_config.h src/main http_core.c http_request.c Log: Fix various parsing bugs with Dir/Loc/Files sections. Improve the error messages generated. Introduced cmd-end_token to make it easier to do nested sections with proper error reporting. (Note that it can't be used for IfModule or Limit unfortunately.) PR#379: Files is not allowed within Location because it has no effect. PR#1817: Change Files to work with basenames only. This fixes both the bug introduced by the wildcarding change (* doesn't match /) and bugs such as Files a*b not working. PR: 379, 1817 Revision ChangesPath 1.13 +6 -0 apache-1.3/htdocs/manual/upgrading_to_1_3.html Index: upgrading_to_1_3.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/upgrading_to_1_3.html,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- upgrading_to_1_3.html 1998/02/05 20:04:16 1.12 +++ upgrading_to_1_3.html 1998/02/18 10:00:57 1.13 @@ -125,6 +125,12 @@ messages. After that all errors are logged in the error_log. This makes it more convenient to start Apache via rsh, ssh, or crontabs. + + lilt;Filesgt; sections previously could take a full pathname, and + were matched against the full pathnames. This had some + inconsistancies, and was removed. To emulate this older behaviour + use a lt;Filesgt; section nested inside a lt;Directorygt; + section. /UL 1.101 +10 -7 apache-1.3/htdocs/manual/mod/core.html Index: core.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/core.html,v retrieving revision 1.100 retrieving revision 1.101 diff -u -r1.100 -r1.101 --- core.html 1998/02/15 00:18:14 1.100 +++ core.html 1998/02/18 10:01:01 1.101 @@ -811,12 +811,17 @@ filename. It is comparable to the A HREF=#directorylt;Directorygt;/A directive and A HREF=#locationlt;Locationgt;/A directives. It -should be matched with a lt;/Filesgt; directive. Directives that -apply to the filename given should be listed -within. CODElt;Filesgt;/CODE sections are processed in the +should be matched with a lt;/Filesgt; directive. The +directives given within this section will be applied to any +object with a basename (last component of filename) matching +the specified filename. +CODElt;Filesgt;/CODE sections are processed in the order they appear in the configuration file, after the lt;Directorygt; sections and CODE.htaccess/CODE files are -read, but before lt;Locationgt; sections./P +read, but before lt;Locationgt; sections. Note that +lt;Filesgt; can be nested inside lt;Directorygt; +sections to restrict the portion of the filesystem they +apply to./P PThe EMfilename/EM argument should include a filename, or a wild-card string, where `?' matches any single character, and `*' matches any @@ -837,9 +842,7 @@ HREF=#locationCODElt;Locationgt;/CODE/A sections, CODElt;Filesgt;/CODE 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 -EMfilename/EM does not begin with a CODE//CODE character, -the directory being applied will be prefixed automatically. +file-by-file level. P 1.636 +14 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.635 retrieving revision 1.636 diff -u -r1.635 -r1.636 --- CHANGES 1998/02/18 08:55:30 1.635 +++ CHANGES 1998/02/18 10:01:05 1.636 @@ -1,5 +1,19 @@ Changes with Apache 1.3b6 + *) Previously Apache would permit /Files to end FilesMatch (and + similary for Location and Directory), now this is diagnosed as an + error. Improve error messages for mismatched sections (Files, + FilesMatch, Directory, DirectoryMatch, ...). [Dean Gaudet] + + *) Files is not permitted within Location (because of the + semantic ordering). [Dean Gaudet] PR#379 + + *) Files with wildcards was broken by the change in wildcard + semantics (* does not match /). To fix this, Files now + apply only to the basename of the request filename. This + fixes some other inconsistencies in Files semantics + (such as Files a*b not working). [Dean Gaudet] PR#1817 + *) Removed bogus dist.tar target from Makefile.tmpl and make sure backup files are removed on clean
cvs commit: apache-1.3/src/main http_protocol.c
dgaudet 98/02/18 03:59:21 Modified:src/main http_protocol.c Log: Fix absoluteURI problem introduced by the http_method() stuff... do a little cleanup. This isn't everything needed to get absoluteURIs working properly, they're still at least as broken as they were a week or two ago. I'm hoping Martin can get his uri parsing patch into the server, and when he does that I can finish the fixes for absoluteURIs. Revision ChangesPath 1.189 +21 -10apache-1.3/src/main/http_protocol.c Index: http_protocol.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_protocol.c,v retrieving revision 1.188 retrieving revision 1.189 diff -u -r1.188 -r1.189 --- http_protocol.c 1998/02/09 01:09:40 1.188 +++ http_protocol.c 1998/02/18 11:59:20 1.189 @@ -625,8 +625,8 @@ const char *check_fulluri(request_rec *r, const char *uri) { -char *name, *host, *proto; -int i, plen; +char *host, *proto, *slash, *colon; +int plen; unsigned port; /* This routine parses full URLs, if they match the server */ @@ -635,18 +635,29 @@ if (strncasecmp(uri, proto, plen) || strncasecmp(uri + plen, ://, 3)) return uri; -name = pstrdup(r-pool, uri + plen); +host = pstrdup(r-pool, uri + plen + 3); /* Find the hostname, assuming a valid request */ -i = ind(name, '/'); -name[i] = '\0'; +slash = strchr(host, '/'); +if (slash) { +*slash = 0; +} +else { +slash = host + strlen(host); +} /* Find the port */ -host = getword_nc(r-pool, name, ':'); -if (*name) -port = atoi(name); -else +colon = strchr(host, ':'); +if (colon) { +*colon = '\0'; +port = atoi(colon+1); +if (port == 0) { +return uri; +} +} +else { port = default_port(r); +} /* Make sure ports patch */ if (port != r-server-port) @@ -654,7 +665,7 @@ /* Save it for later use */ r-hostname = pstrdup(r-pool, host); -r-hostlen = plen + 3 + i; +r-hostlen = plen + 3 + slash - host; /* The easy cases first */ if (!strcasecmp(host, r-server-server_hostname)) {
cvs commit: apache-1.3/src/modules/standard mod_mime_magic.c
dgaudet 98/02/18 12:44:20 Modified:src CHANGES src/modules/standard mod_mime_magic.c Log: Report filename when read error occurs. PR: 1827 Submitted by: M.D.Parker [EMAIL PROTECTED] Reviewed by: Dean Gaudet Revision ChangesPath 1.637 +3 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.636 retrieving revision 1.637 diff -u -r1.636 -r1.637 --- CHANGES 1998/02/18 10:01:05 1.636 +++ CHANGES 1998/02/18 20:44:16 1.637 @@ -1,5 +1,8 @@ Changes with Apache 1.3b6 + *) mod_mime_magic error message should indicate the filename when + reads fail. [M.D.Parker [EMAIL PROTECTED]] PR#1827 + *) Previously Apache would permit /Files to end FilesMatch (and similary for Location and Directory), now this is diagnosed as an error. Improve error messages for mismatched sections (Files, 1.25 +2 -1 apache-1.3/src/modules/standard/mod_mime_magic.c Index: mod_mime_magic.c === RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_mime_magic.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- mod_mime_magic.c 1998/01/25 03:52:18 1.24 +++ mod_mime_magic.c 1998/02/18 20:44:19 1.25 @@ -2191,7 +2191,8 @@ *newch = (unsigned char *) palloc(r-pool, n); if ((n = read(fileno(fout), *newch, n)) = 0) { destroy_pool(sub_pool); - aplog_error(APLOG_MARK, APLOG_ERR, r-server, MODNAME : read failed); + aplog_error(APLOG_MARK, APLOG_ERR, r-server, + MODNAME : read failed %s, r-filename); return -1; } destroy_pool(sub_pool);
cvs commit: apache-1.3/src/include conf.h
dgaudet 98/02/18 12:52:55 Modified:src CHANGES src/include conf.h Log: Linux 2.0.x RLIMIT_DATA doesn't do what's expected, RLIMIT_AS does. Deal with it. PR: 1816 Submitted by: Enrik Berkhan [EMAIL PROTECTED] Reviewed by: Dean Gaudet Revision ChangesPath 1.638 +4 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.637 retrieving revision 1.638 diff -u -r1.637 -r1.638 --- CHANGES 1998/02/18 20:44:16 1.637 +++ CHANGES 1998/02/18 20:52:51 1.638 @@ -1,5 +1,9 @@ Changes with Apache 1.3b6 + *) Linux 2.0 and above implement RLIMIT_AS, RLIMIT_DATA has almost no + effect. Work around it by using RLIMIT_AS for the RLimitMEM + directive. [Enrik Berkhan [EMAIL PROTECTED]] PR#1816 + *) mod_mime_magic error message should indicate the filename when reads fail. [M.D.Parker [EMAIL PROTECTED]] PR#1827 1.181 +8 -0 apache-1.3/src/include/conf.h Index: conf.h === RCS file: /export/home/cvs/apache-1.3/src/include/conf.h,v retrieving revision 1.180 retrieving revision 1.181 diff -u -r1.180 -r1.181 --- conf.h1998/02/14 13:37:03 1.180 +++ conf.h1998/02/18 20:52:55 1.181 @@ -371,6 +371,14 @@ #if !defined(__GLIBC__) || __GLIBC__ 2 || (__GLIBC__ == 2 __GLIBC_MINOR__ 1) typedef int rlim_t; #endif + +/* Linux 2.0 and above implement the new posix RLIMIT_AS rather than the + * older BSD semantics (some would actually call this a bug, like me -djg). + */ +#ifndef RLIMIT_VMEM +#define RLIMIT_VMEM RLIMIT_AS +#endif + /* flock is faster ... but hasn't been tested on 1.x systems */ #define USE_FLOCK_SERIALIZED_ACCEPT
cvs commit: apache-1.3/htdocs/manual/misc FAQ.html
dgaudet 98/02/18 13:07:26 Modified:htdocs/manual/misc FAQ.html Log: tired tired tired of these stupid linux questions Revision ChangesPath 1.108 +35 -1 apache-1.3/htdocs/manual/misc/FAQ.html Index: FAQ.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/misc/FAQ.html,v retrieving revision 1.107 retrieving revision 1.108 diff -u -r1.107 -r1.108 --- FAQ.html 1998/02/14 13:06:25 1.107 +++ FAQ.html 1998/02/18 21:07:25 1.108 @@ -15,7 +15,7 @@ !--#include virtual=header.html -- H1 ALIGN=CENTERApache Server Frequently Asked Questions/H1 P - $Revision: 1.107 $ ($Date: 1998/02/14 13:06:25 $) + $Revision: 1.108 $ ($Date: 1998/02/18 21:07:25 $) /P P The latest version of this FAQ is always available from the main @@ -265,6 +265,13 @@ than 1.2.0 and suddenly I have problems with Apache dying randomly or not restarting properly/a /li + lia href=#redhat-htmI'm using RedHat Linux and my .htm files are showing +up as html source rather than being formatted!/a + /li + lia href=#glibc-cryptI'm using RedHat Linux 5.0, or some other glibc + based Linux system, and I get errors with the codecrypt/code function when + I attempt to build Apache 1.2./a +/li /OL /LI /UL @@ -2231,6 +2238,33 @@ hr /li + + lia name=redhat-htmstrongI'm using RedHat Linux and my .htm files are showing +up as html source rather than being formatted!/strong/a + +pRedHat messed up and forgot to put a content type for code.htm/code +files into code/etc/mime.types/code. Edit code/etc/mime.types/code, +find the line containing codehtml/code and add codehtm/code to it. +Then restart your httpd server: +pre + kill -HUP `cat /var/run/httpd.pid` +/pre +Then bclear your browsers' caches/b. (Many browsers won't re-examine +the content type after they've reloaded a page.) +/p +hr + + lia name=glibc-cryptstrongI'm using RedHat Linux 5.0, or some other glibc +based Linux system, and I get errors with the codecrypt/code function when +I attempt to build Apache 1.2./strong/a + +pglibc puts the crypt function into a separate library. Edit your +codesrc/Configuration/code file and set this: +pre + EXTRA_LIBS=-lcrypt +/pre +/p +hr !-- Don't forget to add HR tags at the end of each list item.. --
cvs commit: apache-1.2/htdocs/manual/misc FAQ.html
dgaudet 98/02/18 13:11:04 Modified:htdocs/manual/misc FAQ.html Log: I know most of the rest of the 1.2 docs are out of date... but I want this in here. If only because I think it would be humourous for RedHat to make a package with it including all the RedHat qa ;) Revision ChangesPath 1.65 +273 -57 apache-1.2/htdocs/manual/misc/FAQ.html Index: FAQ.html === RCS file: /export/home/cvs/apache-1.2/htdocs/manual/misc/FAQ.html,v retrieving revision 1.64 retrieving revision 1.65 diff -u -r1.64 -r1.65 --- FAQ.html 1998/01/30 09:13:06 1.64 +++ FAQ.html 1998/02/18 21:11:03 1.65 @@ -15,24 +15,22 @@ !--#include virtual=header.html -- H1 ALIGN=CENTERApache Server Frequently Asked Questions/H1 P - $Revision: 1.64 $ ($Date: 1998/01/30 09:13:06 $) + $Revision: 1.65 $ ($Date: 1998/02/18 21:11:03 $) /P P The latest version of this FAQ is always available from the main Apache web site, at lt;A - HREF=http://www.apache.org/docs/misc/FAQ; + HREF=http://www.apache.org/docs/misc/FAQ.html; REL=Help - SAMPhttp://www.apache.org/docs/misc/FAQ/SAMP/Agt;. + SAMPhttp://www.apache.org/docs/misc/FAQ.html/SAMP/Agt;. /P !-- Notes about changes: -- !-- - If adding a relative link to another part of the-- !--documentation, *do* include the .html portion. There's a -- !--good chance that the user will be reading the documentation -- !--on his own system, which may not be configured for -- -!--multiviews. Leave off the .html extension for absolute -- -!--links to sites which are known to run multiviews (e.g., -- -!--apache.org or apacheweek.com). -- +!--multiviews. -- !-- - When adding items, make sure they're put in the right place -- !--- verify that the numbering matches up. -- !-- - *Don't* use PRE/PRE blocks - they don't appear -- @@ -144,6 +142,9 @@ LIA HREF=#errordoc401Why doesn't my CODEErrorDocument 401/CODE work?/A /LI + LIA HREF=#errordocssiHow can I use CODEErrorDocument/CODE + and SSI to simplify customized error messages?/A + /LI LIA HREF=#setgidWhy do I get quot;SAMPsetgid: Invalid argument/SAMPquot; at startup?/A /LI @@ -168,7 +169,7 @@ reset by peer/SAMPquot; in my error log?/A /LI LIA HREF=#nph-scriptsHow can I get my script's output without -Apache buffering it?/A +Apache buffering it? Why doesn't my server push work?/A /LI LIA HREF=#linuxiovecWhy do I get complaints about redefinition of quot;CODEstruct iovec/CODEquot; when compiling under Linux?/A @@ -252,6 +253,25 @@ LIA HREF=#cgi-specWhere can I find the quot;CGI specificationquot;?/A /LI + LIA HREF=#year2000Is Apache Year 2000 compliant?/A + /LI + LIA HREF=#namevhostI upgraded to Apache 1.3b and now my +virtual hosts don't work!/A + /LI + LIA HREF=#redhatI'm using RedHat Linux and I have problems with httpd +dying randomly or not restarting properly/A + /LI + lia href=#stoppingI upgraded from an Apache version earlier +than 1.2.0 and suddenly I have problems with Apache dying randomly +or not restarting properly/a + /li + lia href=#redhat-htmI'm using RedHat Linux and my .htm files are showing +up as html source rather than being formatted!/a + /li + lia href=#glibc-cryptI'm using RedHat Linux 5.0, or some other glibc + based Linux system, and I get errors with the codecrypt/code function when + I attempt to build Apache 1.2./a +/li /OL /LI /UL @@ -322,7 +342,7 @@ P For an independent assessment, see A - HREF=http://webcompare.iworld.com/compare/chart.html; + HREF=http://webcompare.internet.com/chart.html; Web Compare/A's comparison chart. /P @@ -352,7 +372,7 @@ P The Apache project's web site includes a page with a partial list of A - HREF=http://www.apache.org/info/apache_users; + HREF=http://www.apache.org/info/apache_users.html; sites running Apache/A. /P HR @@ -384,7 +404,7 @@ be swamped by a flood of trivial questions that can be resolved elsewhere. Bug reports and suggestions should be sent EMvia/EM A - HREF=http://www.apache.org/bug_report; + HREF=http://www.apache.org/bug_report.html; the bug report page/A. Other questions should be directed to the A @@ -415,7 +435,10 @@ REL=Help CITEApache Week/CITE/A available. Links to relevant CITEApache Week/CITE articles are - included below where appropriate. + included below where
cvs commit: apache-1.2 Announcement
dgaudet 98/02/18 20:10:09 Added: .Announcement Log: I just stole it from 1.3 and reworded a bit. How's this sound? Revision ChangesPath 1.1 apache-1.2/Announcement Index: Announcement === Apache 1.2.6 Released - The Apache Group is pleased to announce the release of the 1.2.6 version of Apache, the latest stable release of the Apache web server. Apache 1.2.6 is a bug fix release. In particular, various HTTP/1.1 bugs were corrected, including a few that caused interoperability problems with clients such as Internet Explorer 4. Some portability issues were cleared up, but others have been left for the 1.3 series. We strongly urge folks to upgrade to Apache 1.2.6 so that their servers interoperate correctly with HTTP/1.1 clients that are appearing. Apache has been the most popular web server on the Internet since April of 1996. The February 1998 WWW server site survey by Netcraft (see: http://www.netcraft.co.uk/Survey/) found that more web servers were using Apache than any other software. Apache and its derivatives are run on over 50% of all web domains on the Internet. The Apache project has been organized in an attempt to answer some of the concerns regarding active development of a public domain HTTP server for UNIX. The goal of this project is to provide a secure, efficient and extensible server which provides HTTP services in sync with the current HTTP standards. For more information, please check out http://www.apache.org/
cvs commit: apache-1.2/src httpd.h
dgaudet 98/02/18 23:43:00 Modified:src httpd.h Log: roll the 1.2.6 release Revision ChangesPath 1.113 +2 -2 apache-1.2/src/httpd.h Index: httpd.h === RCS file: /export/home/cvs/apache-1.2/src/httpd.h,v retrieving revision 1.112 retrieving revision 1.113 diff -u -r1.112 -r1.113 --- httpd.h 1998/01/30 09:13:59 1.112 +++ httpd.h 1998/02/19 07:42:59 1.113 @@ -274,7 +274,7 @@ * Example: Apache/1.1.0 MrWidget/0.1-alpha */ -#define SERVER_BASEVERSION Apache/1.2.6-dev /* SEE COMMENTS ABOVE */ +#define SERVER_BASEVERSION Apache/1.2.6 /* SEE COMMENTS ABOVE */ #ifdef SERVER_SUBVERSION #define SERVER_VERSION SERVER_BASEVERSION SERVER_SUBVERSION #else @@ -284,7 +284,7 @@ /* Numeric release version identifier: major minor bugfix betaseq * Always increases along the same track as the source branch. */ -#define APACHE_RELEASE 1020501 +#define APACHE_RELEASE 1020600 #define SERVER_PROTOCOL HTTP/1.1 #define SERVER_SUPPORT http://www.apache.org/;
cvs commit: apache-1.2/src httpd.h
dgaudet 98/02/18 23:50:35 Modified:src httpd.h Log: rolled Revision ChangesPath 1.114 +2 -2 apache-1.2/src/httpd.h Index: httpd.h === RCS file: /export/home/cvs/apache-1.2/src/httpd.h,v retrieving revision 1.113 retrieving revision 1.114 diff -u -r1.113 -r1.114 --- httpd.h 1998/02/19 07:42:59 1.113 +++ httpd.h 1998/02/19 07:50:35 1.114 @@ -274,7 +274,7 @@ * Example: Apache/1.1.0 MrWidget/0.1-alpha */ -#define SERVER_BASEVERSION Apache/1.2.6 /* SEE COMMENTS ABOVE */ +#define SERVER_BASEVERSION Apache/1.2.7-dev /* SEE COMMENTS ABOVE */ #ifdef SERVER_SUBVERSION #define SERVER_VERSION SERVER_BASEVERSION SERVER_SUBVERSION #else @@ -284,7 +284,7 @@ /* Numeric release version identifier: major minor bugfix betaseq * Always increases along the same track as the source branch. */ -#define APACHE_RELEASE 1020600 +#define APACHE_RELEASE 1020601 #define SERVER_PROTOCOL HTTP/1.1 #define SERVER_SUPPORT http://www.apache.org/;
cvs commit: apache-1.2 STATUS
dgaudet 98/02/18 23:53:40 Modified:.STATUS Log: update for 1.2.7 Revision ChangesPath 1.6 +2 -29 apache-1.2/STATUS Index: STATUS === RCS file: /export/home/cvs/apache-1.2/STATUS,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- STATUS1998/02/13 16:14:37 1.5 +++ STATUS1998/02/19 07:53:40 1.6 @@ -1,6 +1,4 @@ -The main goal for 1.2.6 is to fix egregious bugs, such as protocol bugs, -or DoS bugs. Changes that have been tested in 1.3 already may be given -consideration. Easy portability fixes may be given consideration. +The main goal for 1.2.7 is stability. Dean is pretty much accepted as the release manager for this branch. @@ -9,32 +7,7 @@ o Commit-Then-Review (see http://dev.apache.org/guidelines.html#ctr o NO lazy voting -Committed since 1.2.5: - -* Martins portability change for ReliantUNIX/SINIX (_XPG_IV switch) -* Martin's [PATCH]-1.2.6: passing escaped CC='$(CC)' -* Martin's [PATCH]-1.2.6: avoid B_ERROR redeclaration -* Mark Bixby's MPE port patch -* more #define wrappers from FreeBSD port -* Dean's backport of the bputc()/chunking bugfix. -* Ralf's mod_rewrite bugfix for %3f -* backport of the netscape header padding fix -* general/1666: basic auth token should be tested case-insensitive -* protocol/1683: The Connection header may contain multiple close tokens -* proxy was sending HTTP/1.1 responses in error -* PR#1500: allocate r-connection-user in correct pool -* PR#1366: send_fd_length did not calculate total_bytes_sent properly -* PR#1604: table_{set,unset} didn't deal correctly with multiple keys -* PR#1599: Digest auth token should be tested case-insensitive -* PR#1650 (et alia): const in mod_imap causing pointer mismatches -* PR#1399: eat data after failed POST -* SIGURG isn't everywhere -* References to undefined 'cwd' cell fixed in suexec.c -* r-allowed tweaks -* case-sensitivity tweaks -* Ed's virtual hosts patch -* PR#1133: mod_include shouldn't send ETag when XBitHack Full is set. -* PR#1588: ReliantUNIX should be detected by GuessOS now. +Committed since 1.2.6: Available:
cvs commit: apache-1.3/htdocs/manual/vhosts details.html name-based.html
dgaudet 98/02/19 22:47:55 Modified:htdocs/manual/vhosts details.html name-based.html Log: spell out the obviously not so obvious fix slight semantic error Revision ChangesPath 1.5 +4 -4 apache-1.3/htdocs/manual/vhosts/details.html Index: details.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/vhosts/details.html,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- details.html 1998/02/05 20:05:14 1.4 +++ details.html 1998/02/20 06:47:53 1.5 @@ -214,10 +214,10 @@ order as the CODEVirtualHost/CODE directives appear in the config file. -PThe first vhost on this list (the first vhost that appears after the -corresponding CODENameVirtualHost/CODE directive in the config file) -has the highest priority and catches any request to an unknown -server name or a request without a CODEHost:/CODE header. +PThe first vhost on this list (the first vhost in the config file with +the specified IP address) has the highest priority and catches any request +to an unknown server name or a request without a CODEHost:/CODE +header. PIf the client provided a CODEHost:/CODE header the list is searched for a matching vhost and the first hit on a CODEServerName/CODE 1.5 +5 -0 apache-1.3/htdocs/manual/vhosts/name-based.html Index: name-based.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/vhosts/name-based.html,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- name-based.html 1998/02/05 20:05:17 1.4 +++ name-based.html 1998/02/20 06:47:54 1.5 @@ -64,6 +64,11 @@ SAMPwww.domain.tld/SAMP is an alias (CNAME) pointing to the IP address SAMP111.22.33.44/SAMP/P +pNote: When you specify an IP address in a codeNameVirtualHost/code +directive then requests to that IP address will only ever be served +by matching lt;VirtualHostgt;s. The main server will bnever/b +be served from the specified IP address. + PAdditionally, many servers may wish to be accessible by more than one name. For example, the example server might want to be accessible as CODEdomain.tld/CODE, or CODEwww2.domain.tld/CODE, assuming
cvs commit: apache-1.3/htdocs/manual/mod core.html
dgaudet 98/02/19 22:52:05 Modified:htdocs/manual/mod core.html Log: more obviousness Revision ChangesPath 1.103 +8 -4 apache-1.3/htdocs/manual/mod/core.html Index: core.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/core.html,v retrieving revision 1.102 retrieving revision 1.103 diff -u -r1.102 -r1.103 --- core.html 1998/02/18 20:39:57 1.102 +++ core.html 1998/02/20 06:52:03 1.103 @@ -1670,10 +1670,14 @@ BLOCKQUOTECODENameVirtualHost 111.22.33.44/CODE/BLOCKQUOTE -With the NameVirtualHost directive the address to which your name-based -virtual host names resolve. -If you have multiple name-based hosts on multiple addresses, -repeat the directive for each address.P +With the NameVirtualHost directive you specify the address to which your +name-based virtual host names resolve. If you have multiple name-based +hosts on multiple addresses, repeat the directive for each address.P + +Note: the main server and any _default_ servers will bnever/b +be served for a request to a NameVirtualHost IP Address (unless for some +reason you specify NameVirtualHost but then don't define any VirtualHosts +for that address).p Optionally you can specify a port number on which the name-based virtual hosts should be used, e.g.
cvs commit: apache-1.3/src CHANGES
dgaudet 98/02/19 23:02:44 Modified:src CHANGES Log: Fix FooMatch sections. I bungled them before. Submitted by: Martin Kraemer Revision ChangesPath 1.640 +2 -1 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.639 retrieving revision 1.640 diff -u -r1.639 -r1.640 --- CHANGES 1998/02/18 22:41:50 1.639 +++ CHANGES 1998/02/20 07:02:42 1.640 @@ -15,7 +15,8 @@ *) Previously Apache would permit /Files to end FilesMatch (and similary for Location and Directory), now this is diagnosed as an error. Improve error messages for mismatched sections (Files, - FilesMatch, Directory, DirectoryMatch, ...). [Dean Gaudet] + FilesMatch, Directory, DirectoryMatch, ...). + [Dean Gaudet, Martin Kraemer] *) Files is not permitted within Location (because of the semantic ordering). [Dean Gaudet] PR#379
cvs commit: apache-1.3/src/main http_core.c
dgaudet 98/02/19 23:15:47 Modified:src/main http_core.c Log: Fix FooMatch sections. I bungled them before. Submitted by: Martin Kraemer Revision ChangesPath 1.160 +15 -12apache-1.3/src/main/http_core.c Index: http_core.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_core.c,v retrieving revision 1.159 retrieving revision 1.160 diff -u -r1.159 -r1.160 --- http_core.c 1998/02/18 10:01:13 1.159 +++ http_core.c 1998/02/20 07:15:46 1.160 @@ -965,6 +965,7 @@ void *new_dir_conf = create_per_dir_config (cmd-pool); regex_t *r = NULL; const char *old_end_token; +const command_rec *thiscmd = cmd-cmd; const char *err = check_cmd_context(cmd, NOT_IN_DIR_LOC_FILE|NOT_IN_LIMIT); if (err != NULL) return err; @@ -978,7 +979,7 @@ #endif cmd-override = OR_ALL|ACCESS_CONF; -if (cmd-info) { /* DirectoryMatch */ +if (thiscmd-cmd_data) { /* DirectoryMatch */ r = pregcomp(cmd-pool, cmd-path, REG_EXTENDED|USE_ICASE); } else if (!strcmp(cmd-path, ~)) { @@ -991,13 +992,13 @@ } old_end_token = cmd-end_token; -cmd-end_token = cmd-info ? end_directorymatch_section : end_directory_section; +cmd-end_token = thiscmd-cmd_data ? end_directorymatch_section : end_directory_section; errmsg = srm_command_loop (cmd, new_dir_conf); if (errmsg == NULL) { errmsg = missing_endsection(cmd, 1); } cmd-end_token = old_end_token; -if (errmsg != (cmd-info ? end_directorymatch_section : end_directory_section)) +if (errmsg != (thiscmd-cmd_data ? end_directorymatch_section : end_directory_section)) return errmsg; conf = (core_dir_config *)get_module_config(new_dir_conf, core_module); @@ -1006,7 +1007,7 @@ add_per_dir_conf (cmd-server, new_dir_conf); if (*arg != '\0') - return pstrcat (cmd-pool, Multiple , (cmd-info) ? DirectoryMatch : Directory, + return pstrcat (cmd-pool, Multiple , thiscmd-name, arguments not (yet) supported., NULL); cmd-path = old_path; @@ -1024,6 +1025,7 @@ core_dir_config *conf; regex_t *r = NULL; const char *old_end_token; +const command_rec *thiscmd = cmd-cmd; void *new_url_conf = create_per_dir_config (cmd-pool); @@ -1035,7 +1037,7 @@ cmd-path = getword_conf (cmd-pool, arg); cmd-override = OR_ALL|ACCESS_CONF; -if (cmd-info) { /* LocationMatch */ +if (thiscmd-cmd_data) { /* LocationMatch */ r = pregcomp(cmd-pool, cmd-path, REG_EXTENDED); } else if (!strcmp(cmd-path, ~)) { @@ -1044,13 +1046,13 @@ } old_end_token = cmd-end_token; -cmd-end_token = cmd-info ? end_locationmatch_section : end_location_section; +cmd-end_token = thiscmd-cmd_data ? end_locationmatch_section : end_location_section; errmsg = srm_command_loop (cmd, new_url_conf); if (errmsg == NULL) { errmsg = missing_endsection(cmd, 1); } cmd-end_token = old_end_token; -if (errmsg != (cmd-info ? end_locationmatch_section : end_location_section)) +if (errmsg != (thiscmd-cmd_data ? end_locationmatch_section : end_location_section)) return errmsg; conf = (core_dir_config *)get_module_config(new_url_conf, core_module); @@ -1061,7 +1063,7 @@ add_per_url_conf (cmd-server, new_url_conf); if (*arg != '\0') - return pstrcat (cmd-pool, Multiple , (cmd-info) ? LocationMatch : Location, + return pstrcat (cmd-pool, Multiple , thiscmd-name, arguments not (yet) supported., NULL); cmd-path = old_path; @@ -1079,6 +1081,7 @@ core_dir_config *conf; regex_t *r = NULL; const char *old_end_token; +const command_rec *thiscmd = cmd-cmd; void *new_file_conf = create_per_dir_config (cmd-pool); @@ -1092,7 +1095,7 @@ if (!old_path) cmd-override = OR_ALL|ACCESS_CONF; -if (cmd-info) { /* FilesMatch */ +if (thiscmd-cmd_data) { /* FilesMatch */ r = pregcomp(cmd-pool, cmd-path, REG_EXTENDED|USE_ICASE); } else if (!strcmp(cmd-path, ~)) { @@ -1105,13 +1108,13 @@ } old_end_token = cmd-end_token; -cmd-end_token = cmd-info ? end_filesmatch_section : end_files_section; +cmd-end_token = thiscmd-cmd_data ? end_filesmatch_section : end_files_section; errmsg = srm_command_loop (cmd, new_file_conf); if (errmsg == NULL) { errmsg = missing_endsection(cmd, 1); } cmd-end_token = old_end_token; -if (errmsg != (cmd-info ? end_filesmatch_section : end_files_section)) +if (errmsg != (thiscmd-cmd_data ? end_filesmatch_section : end_files_section
cvs commit: apache-2.0/docs page_io
dgaudet 98/02/20 00:25:35 Added: docs page_io Log: expand on what I mean by page-based i/o Revision ChangesPath 1.1 apache-2.0/docs/page_io Index: page_io === From [EMAIL PROTECTED] Fri Feb 20 00:36:52 1998 Date: Fri, 20 Feb 1998 00:35:37 -0800 (PST) From: Dean Gaudet [EMAIL PROTECTED] To: new-httpd@apache.org Subject: page-based i/o X-Comment: Visit http://www.arctic.org/~dgaudet/legal for information regarding copyright and disclaimer. Reply-To: new-httpd@apache.org Ed asked me for more details on what I mean when I talk about paged based zero copy i/o. While writing mod_mmap_static I was thinking about the primitives that the core requires of the filesystem. What exactly is it that ties us into the filesystem? and how would we abstract it? The metadata (last modified time, file length) is actually pretty easy to abstract. It's also easy to define an index function so that MultiViews and such can be implemented. And with layered I/O we can hide the actual details of how you access these virtual files. But therein lies an inefficiency. If we had only bread() for reading virtual files, then we would enforce at least one copy of the data. bread() supplies the place that the caller wants to see the data, and so the bread() code has to copy it. But there's very little reason that bread() callers have to supply the buffer... bread() itself could supply the buffer. Call this new interface page_read(). It looks something like this: typedef struct { const void *data; size_t data_len; /* amt of data on page which is valid */ ... other stuff necessary for managing the page pool ... } a_page_head; /* returns NULL if an error or EOF occurs, on EOF errno will be * set to 0 */ a_page_head *page_read(BUFF *fb); /* queues entire page for writing, returns 0 on success, -1 on * error */ int page_write(BUFF *fb, a_page_head *); It's very important that a_page_head structures point to the data page rather than be part of the data page. This way we can build a_page_head structures which refer to parts of mmap()d memory. This stuff is a little more tricky to do, but is a big win for performance. With this integrated into our layered I/O it means that we can have zero-copy performance while still getting the advantages of layering. But note I'm glossing over a bunch of details... like the fact that we have to decide if a_page_heads are shared data, and hence need reference counting (i.e. I said queues for writing up there, which means some bit of the a_page_head data has to be kept until its actually written). Similarly for the page data. There are other tricks in this area that we can take advantage of -- like interprocess communication on architectures that do page flipping. On these boxes if you write() something that's page-aligned and page-sized to a pipe or unix socket, and the other end read()s into a page-aligned page-sized buffer then the kernel can get away without copying any data. It just marks the two pages as shared copy-on-write, and only when they're written to will the copy be made. So to make this work, your writer uses a ring of 2+ page-aligned/sized buffers so that it's not writing on something the reader is still reading. Dean
cvs commit: apache-1.3/src/ap ap_cpystrn.c
dgaudet 98/02/20 11:21:24 Modified:src CHANGES src/ap ap_cpystrn.c Log: fix off-by-1 error in ap_cpystrn PR: 1847 Submitted by: Charles Fu [EMAIL PROTECTED] Revision ChangesPath 1.643 +11 -8 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.642 retrieving revision 1.643 diff -u -r1.642 -r1.643 --- CHANGES 1998/02/20 10:51:30 1.642 +++ CHANGES 1998/02/20 19:21:20 1.643 @@ -1,15 +1,18 @@ Changes with Apache 1.3b6 - *) As Ken suggested the check_cmd_context() function and related defines - are non-static now so modules can use 'em. [Martin Kraemer] + *) ap_cpystrn() had an off-by-1 error. + [Charles Fu [EMAIL PROTECTED]] PR#1847 - *) mod_info would occasionally produce an unpaired tt in its - output. Fixed. [Martin Kraemer] + *) As Ken suggested the check_cmd_context() function and related defines + are non-static now so modules can use 'em. [Martin Kraemer] - *) By default AIX binds a process (and it's children) to a single - processor. httpd children now unbind themselves from that cpu - and re-bind to one selected at random via bindprocessor() - [Doug MacEachern] + *) mod_info would occasionally produce an unpaired tt in its + output. Fixed. [Martin Kraemer] + + *) By default AIX binds a process (and it's children) to a single + processor. httpd children now unbind themselves from that cpu + and re-bind to one selected at random via bindprocessor() + [Doug MacEachern] *) Linux 2.0 and above implement RLIMIT_AS, RLIMIT_DATA has almost no effect. Work around it by using RLIMIT_AS for the RLimitMEM 1.4 +5 -2 apache-1.3/src/ap/ap_cpystrn.c Index: ap_cpystrn.c === RCS file: /export/home/cvs/apache-1.3/src/ap/ap_cpystrn.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- ap_cpystrn.c 1998/01/07 16:45:55 1.3 +++ ap_cpystrn.c 1998/02/20 19:21:24 1.4 @@ -77,8 +77,11 @@ d = dst; end = dst + dst_size - 1; -while ((d end) (*d++ = *src++)) -;/* nop, the while does it all */ +for (; d end; ++d, ++src) { + if (!(*d = *src)) { + return (d); + } +} *d = '\0'; /* always null terminate */
cvs commit: apache-1.3/src/modules/standard mod_userdir.c
dgaudet 98/02/20 16:50:05 Modified:src/modules/standard mod_userdir.c Log: Fix multiple UserDir problem introduced during 1.3b4-dev. Revision ChangesPath 1.29 +4 -1 apache-1.3/src/modules/standard/mod_userdir.c Index: mod_userdir.c === RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_userdir.c,v retrieving revision 1.28 retrieving revision 1.29 diff -u -r1.28 -r1.29 --- mod_userdir.c 1998/02/14 03:26:58 1.28 +++ mod_userdir.c 1998/02/21 00:50:02 1.29 @@ -313,7 +313,10 @@ */ if (filename (!*userdirs || stat(filename, statbuf) != -1)) { r-filename = pstrcat(r-pool, filename, dname, NULL); - if (*userdirs) + /* when statbuf contains info on r-filename we can save a syscall + * by copying it to r-finfo + */ + if (*userdirs dname[0] == 0) r-finfo = statbuf; return OK; }
cvs commit: apache-1.3/src CHANGES
dgaudet 98/02/20 16:50:42 Modified:src CHANGES Log: Fix multiple UserDir problem introduced during 1.3b4-dev. Revision ChangesPath 1.644 +2 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.643 retrieving revision 1.644 diff -u -r1.643 -r1.644 --- CHANGES 1998/02/20 19:21:20 1.643 +++ CHANGES 1998/02/21 00:50:39 1.644 @@ -1,5 +1,7 @@ Changes with Apache 1.3b6 + *) Fix multiple UserDir problem introduced during 1.3b4-dev. [Dean Gaudet] + *) ap_cpystrn() had an off-by-1 error. [Charles Fu [EMAIL PROTECTED]] PR#1847
cvs commit: apache-1.3/src/main http_protocol.c
dgaudet 98/02/20 17:18:29 Modified:src CHANGES src/main http_protocol.c Log: Fix http://host1; without trailing /. Revision ChangesPath 1.645 +3 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.644 retrieving revision 1.645 diff -u -r1.644 -r1.645 --- CHANGES 1998/02/21 00:50:39 1.644 +++ CHANGES 1998/02/21 01:18:25 1.645 @@ -1,5 +1,8 @@ Changes with Apache 1.3b6 + *) Fix problems with absoluteURIs. [Dean Gaudet, + Alvaro Martinez Echevarria [EMAIL PROTECTED]] + *) Fix multiple UserDir problem introduced during 1.3b4-dev. [Dean Gaudet] *) ap_cpystrn() had an off-by-1 error. 1.190 +10 -4 apache-1.3/src/main/http_protocol.c Index: http_protocol.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_protocol.c,v retrieving revision 1.189 retrieving revision 1.190 diff -u -r1.189 -r1.190 --- http_protocol.c 1998/02/18 11:59:20 1.189 +++ http_protocol.c 1998/02/21 01:18:28 1.190 @@ -628,6 +628,7 @@ char *host, *proto, *slash, *colon; int plen; unsigned port; +const char *res_uri; /* This routine parses full URLs, if they match the server */ proto = http_method(r); @@ -664,15 +665,20 @@ return uri; /* Save it for later use */ -r-hostname = pstrdup(r-pool, host); +r-hostname = host; r-hostlen = plen + 3 + slash - host; +res_uri = uri + r-hostlen; +/* deal with http://host; */ +if (*res_uri == '\0') { + res_uri = /; +} /* The easy cases first */ if (!strcasecmp(host, r-server-server_hostname)) { -return (uri + r-hostlen); +return res_uri; } else if (!strcmp(host, inet_ntoa(r-connection-local_addr.sin_addr))) { -return (uri + r-hostlen); +return res_uri; } else { /* Now things get a bit trickier - check the IP address(es) of @@ -685,7 +691,7 @@ for (n = 0; hp-h_addr_list[n] != NULL; n++) { if (r-connection-local_addr.sin_addr.s_addr == (((struct in_addr *) (hp-h_addr_list[n]))-s_addr)) { -return (uri + r-hostlen); +return res_uri; } } }
cvs commit: apache-1.3/src/main http_main.c
dgaudet 98/02/20 17:38:35 Modified:src CHANGES src/main http_main.c Log: Use SA_RESETHAND or SA_ONESHOT when installing the coredump handlers. In particular the handlers could trigger themselves into an infinite loop if RLimitMem was used with a small amount of memory -- too small for the signal stack frame to be set up. Revision ChangesPath 1.646 +6 -1 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.645 retrieving revision 1.646 diff -u -r1.645 -r1.646 --- CHANGES 1998/02/21 01:18:25 1.645 +++ CHANGES 1998/02/21 01:38:29 1.646 @@ -1,5 +1,10 @@ Changes with Apache 1.3b6 + *) Use SA_RESETHAND or SA_ONESHOT when installing the coredump handlers. + In particular the handlers could trigger themselves into an infinite + loop if RLimitMem was used with a small amount of memory -- too small + for the signal stack frame to be set up. [Dean Gaudet] + *) Fix problems with absoluteURIs. [Dean Gaudet, Alvaro Martinez Echevarria [EMAIL PROTECTED]] @@ -18,7 +23,7 @@ processor. httpd children now unbind themselves from that cpu and re-bind to one selected at random via bindprocessor() [Doug MacEachern] - + *) Linux 2.0 and above implement RLIMIT_AS, RLIMIT_DATA has almost no effect. Work around it by using RLIMIT_AS for the RLimitMEM directive. [Enrik Berkhan [EMAIL PROTECTED]] PR#1816 1.293 +6 -0 apache-1.3/src/main/http_main.c Index: http_main.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_main.c,v retrieving revision 1.292 retrieving revision 1.293 diff -u -r1.292 -r1.293 --- http_main.c 1998/02/18 22:41:53 1.292 +++ http_main.c 1998/02/21 01:38:32 1.293 @@ -2228,6 +2228,11 @@ if (!one_process) { sa.sa_handler = sig_coredump; +#if defined(SA_ONESHOT) + sa.sa_flags = SA_ONESHOT; +#elif defined(SA_RESETHAND) + sa.sa_flags = SA_RESETHAND; +#endif if (sigaction(SIGSEGV, sa, NULL) 0) aplog_error(APLOG_MARK, APLOG_WARNING, server_conf, sigaction(SIGSEGV)); #ifdef SIGBUS @@ -2242,6 +2247,7 @@ if (sigaction(SIGABRT, sa, NULL) 0) aplog_error(APLOG_MARK, APLOG_WARNING, server_conf, sigaction(SIGABRT)); #endif + sa.sa_flags = 0; } sa.sa_handler = sig_term; if (sigaction(SIGTERM, sa, NULL) 0)
cvs commit: apache-1.3/src/main http_core.c util_script.c
dgaudet 98/02/20 17:42:41 Modified:src/include conf.h http_core.h src/main http_core.c util_script.c Log: RLIMIT_AS is part of Single Unix... and presumably posix as well. So it makes sense to support it everywhere rather than just on Linux. So treat it like RLIMIT_VMEM and RLIMIT_DATA. Revision ChangesPath 1.182 +0 -7 apache-1.3/src/include/conf.h Index: conf.h === RCS file: /export/home/cvs/apache-1.3/src/include/conf.h,v retrieving revision 1.181 retrieving revision 1.182 diff -u -r1.181 -r1.182 --- conf.h1998/02/18 20:52:55 1.181 +++ conf.h1998/02/21 01:42:36 1.182 @@ -372,13 +372,6 @@ typedef int rlim_t; #endif -/* Linux 2.0 and above implement the new posix RLIMIT_AS rather than the - * older BSD semantics (some would actually call this a bug, like me -djg). - */ -#ifndef RLIMIT_VMEM -#define RLIMIT_VMEM RLIMIT_AS -#endif - /* flock is faster ... but hasn't been tested on 1.x systems */ #define USE_FLOCK_SERIALIZED_ACCEPT 1.36 +1 -1 apache-1.3/src/include/http_core.h Index: http_core.h === RCS file: /export/home/cvs/apache-1.3/src/include/http_core.h,v retrieving revision 1.35 retrieving revision 1.36 diff -u -r1.35 -r1.36 --- http_core.h 1998/02/02 19:46:55 1.35 +++ http_core.h 1998/02/21 01:42:36 1.36 @@ -202,7 +202,7 @@ #ifdef RLIMIT_CPU struct rlimit *limit_cpu; #endif -#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) +#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined(RLIMIT_AS) struct rlimit *limit_mem; #endif #ifdef RLIMIT_NPROC 1.162 +10 -8 apache-1.3/src/main/http_core.c Index: http_core.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_core.c,v retrieving revision 1.161 retrieving revision 1.162 diff -u -r1.161 -r1.162 --- http_core.c 1998/02/20 10:51:34 1.161 +++ http_core.c 1998/02/21 01:42:39 1.162 @@ -127,7 +127,7 @@ #ifdef RLIMIT_CPU conf-limit_cpu = NULL; #endif -#if defined(RLIMIT_DATA) || defined(RLIMIT_VMEM) +#if defined(RLIMIT_DATA) || defined(RLIMIT_VMEM) || defined(RLIMIT_AS) conf-limit_mem = NULL; #endif #ifdef RLIMIT_NPROC @@ -207,7 +207,7 @@ #ifdef RLIMIT_CPU if (new-limit_cpu) conf-limit_cpu = new-limit_cpu; #endif -#if defined(RLIMIT_DATA) || defined(RLIMIT_VMEM) +#if defined(RLIMIT_DATA) || defined(RLIMIT_VMEM) || defined(RLIMIT_AS) if (new-limit_mem) conf-limit_mem = new-limit_mem; #endif #ifdef RLIMIT_NPROC @@ -1560,7 +1560,7 @@ } -#if defined(RLIMIT_CPU) || defined(RLIMIT_DATA) || defined(RLIMIT_VMEM) || defined(RLIMIT_NPROC) +#if defined(RLIMIT_CPU) || defined(RLIMIT_DATA) || defined(RLIMIT_VMEM) || defined(RLIMIT_NPROC) || defined(RLIMIT_AS) static void set_rlimit(cmd_parms *cmd, struct rlimit **plimit, const char *arg, const char * arg2, int type) { @@ -1612,7 +1612,7 @@ } #endif -#if !defined (RLIMIT_CPU) || !(defined (RLIMIT_DATA) || defined (RLIMIT_VMEM)) || !defined (RLIMIT_NPROC) +#if !defined (RLIMIT_CPU) || !(defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined(RLIMIT_AS)) || !defined (RLIMIT_NPROC) static const char *no_set_limit (cmd_parms *cmd, core_dir_config *conf, char *arg, char *arg2) { @@ -1630,12 +1630,14 @@ } #endif -#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) +#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined(RLIMIT_AS) const char *set_limit_mem (cmd_parms *cmd, core_dir_config *conf, char *arg, char * arg2) { -#ifdef RLIMIT_DATA +#if defined(RLIMIT_AS) +set_rlimit(cmd,conf-limit_mem,arg,arg2,RLIMIT_AS); +#elif defined(RLIMIT_DATA) set_rlimit(cmd,conf-limit_mem,arg,arg2,RLIMIT_DATA); -#else +#else defined(RLIMIT_VMEM) set_rlimit(cmd,conf-limit_mem,arg,arg2,RLIMIT_VMEM); #endif return NULL; @@ -1898,7 +1900,7 @@ #endif OR_ALL, TAKE12, soft/hard limits for max CPU usage in seconds }, { RLimitMEM, -#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) +#if defined (RLIMIT_DATA) || defined (RLIMIT_VMEM) || defined (RLIMIT_AS) set_limit_mem, (void*)XtOffsetOf(core_dir_config, limit_mem), #else no_set_limit, NULL, 1.95 +10 -6 apache-1.3/src/main/util_script.c Index: util_script.c === RCS file: /export/home/cvs/apache-1.3/src/main/util_script.c,v retrieving revision 1.94 retrieving revision 1.95 diff -u -r1.94 -r1.95 --- util_script.c 1998/02/01 22:05:38 1.94 +++ util_script.c
cvs commit: apache-1.3/src CHANGES
dgaudet 98/02/21 02:43:44 Modified:src CHANGES Log: mention pr# Revision ChangesPath 1.647 +2 -1 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.646 retrieving revision 1.647 diff -u -r1.646 -r1.647 --- CHANGES 1998/02/21 01:38:29 1.646 +++ CHANGES 1998/02/21 10:43:42 1.647 @@ -8,7 +8,8 @@ *) Fix problems with absoluteURIs. [Dean Gaudet, Alvaro Martinez Echevarria [EMAIL PROTECTED]] - *) Fix multiple UserDir problem introduced during 1.3b4-dev. [Dean Gaudet] + *) Fix multiple UserDir problem introduced during 1.3b4-dev. + [Dean Gaudet] PR#1850 *) ap_cpystrn() had an off-by-1 error. [Charles Fu [EMAIL PROTECTED]] PR#1847
cvs commit: apache-1.3/htdocs/manual/misc known_bugs.html
dgaudet 98/02/21 02:46:02 Modified:htdocs/manual/misc known_bugs.html Log: document pr 1847 and 1850 Revision ChangesPath 1.46 +13 -0 apache-1.3/htdocs/manual/misc/known_bugs.html Index: known_bugs.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/misc/known_bugs.html,v retrieving revision 1.45 retrieving revision 1.46 diff -u -r1.45 -r1.46 --- known_bugs.html 1998/02/15 18:28:27 1.45 +++ known_bugs.html 1998/02/21 10:46:01 1.46 @@ -34,6 +34,19 @@ and A HREF=known_client_problems.htmlour list of known client problems./A/P HR +H2Apache 1.3b5 Bugs/H2 + +ol +liCertain mod_rewrite configurations do not work correctly. Apply +a href=http://www.apache.org/dist/patches/apply_to_1.3b5/PR1847.patch;this +patch/a to fix the problem. See +a href=http://bugs.apache.org/index/full/1847;PR#1847/a for more details. +liUsing multiple arguments to UserDir does not work correctly. Apply +a href=http://www.apache.org/dist/patches/apply_to_1.3b5/PR1850.patch;this +patch/a to fix the problem. See +a href=http://bugs.apache.org/index/full/1850;PR#1850/a for more details. +/ol + H2Apache 1.3b3 Bugs/H2 OL
cvs commit: apache-1.3/src/include util_script.h
dgaudet 98/02/21 03:05:19 Modified:src/main util_script.c src/include util_script.h Log: long live const Revision ChangesPath 1.96 +1 -1 apache-1.3/src/main/util_script.c Index: util_script.c === RCS file: /export/home/cvs/apache-1.3/src/main/util_script.c,v retrieving revision 1.95 retrieving revision 1.96 diff -u -r1.95 -r1.96 --- util_script.c 1998/02/21 01:42:40 1.95 +++ util_script.c 1998/02/21 11:05:17 1.96 @@ -271,7 +271,7 @@ * and find as much of the two that match as possible. */ -API_EXPORT(int) find_path_info(char *uri, char *path_info) +API_EXPORT(int) find_path_info(const char *uri, const char *path_info) { int lu = strlen(uri); int lp = strlen(path_info); 1.28 +1 -1 apache-1.3/src/include/util_script.h Index: util_script.h === RCS file: /export/home/cvs/apache-1.3/src/include/util_script.h,v retrieving revision 1.27 retrieving revision 1.28 diff -u -r1.27 -r1.28 --- util_script.h 1998/01/21 19:17:45 1.27 +++ util_script.h 1998/02/21 11:05:18 1.28 @@ -63,7 +63,7 @@ #endif API_EXPORT(char **) create_environment(pool *p, table *t); -API_EXPORT(int) find_path_info(char *uri, char *path_info); +API_EXPORT(int) find_path_info(const char *uri, const char *path_info); API_EXPORT(void) add_cgi_vars(request_rec *r); API_EXPORT(void) add_common_vars(request_rec *r); #define scan_script_header(a1,a2) scan_script_header_err(a1,a2,NULL)
cvs commit: apache-1.3/src/main http_config.c
dgaudet 98/02/21 03:08:31 Modified:src/main http_config.c Log: The prototype of set_file_slot already includes API_EXPORT_NONSTD... fix the declaration. BTW, I think _NONSTD is only required for functions which have variable length parameter lists. i.e. bputs and rputs... but *not* vbprintf since that has a fixed parameter list. Revision ChangesPath 1.97 +1 -1 apache-1.3/src/main/http_config.c Index: http_config.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_config.c,v retrieving revision 1.96 retrieving revision 1.97 diff -u -r1.96 -r1.97 --- http_config.c 1998/02/06 18:19:56 1.96 +++ http_config.c 1998/02/21 11:08:30 1.97 @@ -920,7 +920,7 @@ return NULL; } -const char *set_file_slot(cmd_parms *cmd, char *struct_ptr, char *arg) +API_EXPORT_NONSTD(const char *) set_file_slot(cmd_parms *cmd, char *struct_ptr, char *arg) { /* Prepend server_root to relative arg. This allows .htaccess to be independent of server_root,
cvs commit: apache-1.2/src CHANGES mod_include.c
dgaudet 98/02/21 03:44:11 Modified:src CHANGES mod_include.c Log: Work around a broken cpp. PR: 1717 Revision ChangesPath 1.297 +5 -0 apache-1.2/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.2/src/CHANGES,v retrieving revision 1.296 retrieving revision 1.297 diff -u -r1.296 -r1.297 --- CHANGES 1998/02/17 01:45:57 1.296 +++ CHANGES 1998/02/21 11:44:08 1.297 @@ -1,3 +1,8 @@ +Changes with Apache 1.2.7 + + *) Work around a broken C preprocessor in mod_include. + [Dean Gaudet] PR#1717 + Changes with Apache 1.2.6 *) Increase the robustness of the child_main loop. When unexpected 1.37 +3 -1 apache-1.2/src/mod_include.c Index: mod_include.c === RCS file: /export/home/cvs/apache-1.2/src/mod_include.c,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- mod_include.c 1998/02/03 10:00:49 1.36 +++ mod_include.c 1998/02/21 11:44:09 1.37 @@ -1023,9 +1023,11 @@ } else { int l, x; -#if defined(BSD) BSD 199305 +#if defined(BSD) +#if BSD 199305 /* ap_snprintf can't handle %qd */ sprintf(tag, %qd, finfo.st_size); +#endif #else ap_snprintf(tag, sizeof(tag), %ld, finfo.st_size); #endif
cvs commit: apache-1.3/src/modules/standard mod_include.c
dgaudet 98/02/21 03:46:00 Modified:src CHANGES src/modules/standard mod_include.c Log: Work around a broken cpp. PR: 1717 Revision ChangesPath 1.648 +3 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.647 retrieving revision 1.648 diff -u -r1.647 -r1.648 --- CHANGES 1998/02/21 10:43:42 1.647 +++ CHANGES 1998/02/21 11:45:56 1.648 @@ -1,5 +1,8 @@ Changes with Apache 1.3b6 + *) Work around a broken C preprocessor in mod_include. + [Dean Gaudet] PR#1717 + *) Use SA_RESETHAND or SA_ONESHOT when installing the coredump handlers. In particular the handlers could trigger themselves into an infinite loop if RLimitMem was used with a small amount of memory -- too small 1.72 +3 -1 apache-1.3/src/modules/standard/mod_include.c Index: mod_include.c === RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_include.c,v retrieving revision 1.71 retrieving revision 1.72 diff -u -r1.71 -r1.72 --- mod_include.c 1998/02/03 09:30:48 1.71 +++ mod_include.c 1998/02/21 11:45:59 1.72 @@ -1049,9 +1049,11 @@ } else { int l, x; -#if defined(BSD) BSD 199305 +#if defined(BSD) +#if BSD 199305 /* ap_snprintf can't handle %qd */ sprintf(tag, %qd, finfo.st_size); +#endif #else ap_snprintf(tag, sizeof(tag), %ld, finfo.st_size); #endif
cvs commit: apache-1.2/src CHANGES mod_include.c
dgaudet 98/02/21 04:25:43 Modified:src CHANGES mod_include.c Log: boy that was a dumb patch, back it out Revision ChangesPath 1.298 +0 -5 apache-1.2/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.2/src/CHANGES,v retrieving revision 1.297 retrieving revision 1.298 diff -u -r1.297 -r1.298 --- CHANGES 1998/02/21 11:44:08 1.297 +++ CHANGES 1998/02/21 12:25:40 1.298 @@ -1,8 +1,3 @@ -Changes with Apache 1.2.7 - - *) Work around a broken C preprocessor in mod_include. - [Dean Gaudet] PR#1717 - Changes with Apache 1.2.6 *) Increase the robustness of the child_main loop. When unexpected 1.38 +1 -3 apache-1.2/src/mod_include.c Index: mod_include.c === RCS file: /export/home/cvs/apache-1.2/src/mod_include.c,v retrieving revision 1.37 retrieving revision 1.38 diff -u -r1.37 -r1.38 --- mod_include.c 1998/02/21 11:44:09 1.37 +++ mod_include.c 1998/02/21 12:25:41 1.38 @@ -1023,11 +1023,9 @@ } else { int l, x; -#if defined(BSD) -#if BSD 199305 +#if defined(BSD) BSD 199305 /* ap_snprintf can't handle %qd */ sprintf(tag, %qd, finfo.st_size); -#endif #else ap_snprintf(tag, sizeof(tag), %ld, finfo.st_size); #endif
cvs commit: apache-1.3/src/modules/standard mod_include.c
dgaudet 98/02/21 04:26:23 Modified:src CHANGES src/modules/standard mod_include.c Log: boy that was a dumb patch, back it out Revision ChangesPath 1.649 +0 -3 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.648 retrieving revision 1.649 diff -u -r1.648 -r1.649 --- CHANGES 1998/02/21 11:45:56 1.648 +++ CHANGES 1998/02/21 12:26:20 1.649 @@ -1,8 +1,5 @@ Changes with Apache 1.3b6 - *) Work around a broken C preprocessor in mod_include. - [Dean Gaudet] PR#1717 - *) Use SA_RESETHAND or SA_ONESHOT when installing the coredump handlers. In particular the handlers could trigger themselves into an infinite loop if RLimitMem was used with a small amount of memory -- too small 1.73 +1 -3 apache-1.3/src/modules/standard/mod_include.c Index: mod_include.c === RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_include.c,v retrieving revision 1.72 retrieving revision 1.73 diff -u -r1.72 -r1.73 --- mod_include.c 1998/02/21 11:45:59 1.72 +++ mod_include.c 1998/02/21 12:26:22 1.73 @@ -1049,11 +1049,9 @@ } else { int l, x; -#if defined(BSD) -#if BSD 199305 +#if defined(BSD) BSD 199305 /* ap_snprintf can't handle %qd */ sprintf(tag, %qd, finfo.st_size); -#endif #else ap_snprintf(tag, sizeof(tag), %ld, finfo.st_size); #endif
cvs commit: apache-1.3/src/main http_core.c
dgaudet 98/02/21 12:32:08 Modified:src/main http_core.c Log: fix typo Revision ChangesPath 1.163 +1 -1 apache-1.3/src/main/http_core.c Index: http_core.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_core.c,v retrieving revision 1.162 retrieving revision 1.163 diff -u -r1.162 -r1.163 --- http_core.c 1998/02/21 01:42:39 1.162 +++ http_core.c 1998/02/21 20:32:06 1.163 @@ -1637,7 +1637,7 @@ set_rlimit(cmd,conf-limit_mem,arg,arg2,RLIMIT_AS); #elif defined(RLIMIT_DATA) set_rlimit(cmd,conf-limit_mem,arg,arg2,RLIMIT_DATA); -#else defined(RLIMIT_VMEM) +#elif defined(RLIMIT_VMEM) set_rlimit(cmd,conf-limit_mem,arg,arg2,RLIMIT_VMEM); #endif return NULL;
cvs commit: apache-1.3/src/main Makefile.tmpl
dgaudet 98/02/22 16:04:44 Modified:src/main Makefile.tmpl Log: no explain.c Revision ChangesPath 1.12 +1 -4 apache-1.3/src/main/Makefile.tmpl Index: Makefile.tmpl === RCS file: /export/home/cvs/apache-1.3/src/main/Makefile.tmpl,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- Makefile.tmpl 1998/02/22 04:37:10 1.11 +++ Makefile.tmpl 1998/02/23 00:04:43 1.12 @@ -11,7 +11,7 @@ OBJS= alloc.o http_main.o http_core.o http_config.o http_request.o \ http_log.o http_protocol.o rfc1413.o util.o util_script.o buff.o \ - md5c.o util_md5.o explain.o http_bprintf.o util_date.o \ + md5c.o util_md5.o http_bprintf.o util_date.o \ fnmatch.o http_vhost.o .c.o: @@ -55,9 +55,6 @@ buff.o: buff.c $(INCDIR)/httpd.h $(INCDIR)/conf.h ../os/unix/os.h \ $(INCDIR)/hsregex.h $(INCDIR)/alloc.h $(INCDIR)/buff.h \ $(INCDIR)/ap.h $(INCDIR)/http_main.h $(INCDIR)/http_log.h -explain.o: explain.c $(INCDIR)/httpd.h $(INCDIR)/conf.h \ - ../os/unix/os.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \ - $(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/explain.h fnmatch.o: fnmatch.c $(INCDIR)/fnmatch.h http_bprintf.o: http_bprintf.c $(INCDIR)/httpd.h $(INCDIR)/conf.h \ ../os/unix/os.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \
cvs commit: apache-1.3/src/modules/standard mod_unique_id.c
dgaudet 98/02/22 16:05:41 Modified:src/include conf.h src/main buff.c http_core.c src/modules/experimental mod_mmap_static.c src/modules/standard mod_unique_id.c Log: We have NO_UNISTD_H, but we don't use it in conf.h ... surely this is a mistake. Clean up unistd.h usage elsewhere as well. Revision ChangesPath 1.184 +1 -1 apache-1.3/src/include/conf.h Index: conf.h === RCS file: /export/home/cvs/apache-1.3/src/include/conf.h,v retrieving revision 1.183 retrieving revision 1.184 diff -u -r1.183 -r1.184 --- conf.h1998/02/22 21:14:54 1.183 +++ conf.h1998/02/23 00:05:36 1.184 @@ -909,7 +909,7 @@ #define LOGNAME_MAX 25 #endif -#if !defined(NEXT) !defined(WIN32) +#ifndef NO_UNISTD_H #include unistd.h #endif 1.65 +0 -3 apache-1.3/src/main/buff.c Index: buff.c === RCS file: /export/home/cvs/apache-1.3/src/main/buff.c,v retrieving revision 1.64 retrieving revision 1.65 diff -u -r1.64 -r1.65 --- buff.c1998/02/12 21:13:18 1.64 +++ buff.c1998/02/23 00:05:37 1.65 @@ -59,9 +59,6 @@ #include stdio.h #include stdarg.h #include string.h -#ifndef NO_UNISTD_H -#include unistd.h -#endif #ifndef NO_WRITEV #include sys/types.h #include sys/uio.h 1.164 +0 -1 apache-1.3/src/main/http_core.c Index: http_core.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_core.c,v retrieving revision 1.163 retrieving revision 1.164 diff -u -r1.163 -r1.164 --- http_core.c 1998/02/21 20:32:06 1.163 +++ http_core.c 1998/02/23 00:05:38 1.164 @@ -67,7 +67,6 @@ #include fnmatch.h #ifdef USE_MMAP_FILES -#include unistd.h #include sys/mman.h /* mmap support for static files based on ideas from John Heidemann's 1.2 +0 -1 apache-1.3/src/modules/experimental/mod_mmap_static.c Index: mod_mmap_static.c === RCS file: /export/home/cvs/apache-1.3/src/modules/experimental/mod_mmap_static.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- mod_mmap_static.c 1998/02/10 11:00:58 1.1 +++ mod_mmap_static.c 1998/02/23 00:05:40 1.2 @@ -107,7 +107,6 @@ #include fcntl.h #include errno.h #include string.h -#include unistd.h #include sys/mman.h #include httpd.h 1.13 +0 -1 apache-1.3/src/modules/standard/mod_unique_id.c Index: mod_unique_id.c === RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_unique_id.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- mod_unique_id.c 1998/02/05 07:52:34 1.12 +++ mod_unique_id.c 1998/02/23 00:05:41 1.13 @@ -61,7 +61,6 @@ #include http_config.h #include http_log.h #include multithread.h -#include unistd.h #ifdef MULTITHREAD #error sorry this module does not support multithreaded servers yet
cvs commit: apache-1.3/src/main util_script.c
dgaudet 98/02/22 23:58:46 Modified:src CHANGES src/main util_script.c Log: hide Proxy-Authorization just like Authorization is hidden Submitted by: Alvaro Martinez Echevarria [EMAIL PROTECTED] Reviewed by: Martin Kraemer, Ian Kluft, Dean Gaudet Revision ChangesPath 1.657 +3 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.656 retrieving revision 1.657 diff -u -r1.656 -r1.657 --- CHANGES 1998/02/22 20:52:22 1.656 +++ CHANGES 1998/02/23 07:58:42 1.657 @@ -1,5 +1,8 @@ Changes with Apache 1.3b6 + *) Hide Proxy-Authorization from CGI/SSI/etc just like Authorization is + hidden. [Alvaro Martinez Echevarria] + *) Apache will, when started with the -X (single process) debugging flag, honor the SIGINT or SIGQUIT signals again now. This capability got lost a while ago during OS/2 signal handling changes. 1.97 +2 -1 apache-1.3/src/main/util_script.c Index: util_script.c === RCS file: /export/home/cvs/apache-1.3/src/main/util_script.c,v retrieving revision 1.96 retrieving revision 1.97 diff -u -r1.96 -r1.97 --- util_script.c 1998/02/21 11:05:17 1.96 +++ util_script.c 1998/02/23 07:58:45 1.97 @@ -214,7 +214,8 @@ * in the environment with ps -e. But, if you must... */ #ifndef SECURITY_HOLE_PASS_AUTHORIZATION - else if (!strcasecmp(hdrs[i].key, Authorization)) + else if (!strcasecmp(hdrs[i].key, Authorization) || + !strcasecmp(hdrs[i].key, Proxy-Authorization)) continue; #endif else
cvs commit: apache-1.3/src/modules/standard mod_setenvif.c
dgaudet 98/02/23 02:53:35 Modified:src CHANGES src/modules/standard mod_setenvif.c Log: BrowserMatch didn't handle spaces in the regex properly. I redid Ronald's patch because it would have required proper quoting to work right. While I was in there I removed the need for the cmd-info cast, and cleaned up a few other things. PR: 1825 Submitted by: Ronald Tschalaer [EMAIL PROTECTED] Revision ChangesPath 1.661 +3 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.660 retrieving revision 1.661 diff -u -r1.660 -r1.661 --- CHANGES 1998/02/23 08:34:56 1.660 +++ CHANGES 1998/02/23 10:53:27 1.661 @@ -1,5 +1,8 @@ Changes with Apache 1.3b6 + *) The mod_setenvif BrowserMatch backwards compatibility command did not + work properly with spaces in the regex. [Ronald Tschalaer] PR#1825 + *) Add new RewriteMap types: First, `rnd' which is equivalent to the `txt' type but with a special post-processing for the looked-up value: It parses it into alternatives according to `|' chars and then only one 1.16 +35 -35apache-1.3/src/modules/standard/mod_setenvif.c Index: mod_setenvif.c === RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_setenvif.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- mod_setenvif.c1998/01/31 15:34:50 1.15 +++ mod_setenvif.c1998/02/23 10:53:31 1.16 @@ -146,35 +146,27 @@ return a; } -static const char *add_setenvif(cmd_parms *cmd, void *mconfig, const char *args) +/* any non-NULL magic constant will do... used to indicate if REG_ICASE should be + * used */ +#define ICASE_MAGIC ((void *)(setenvif_module)) + +static const char *add_setenvif_core(cmd_parms *cmd, void *mconfig, +char *fname, const char *args) { -char *fname; char *regex; const char *feature; -const char *cmdline = args; sei_cfg_rec *sconf = get_module_config(cmd-server-module_config, setenvif_module); sei_entry *new, *entries = (sei_entry *) sconf-conditionals-elts; char *var; int i; -int cflags = (int) (long) cmd-info; -char *error; int beenhere = 0; -/* - * Pull in the invariant pieces from the command line. - */ -fname = getword_conf(cmd-pool, cmdline); -if (!*fname) { -error = pstrcat(cmd-pool, Missing header-field name for , -cmd-cmd-name, NULL); -return error; -} -regex = getword_conf(cmd-pool, cmdline); +/* get regex */ +regex = getword_conf(cmd-pool, args); if (!*regex) { -error = pstrcat(cmd-pool, Missing regular expression for , +return pstrcat(cmd-pool, Missing regular expression for , cmd-cmd-name, NULL); -return error; } /* @@ -195,17 +187,17 @@ new-name = fname; new-regex = regex; new-preg = pregcomp(cmd-pool, regex, - (REG_EXTENDED | REG_NOSUB | cflags)); + (REG_EXTENDED | REG_NOSUB + | (cmd-info == ICASE_MAGIC ? REG_ICASE : 0))); if (new-preg == NULL) { -error = pstrcat(cmd-pool, cmd-cmd-name, +return pstrcat(cmd-pool, cmd-cmd-name, regex could not be compiled., NULL); -return error; } new-features = make_table(cmd-pool, 5); gotit: for( ; ; ) { - feature = getword_conf(cmd-pool, cmdline); + feature = getword_conf(cmd-pool, args); if(!*feature) break; beenhere++; @@ -223,38 +215,46 @@ } if (!beenhere) { -error = pstrcat(cmd-pool, Missing envariable expression for , +return pstrcat(cmd-pool, Missing envariable expression for , cmd-cmd-name, NULL); -return error; } return NULL; } +static const char *add_setenvif(cmd_parms *cmd, void *mconfig, const char *args) +{ +char *fname; + +/* get header name */ +fname = getword_conf(cmd-pool, args); +if (!*fname) { +return pstrcat(cmd-pool, Missing header-field name for , +cmd-cmd-name, NULL); +} +return add_setenvif_core(cmd, mconfig, fname, args); +} + /* * This routine handles the BrowserMatch* directives. It simply turns around * and feeds them, with the appropriate embellishments, to the general-purpose * command handler. */ -static const char *add_browser(cmd_parms
cvs commit: apache-1.3/src CHANGES
dgaudet 98/02/23 23:22:23 Modified:src CHANGES Log: this is right isn't it Ralf? You used some of Jay's code I think Revision ChangesPath 1.663 +2 -1 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.662 retrieving revision 1.663 diff -u -r1.662 -r1.663 --- CHANGES 1998/02/23 15:24:34 1.662 +++ CHANGES 1998/02/24 07:22:20 1.663 @@ -17,7 +17,8 @@ `toupper' which can be used to map URL parts to a fixed case (this is an essential feature to fix the case of server names when doing mass virtual-hosting with the help of mod_rewrite instead of using - VirtualHost sections). [Ralf S. Engelschall] + VirtualHost sections). [Ralf S. Engelschall, parts based on code from + Jay Soffian [EMAIL PROTECTED], PR#1631] *) Add a new directive to mod_proxy similar to ProxyPass: `ProxyPassReverse'. This directive lets Apache adjust the URL in Location-headers on HTTP
cvs commit: apache-1.3/src/main http_config.c
dgaudet 98/02/25 01:36:13 Modified:src CHANGES src/main http_config.c Log: fix binding to port 0 Revision ChangesPath 1.667 +3 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.666 retrieving revision 1.667 diff -u -r1.666 -r1.667 --- CHANGES 1998/02/24 13:39:05 1.666 +++ CHANGES 1998/02/25 09:36:09 1.667 @@ -1,5 +1,8 @@ Changes with Apache 1.3b6 + *) Fix bug introduced in 1.3b4-dev, config with no Port setting would cause + server to bind to port 0 rather than 80. [Dean Gaudet] + *) Fix long-standing problem with RewriteMap _programs_ under Unix derivates (like SunOS and FreeBSD) which don't accept the locking of pipes directly. A new directive RewriteLock is introduced which can be used to 1.99 +1 -1 apache-1.3/src/main/http_config.c Index: http_config.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_config.c,v retrieving revision 1.98 retrieving revision 1.99 diff -u -r1.98 -r1.99 --- http_config.c 1998/02/21 21:04:33 1.98 +++ http_config.c 1998/02/25 09:36:12 1.99 @@ -1303,7 +1303,7 @@ new = pcalloc(p, sizeof(listen_rec)); new-local_addr.sin_family = AF_INET; new-local_addr.sin_addr = bind_address; -new-local_addr.sin_port = htons(s-port); +new-local_addr.sin_port = htons(s-port ? s-port : DEFAULT_HTTP_PORT); new-fd = -1; new-used = 0; new-next = NULL;
cvs commit: apache-1.3/htdocs/manual/mod mod_alias.html
dgaudet 98/02/25 23:01:13 Modified:htdocs/manual/mod mod_alias.html Log: what a tangled web we weave... PR: 1874 Revision ChangesPath 1.19 +9 -0 apache-1.3/htdocs/manual/mod/mod_alias.html Index: mod_alias.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/mod/mod_alias.html,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- mod_alias.html1998/02/05 20:04:39 1.18 +++ mod_alias.html1998/02/26 07:01:12 1.19 @@ -74,6 +74,15 @@ if you use CODEAlias /icons/ /usr/local/apache/icons//CODE then the url CODE/icons/CODE will not be aliased. /P +p +Note that you may need to specify additional +a href=core.html#directorycodelt;Directorygt;/code/a sections +which cover the idestination/i of aliases. Aliasing occurs +before codelt;Directorygt;/code sections are checked, so only +the destination of aliases are affected. (Note however +a href=core.html#locationcodelt;Locationgt;/code/a +sections are run through once before aliases are performed, so they +will apply.) P See also A HREF=#scriptaliasScriptAlias/A. /P
cvs commit: apache-1.3/src/modules/standard Makefile.tmpl
dgaudet 98/02/28 02:32:03 Modified:src Makefile.tmpl src/ap Makefile.tmpl src/include util_uri.h src/main Makefile.tmpl http_main.c util_uri.c src/modules/proxy Makefile.tmpl proxy_util.c src/modules/standard Makefile.tmpl Log: Some cleanup for uril_uri: - eliminate a few warnings - get rid of the static local in parse_uri_components_regex by creating util_uri_init() routine called from main() - don't use static re.match 'cause it's not thread safe - factor some common code from the win32 and unix case into common_init() - update dependencies still hacking. Revision ChangesPath 1.79 +1 -1 apache-1.3/src/Makefile.tmpl Index: Makefile.tmpl === RCS file: /export/home/cvs/apache-1.3/src/Makefile.tmpl,v retrieving revision 1.78 retrieving revision 1.79 diff -u -r1.78 -r1.79 --- Makefile.tmpl 1998/02/22 04:37:08 1.78 +++ Makefile.tmpl 1998/02/28 10:31:53 1.79 @@ -70,4 +70,4 @@ buildmark.o: buildmark.c modules.o: modules.c $(INCDIR)/httpd.h $(INCDIR)/conf.h os/unix/os.h \ $(INCDIR)/hsregex.h $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \ - $(INCDIR)/http_config.h + $(INCDIR)/util_uri.h $(INCDIR)/http_config.h 1.14 +6 -5 apache-1.3/src/ap/Makefile.tmpl Index: Makefile.tmpl === RCS file: /export/home/cvs/apache-1.3/src/ap/Makefile.tmpl,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- Makefile.tmpl 1998/02/22 04:37:09 1.13 +++ Makefile.tmpl 1998/02/28 10:31:54 1.14 @@ -38,18 +38,19 @@ # DO NOT REMOVE ap_cpystrn.o: ap_cpystrn.c $(INCDIR)/httpd.h $(INCDIR)/conf.h \ ../os/unix/os.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \ - $(INCDIR)/buff.h $(INCDIR)/ap.h + $(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h ap_execve.o: ap_execve.c $(INCDIR)/httpd.h $(INCDIR)/conf.h \ ../os/unix/os.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \ - $(INCDIR)/buff.h $(INCDIR)/ap.h + $(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h ap_signal.o: ap_signal.c $(INCDIR)/httpd.h $(INCDIR)/conf.h \ ../os/unix/os.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \ - $(INCDIR)/buff.h $(INCDIR)/ap.h + $(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h ap_slack.o: ap_slack.c $(INCDIR)/httpd.h $(INCDIR)/conf.h \ ../os/unix/os.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \ - $(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/http_log.h + $(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h \ + $(INCDIR)/http_log.h ap_snprintf.o: ap_snprintf.c $(INCDIR)/conf.h ../os/unix/os.h \ $(INCDIR)/hsregex.h ap_strings.o: ap_strings.c $(INCDIR)/httpd.h $(INCDIR)/conf.h \ ../os/unix/os.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \ - $(INCDIR)/buff.h $(INCDIR)/ap.h + $(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h 1.3 +10 -7 apache-1.3/src/include/util_uri.h Index: util_uri.h === RCS file: /export/home/cvs/apache-1.3/src/include/util_uri.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- util_uri.h1998/02/27 15:19:54 1.2 +++ util_uri.h1998/02/28 10:31:55 1.3 @@ -112,15 +112,18 @@ } uri_components; /* util_uri.c */ -extern unsigned short default_port_for_scheme(const char *scheme_str); -extern unsigned short default_port_for_request(const request_rec *r); -extern struct hostent *pduphostent(pool *p, struct hostent *hp); -extern struct hostent *pgethostbyname(pool *p, const char *hostname); -extern char *unparse_uri_components(pool *p, const uri_components *uptr, +API_EXPORT(unsigned short) default_port_for_scheme(const char *scheme_str); +API_EXPORT(unsigned short) default_port_for_request(const request_rec *r); +API_EXPORT(struct hostent *) pduphostent(pool *p, struct hostent *hp); +API_EXPORT(struct hostent *) pgethostbyname(pool *p, const char *hostname); +API_EXPORT(char *) unparse_uri_components(pool *p, const uri_components *uptr, int *pHostlen, unsigned flags); -extern int parse_uri_components(pool *p, const char *uri, uri_components *uptr, +API_EXPORT(int) parse_uri_components(pool *p, const char *uri, uri_components *uptr, int *pHostlen); -extern int parse_uri_components_regex(pool *p, const char *uri, +API_EXPORT(int) parse_uri_components_regex(pool *p, const char *uri, uri_components *uptr); + +/* called by the core in main() */ +extern void util_uri_init(void); #endif /*UTIL_URI_H*/ 1.15 +47 -38apache-1.3/src/main/Makefile.tmpl Index: Makefile.tmpl === RCS file: /export/home/cvs
cvs commit: apache-1.3/htdocs/manual/misc known_bugs.html
dgaudet 98/02/28 15:54:57 Modified:htdocs/manual/misc known_bugs.html Log: 1.3b5 proxy is broken. No patch supplied. Revision ChangesPath 1.47 +2 -0 apache-1.3/htdocs/manual/misc/known_bugs.html Index: known_bugs.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/misc/known_bugs.html,v retrieving revision 1.46 retrieving revision 1.47 diff -u -r1.46 -r1.47 --- known_bugs.html 1998/02/21 10:46:01 1.46 +++ known_bugs.html 1998/02/28 23:54:56 1.47 @@ -45,6 +45,8 @@ a href=http://www.apache.org/dist/patches/apply_to_1.3b5/PR1850.patch;this patch/a to fix the problem. See a href=http://bugs.apache.org/index/full/1850;PR#1850/a for more details. +liabsoluteURI parsing is broken, so the proxy won't work. This will be fixed +in the next beta. /ol H2Apache 1.3b3 Bugs/H2
cvs commit: apache-1.3/htdocs/manual/misc known_bugs.html
dgaudet 98/02/28 16:09:48 Modified:htdocs/manual/misc known_bugs.html Log: ok I made a patch available. PR: 1889 Revision ChangesPath 1.48 +4 -2 apache-1.3/htdocs/manual/misc/known_bugs.html Index: known_bugs.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/misc/known_bugs.html,v retrieving revision 1.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 --- known_bugs.html 1998/02/28 23:54:56 1.47 +++ known_bugs.html 1998/03/01 00:09:47 1.48 @@ -45,8 +45,10 @@ a href=http://www.apache.org/dist/patches/apply_to_1.3b5/PR1850.patch;this patch/a to fix the problem. See a href=http://bugs.apache.org/index/full/1850;PR#1850/a for more details. -liabsoluteURI parsing is broken, so the proxy won't work. This will be fixed -in the next beta. +liabsoluteURI parsing is broken, so the proxy won't work. Apply +a href=http://www.apache.org/dist/patches/apply_to_1.3b5/PR1889.patch;this +patch/a to fix the problem. See +a href=http://bugs.apache.org/index/full/1850;PR#1889/a for more details /ol H2Apache 1.3b3 Bugs/H2
cvs commit: apache-1.3/htdocs/manual/misc known_bugs.html
dgaudet 98/02/28 16:10:50 Modified:htdocs/manual/misc known_bugs.html Log: cutpaste Revision ChangesPath 1.49 +1 -1 apache-1.3/htdocs/manual/misc/known_bugs.html Index: known_bugs.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/misc/known_bugs.html,v retrieving revision 1.48 retrieving revision 1.49 diff -u -r1.48 -r1.49 --- known_bugs.html 1998/03/01 00:09:47 1.48 +++ known_bugs.html 1998/03/01 00:10:49 1.49 @@ -48,7 +48,7 @@ liabsoluteURI parsing is broken, so the proxy won't work. Apply a href=http://www.apache.org/dist/patches/apply_to_1.3b5/PR1889.patch;this patch/a to fix the problem. See -a href=http://bugs.apache.org/index/full/1850;PR#1889/a for more details +a href=http://bugs.apache.org/index/full/1889;PR#1889/a for more details /ol H2Apache 1.3b3 Bugs/H2
cvs commit: apache-1.3/src/main util_uri.c
dgaudet 98/02/28 16:15:43 Modified:src/main util_uri.c Log: indentation tweak Revision ChangesPath 1.5 +2 -2 apache-1.3/src/main/util_uri.c Index: util_uri.c === RCS file: /export/home/cvs/apache-1.3/src/main/util_uri.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- util_uri.c1998/02/28 12:22:29 1.4 +++ util_uri.c1998/03/01 00:15:41 1.5 @@ -413,8 +413,8 @@ } /* This is a sub-RE which will break down the hostinfo part, - * i.e., user, password, hostname and port. - * $ 12 3 4 5 6*/ + * i.e., user, password, hostname and port. + * $ 12 3 4 5 6*/ re_str= ^(([^:]*):(.*)?@)?([^@:]*)(:(.*))?$; /* ^^user^ :pw ^host^ port */ if ((ret = regcomp(re_hostpart, re_str, REG_EXTENDED|REG_ICASE)) != 0) {
cvs commit: apache-1.3/src/main util.c
dgaudet 98/02/28 16:19:36 Modified:src CHANGES src/main util.c Log: Wow this is an ancient bug... \\ didn't do what it was supposed to do. Fixing this means that regexes using \\ will break suddenly because they need to become ... I dunno what to do about that. Submitted by: [EMAIL PROTECTED] Revision ChangesPath 1.674 +2 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.673 retrieving revision 1.674 diff -u -r1.673 -r1.674 --- CHANGES 1998/02/28 15:39:25 1.673 +++ CHANGES 1998/03/01 00:19:33 1.674 @@ -1,5 +1,7 @@ Changes with Apache 1.3b6 + *) Make \\ behave as expected. [EMAIL PROTECTED] + *) Add `Rule HIDE' to Configuration to hide the Apache symbol namespace from conflicting with third-party libraries some modules force to be linked with Apache. [Ralf S. Engelschall] 1.94 +1 -1 apache-1.3/src/main/util.c Index: util.c === RCS file: /export/home/cvs/apache-1.3/src/main/util.c,v retrieving revision 1.93 retrieving revision 1.94 diff -u -r1.93 -r1.94 --- util.c1998/02/02 22:33:34 1.93 +++ util.c1998/03/01 00:19:35 1.94 @@ -585,7 +585,7 @@ int i; for (i = 0; i len; ++i) { - if (start[i] == '\\' (start[i + 1] == '/' + if (start[i] == '\\' (start[i + 1] == '\\' || (quote start[i + 1] == quote))) *resp++ = start[++i]; else
cvs commit: apache-1.3/src/modules/standard mod_imap.c
dgaudet 98/02/28 16:31:51 Modified:src CHANGES src/modules/standard mod_imap.c Log: fix border processing for polys PR: 1771 Submitted by: Konstantin Morshnev [EMAIL PROTECTED] Revision ChangesPath 1.675 +4 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.674 retrieving revision 1.675 diff -u -r1.674 -r1.675 --- CHANGES 1998/03/01 00:19:33 1.674 +++ CHANGES 1998/03/01 00:31:47 1.675 @@ -1,5 +1,9 @@ Changes with Apache 1.3b6 + *) The poly directive in image maps did not include the borders of the + polygon, whereas the rect directive does. Fix this inconsistency. + [Konstantin Morshnev [EMAIL PROTECTED]] PR#1771 + *) Make \\ behave as expected. [EMAIL PROTECTED] *) Add `Rule HIDE' to Configuration to hide the Apache symbol 1.42 +23 -74apache-1.3/src/modules/standard/mod_imap.c Index: mod_imap.c === RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_imap.c,v retrieving revision 1.41 retrieving revision 1.42 diff -u -r1.41 -r1.42 --- mod_imap.c1998/02/01 22:05:40 1.41 +++ mod_imap.c1998/03/01 00:31:50 1.42 @@ -196,86 +196,35 @@ return (radius2 = radius1); } +#define fmin(a,b) (((a)(b))?(b):(a)) +#define fmax(a,b) (((a)(b))?(a):(b)) + static int pointinpoly(const double point[2], double pgon[MAXVERTS][2]) { -int i, numverts, inside_flag, xflag0; -int crossings; -double *p; -const double *stop; -double tx, ty, y; - -for (i = 0; pgon[i][X] != -1 i MAXVERTS; i++); - -numverts = i; -crossings = 0; - -tx = point[X]; -ty = point[Y]; -y = pgon[numverts - 1][Y]; +int i, numverts, crossings = 0; +double x = point[X], y = point[Y]; -p = (double *) pgon + 1; -if ((y = ty) != (*p = ty)) { - - xflag0 = (pgon[numverts - 1][X] = tx); -if (xflag0 == (*(double *) pgon = tx)) { -if (xflag0) { -crossings++; - } -} -else { -crossings += (pgon[numverts - 1][X] - (y - ty) * - (*(double *) pgon - pgon[numverts - 1][X]) / - (*p - y)) = tx; -} +for (numverts = 0; pgon[numverts][X] != -1 numverts MAXVERTS; + numverts++) { + /* just counting the vertexes */ } -stop = pgon[numverts]; - -for (y = *p, p += 2; p stop; y = *p, p += 2) { - -if (y = ty) { - -while ((p stop) (*p = ty)) { -p += 2; - } - -if (p = stop) { -break; -} - if ((xflag0 = (*(p - 3) = tx)) == (*(p - 1) = tx)) { - -if (xflag0) { -crossings++; - } -} -else { -crossings += (*(p - 3) - (*(p - 2) - ty) * - (*(p - 1) - *(p - 3)) / (*p - *(p - 2))) = tx; -} -} -else { -while ((p stop) (*p ty)) { -p += 2; - } - -if (p = stop) { -break; - } - -if ((xflag0 = (*(p - 3) = tx)) == (*(p - 1) = tx)) { -if (xflag0) { -crossings++; - } -} -else { -crossings += (*(p - 3) - (*(p - 2) - ty) * - (*(p - 1) - *(p - 3)) / (*p - *(p - 2))) = tx; -} -} +for (i = 0; i numverts; i++) { +double x1=pgon[i][X]; +double y1=pgon[i][Y]; +double x2=pgon[(i + 1) % numverts][X]; +double y2=pgon[(i + 1) % numverts][Y]; +double d=(y - y1) * (x2 - x1) - (x - x1) * (y2 - y1); + +if ((y1 = y) != (y2 = y)) { + crossings +=y2 - y1 = 0 ? d = 0 : d = 0; + } +if (!d fmin(x1,x2) = x x = fmax(x1,x2) + fmin(y1,y2) = y y = fmax(y1,y2)) { + return 1; + } } - -inside_flag = crossings 0x01; -return (inside_flag); +return crossings 0x01; }
cvs commit: apache-1.3/src Makefile.tmpl
dgaudet 98/03/01 23:07:17 Modified:src Makefile.tmpl Log: some garbage that crept in Revision ChangesPath 1.82 +0 -2 apache-1.3/src/Makefile.tmpl Index: Makefile.tmpl === RCS file: /export/home/cvs/apache-1.3/src/Makefile.tmpl,v retrieving revision 1.81 retrieving revision 1.82 diff -u -r1.81 -r1.82 --- Makefile.tmpl 1998/03/02 07:05:53 1.81 +++ Makefile.tmpl 1998/03/02 07:07:16 1.82 @@ -87,5 +87,3 @@ modules.o: modules.c $(INCDIR)/httpd.h $(INCDIR)/conf.h os/unix/os.h \ $(INCDIR)/hsregex.h $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \ $(INCDIR)/util_uri.h $(INCDIR)/http_config.h -t.o: t.c -tt.o: tt.c
cvs commit: apache-1.3/src/os/unix os.h
dgaudet 98/03/02 09:51:34 Modified:src/os/unix os.h Log: remove a gccism: __const Revision ChangesPath 1.7 +3 -3 apache-1.3/src/os/unix/os.h Index: os.h === RCS file: /export/home/cvs/apache-1.3/src/os/unix/os.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- os.h 1998/02/24 10:30:55 1.6 +++ os.h 1998/03/02 17:51:33 1.7 @@ -41,9 +41,9 @@ #ifdef HAS_DLFCN # include dlfcn.h #else -void * dlopen (__const char * __filename, int __flag); -__const char * dlerror (void); -void * dlsym (void *, __const char *); +void * dlopen (const char * __filename, int __flag); +const char * dlerror (void); +void * dlsym (void *, const char *); int dlclose (void *); #endif
cvs commit: apache-1.3/src/main http_vhost.c
dgaudet 98/03/02 09:53:48 Modified:src/main http_vhost.c Log: some systems #define s_addr s_addr_list[0].S_un or something like that, so s_addr is offlimits Revision ChangesPath 1.9 +4 -4 apache-1.3/src/main/http_vhost.c Index: http_vhost.c === RCS file: /export/home/cvs/apache-1.3/src/main/http_vhost.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- http_vhost.c 1998/03/02 06:51:11 1.8 +++ http_vhost.c 1998/03/02 17:53:47 1.9 @@ -373,14 +373,14 @@ { unsigned bucket; ipaddr_chain *trav; -unsigned s_addr; +unsigned addr; /* scan the hash table for an exact match first */ -s_addr = server_ip-s_addr; -bucket = hash_inaddr(s_addr); +addr = server_ip-s_addr; +bucket = hash_inaddr(addr); for (trav = iphash_table[bucket]; trav; trav = trav-next) { server_addr_rec *sar = trav-sar; - if ((sar-host_addr.s_addr == s_addr) + if ((sar-host_addr.s_addr == addr) (sar-host_port == 0 || sar-host_port == port || port == 0)) { return trav;
cvs commit: apache-1.3/src/include conf.h
dgaudet 98/03/02 17:22:11 Modified:htdocs/manual new_features_1_3.html htdocs/manual/misc perf-tuning.html src CHANGES Configure src/include conf.h Log: Fall back to USE_FCNTL_SERIALIZED_ACCEPT for Solaris. It's foolish us wasting resources trying to solve what may end up being bugs in solaris. PR: 1779, 1854, 1904 Revision ChangesPath 1.47 +1 -2 apache-1.3/htdocs/manual/new_features_1_3.html Index: new_features_1_3.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/new_features_1_3.html,v retrieving revision 1.46 retrieving revision 1.47 diff -u -r1.46 -r1.47 --- new_features_1_3.html 1998/02/23 08:27:35 1.46 +++ new_features_1_3.html 1998/03/03 01:21:55 1.47 @@ -305,8 +305,7 @@ performed for each hit, now it is performed only once per second. This should be noticeable on servers running with hundreds of children and high loads. -LINew serialization choices improve performance on Linux, Solaris, - and IRIX. +LINew serialization choices improve performance on Linux, and IRIX. LICODEA HREF=mod/mod_log_config.htmlmod_log_config/A/CODE can be compile-time configured to buffer writes. LIReplaced CODEstrncpy()/CODE with CODEap_cpystrn()/CODE, a 1.9 +4 -2 apache-1.3/htdocs/manual/misc/perf-tuning.html Index: perf-tuning.html === RCS file: /export/home/cvs/apache-1.3/htdocs/manual/misc/perf-tuning.html,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- perf-tuning.html 1998/02/05 21:19:57 1.8 +++ perf-tuning.html 1998/03/03 01:21:56 1.9 @@ -371,8 +371,10 @@ DTCODEUSE_PTHREAD_SERIALIZED_ACCEPT/CODE DD(1.3 or later) This method uses POSIX mutexes and should work on any architecture implementing the full POSIX threads specification, -however appears to only work on Solaris (2.5 or later). This is the -default for Solaris 2.5 or later. +however appears to only work on Solaris (2.5 or later), and even then +only in certain configurations. If you experiment with this you should +watch out for your server hanging and not responding. Static content +only servers may work just fine. /DL PIf your system has another method of serialization which isn't in the 1.678 +8 -0 apache-1.3/src/CHANGES Index: CHANGES === RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v retrieving revision 1.677 retrieving revision 1.678 diff -u -r1.677 -r1.678 --- CHANGES 1998/03/02 10:57:57 1.677 +++ CHANGES 1998/03/03 01:22:03 1.678 @@ -1,5 +1,13 @@ Changes with Apache 1.3b6 + *) USE_PTHREAD_SERIALIZED_ACCEPT has proven unreliable depending on + the rev of Solaris and what mixture of modules are in use. So + it has been disabled, and Solaris is back to using + USE_FCNTL_SERIALIZED_ACCEPT. Users may experiment with + USE_PTHREAD_SERIALIZED_ACCEPT at their own risk, it may speed + up static content only servers. Or it may fail unpredictably. + [Dean Gaudet] PR#1779, 1854, 1904 + *) mod_test_util_uri.c created which tests the logic in util_uri.c. [Dean Gaudet] 1.193 +0 -5 apache-1.3/src/Configure Index: Configure === RCS file: /export/home/cvs/apache-1.3/src/Configure,v retrieving revision 1.192 retrieving revision 1.193 diff -u -r1.192 -r1.193 --- Configure 1998/03/01 12:56:02 1.192 +++ Configure 1998/03/03 01:22:06 1.193 @@ -425,11 +425,6 @@ OS=Solaris $PLATOSVERS CFLAGS=$CFLAGS -DSOLARIS2=$PLATOSVERS LIBS=$LIBS -lsocket -lnsl - case $PLATOSVERS in - 2[56789]*) - LIBS=$LIBS -lpthread - ;; - esac DBM_LIB= case $PLATOSVERS in 2[01234]*) 1.186 +2 -6 apache-1.3/src/include/conf.h Index: conf.h === RCS file: /export/home/cvs/apache-1.3/src/include/conf.h,v retrieving revision 1.185 retrieving revision 1.186 diff -u -r1.185 -r1.186 --- conf.h1998/02/28 15:39:32 1.185 +++ conf.h1998/03/03 01:22:10 1.186 @@ -138,13 +138,9 @@ #undef NO_SETSID #define HAVE_SYS_RESOURCE_H #define bzero(a,b) memset(a,0,b) -#if SOLARIS2 250 -#define USE_FCNTL_SERIALIZED_ACCEPT -#else #if !defined(USE_SYSVSEM_SERIALIZED_ACCEPT) \ -!defined(USE_FCNTL_SERIALIZED_ACCEPT) -#define USE_PTHREAD_SERIALIZED_ACCEPT -#endif +!defined(USE_PTHREAD_SERIALIZED_ACCEPT) +#define