From millerrobert@example.com Sat Dec 01 18:00:04 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 24688 invoked by uid 500); 1 Dec 2001 18:00:04 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 24677 invoked by uid 500); 1 Dec 2001 18:00:04 -0000 Delivered-To: millerrobert@example.com Date: 1 Dec 2001 17:42:18 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/server Makefile.in X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N trawick 01/12/01 09:42:18 Modified: . CHANGES configure.in server Makefile.in Log: Get shared builds of libapr and libaprutil, as well as Apache DSOs, working on AIX. Submitted by: a cast of many, reverse engineering libtool to figure out how to work around its oddities/limitations/ bugs on AIX (Jeff Trawick coded these changes but it took a lot of help) Revision Changes Path 1.464 +4 -0 httpd-2.0/CHANGES Index: CHANGES =================================================================== RCS file: /home/cvs/httpd-2.0/CHANGES,v retrieving revision 1.463 retrieving revision 1.464 diff -u -r1.463 -r1.464 --- CHANGES 2001/12/01 05:38:22 1.463 +++ CHANGES 2001/12/01 17:42:17 1.464 @@ -1,5 +1,9 @@ Changes with Apache 2.0.30-dev + *) Get shared builds of libapr and libaprutil, as well as Apache DSOs, + working on AIX. [Aaron Bannert, Dick Dunbar <millerrobert@example.com>, + Gary Hook <millerrobert@example.com>, Victor Orlikowski, Jeff Trawick] + *) Fix the handling of SSI directives in which the ">" of the terminating "-->" is the last byte in a file [Brian Pane] 1.187 +3 -11 httpd-2.0/configure.in Index: configure.in =================================================================== RCS file: /home/cvs/httpd-2.0/configure.in,v retrieving revision 1.186 retrieving revision 1.187 diff -u -r1.186 -r1.187 --- configure.in 2001/11/22 20:29:11 1.186 +++ configure.in 2001/12/01 17:42:18 1.187 @@ -48,23 +48,15 @@ AC_CANONICAL_SYSTEM -case $host in - *-ibm-aix*) - disable_shared="--disable-shared" - ;; - *) - disable_shared="" -esac - orig_prefix="$prefix" echo $ac_n "${nl}Configuring Apache Portable Runtime library ...${nl}" -APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --prefix=$prefix $disable_shared") +APR_SUBDIR_CONFIG(srclib/apr, "$apache_apr_flags --prefix=$prefix") echo $ac_n "${nl}Configuring Apache Portable Runtime Utility library...${nl}" -APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --prefix=$prefix $disable_shared") +APR_SUBDIR_CONFIG(srclib/apr-util, "--with-apr=../apr --prefix=$prefix") echo $ac_n "${nl}Configuring PCRE regular expression library ...${nl}" @@ -280,7 +272,7 @@ case $host in *-ibm-aix*) HTTPD_LDFLAGS="$HTTPD_LDFLAGS -Wl,-bE:$abs_builddir/server/httpd.exp" - SH_LDFLAGS="$SH_LDFLAGS -Wl,-bI:$abs_builddir/server/httpd.exp" + SH_LDFLAGS="$SH_LDFLAGS -Wl,-bI:$abs_builddir/server/httpd.exp -Wl,-bI:$abs_builddir/srclib/apr/apr.exp -Wl,-bI:$abs_builddir/srclib/apr-util/aprutil.exp" ;; *beos) SH_LDFLAGS='$(top_builddir)/_APP_' 1.70 +2 -2 httpd-2.0/server/Makefile.in Index: Makefile.in =================================================================== RCS file: /home/cvs/httpd-2.0/server/Makefile.in,v retrieving revision 1.69 retrieving revision 1.70 diff -u -r1.69 -r1.70 --- Makefile.in 2001/10/18 18:35:18 1.69 +++ Makefile.in 2001/12/01 17:42:18 1.70 @@ -65,5 +65,5 @@ @echo "#! ." > $@ @echo "* This file was AUTOGENERATED at build time." >> $@ @echo "* Please do not edit by hand." >> $@ - $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) exports.c | grep "ap_hack_" | sed -e 's/^.*[)]\(.*\);$$/\1/' >> $@ - $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.h | sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' >> $@ + $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) exports.c | grep "ap_hack_" | grep -v apr_ | sed -e 's/^.*[)]\(.*\);$$/\1/' >> $@ + $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.h | grep -v apr_ | sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' >> $@ From millerrobert@example.com Sun Dec 02 01:44:35 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 40973 invoked by uid 500); 2 Dec 2001 01:44:35 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 40962 invoked by uid 500); 2 Dec 2001 01:44:35 -0000 Delivered-To: millerrobert@example.com Date: 2 Dec 2001 01:26:45 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/modules/ssl ssl_engine_io.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N wrowe 01/12/01 17:26:45 Modified: modules/ssl ssl_engine_io.c Log: Correct case comparison typematch Revision Changes Path 1.48 +1 -1 httpd-2.0/modules/ssl/ssl_engine_io.c Index: ssl_engine_io.c =================================================================== RCS file: /home/cvs/httpd-2.0/modules/ssl/ssl_engine_io.c,v retrieving revision 1.47 retrieving revision 1.48 diff -u -r1.47 -r1.48 --- ssl_engine_io.c 2001/12/01 02:11:04 1.47 +++ ssl_engine_io.c 2001/12/02 01:26:45 1.48 @@ -171,7 +171,7 @@ */ BIO_clear_retry_flags(bio); - if (!b->length && (inl < (sizeof(b->buffer) - b->blen))) { + if (!b->length && (inl + b->blen < sizeof(b->buffer))) { /* the first two SSL_writes (of 1024 and 261 bytes) * need to be in the same packet (vec[0].iov_base) */ From millerrobert@example.com Sun Dec 02 05:27:38 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 85480 invoked by uid 500); 2 Dec 2001 05:27:38 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 85468 invoked by uid 500); 2 Dec 2001 05:27:38 -0000 Delivered-To: millerrobert@example.com Date: 2 Dec 2001 05:09:51 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/server util.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N brianp 01/12/01 21:09:51 Modified: server util.c Log: Modified ap_make_full_path to minimize the number of strlen operations Revision Changes Path 1.115 +19 -9 httpd-2.0/server/util.c Index: util.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/util.c,v retrieving revision 1.114 retrieving revision 1.115 diff -u -r1.114 -r1.115 --- util.c 2001/09/14 23:26:27 1.114 +++ util.c 2001/12/02 05:09:51 1.115 @@ -1692,16 +1692,26 @@ AP_DECLARE(char *) ap_make_full_path(apr_pool_t *a, const char *src1, const char *src2) { - register int x; + apr_size_t len1, len2; + char *path; - x = strlen(src1); - if (x == 0) - return apr_pstrcat(a, "/", src2, NULL); - - if (src1[x - 1] != '/') - return apr_pstrcat(a, src1, "/", src2, NULL); - else - return apr_pstrcat(a, src1, src2, NULL); + len1 = strlen(src1); + len2 = strlen(src2); + path = (char *)apr_palloc(a, len1 + len2 + 2); /* +2 for '/' plus null */ + if (len1 == 0) { + *path = '/'; + memcpy(path + 1, src2, len2 + 1); + } + else { + char *next; + memcpy(path, src1, len1); + next = path + len1; + if (next[-1] != '/') { + *next++ = '/'; + } + memcpy(next, src2, len2 + 1); + } + return path; } /* From millerrobert@example.com Sun Dec 02 06:04:23 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 91522 invoked by uid 500); 2 Dec 2001 06:04:22 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 91511 invoked by uid 500); 2 Dec 2001 06:04:22 -0000 Delivered-To: millerrobert@example.com Date: 2 Dec 2001 05:46:36 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/server util.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N brianp 01/12/01 21:46:36 Modified: server util.c Log: Reduced the number of strlen operations in ap_getword() Revision Changes Path 1.116 +12 -9 httpd-2.0/server/util.c Index: util.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/util.c,v retrieving revision 1.115 retrieving revision 1.116 diff -u -r1.115 -r1.116 --- util.c 2001/12/02 05:09:51 1.115 +++ util.c 2001/12/02 05:46:36 1.116 @@ -642,21 +642,24 @@ AP_DECLARE(char *) ap_getword(apr_pool_t *atrans, const char **line, char stop) { - const char *pos = ap_strchr_c(*line, stop); + const char *pos = *line; + int len; char *res; - if (!pos) { - res = apr_pstrdup(atrans, *line); - *line += strlen(*line); - return res; + while ((*pos != stop) && *pos) { + ++pos; } - res = apr_pstrndup(atrans, *line, pos - *line); + len = pos - *line; + res = (char *)apr_palloc(atrans, len + 1); + memcpy(res, *line, len); + res[len] = 0; - while (*pos == stop) { - ++pos; + if (stop) { + while (*pos == stop) { + ++pos; + } } - *line = pos; return res; From millerrobert@example.com Sun Dec 02 10:09:08 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 41255 invoked by uid 500); 2 Dec 2001 10:09:07 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 41234 invoked by uid 500); 2 Dec 2001 10:09:06 -0000 Delivered-To: millerrobert@example.com Date: 2 Dec 2001 09:51:19 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/server util_script.c protocol.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N brianp 01/12/02 01:51:19 Modified: server util_script.c protocol.c Log: Optimization: changed some apr_pstrndup calls to apr_pstrmemdup Revision Changes Path 1.70 +1 -1 httpd-2.0/server/util_script.c Index: util_script.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/util_script.c,v retrieving revision 1.69 retrieving revision 1.70 diff -u -r1.69 -r1.70 --- util_script.c 2001/11/24 04:22:45 1.69 +++ util_script.c 2001/12/02 09:51:19 1.70 @@ -356,7 +356,7 @@ ++last; /* end at next whitespace */ } - return apr_pstrndup(r->pool, first, last - first); + return apr_pstrmemdup(r->pool, first, last - first); } AP_DECLARE(void) ap_add_cgi_vars(request_rec *r) 1.56 +1 -1 httpd-2.0/server/protocol.c Index: protocol.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/protocol.c,v retrieving revision 1.55 retrieving revision 1.56 diff -u -r1.55 -r1.56 --- protocol.c 2001/11/28 02:09:46 1.55 +++ protocol.c 2001/12/02 09:51:19 1.56 @@ -453,7 +453,7 @@ pro = "HTTP/0.9"; len = 8; } - r->protocol = apr_pstrndup(r->pool, pro, len); + r->protocol = apr_pstrmemdup(r->pool, pro, len); /* XXX ap_update_connection_status(conn->id, "Protocol", r->protocol); */ From millerrobert@example.com Sun Dec 02 10:50:49 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 51796 invoked by uid 500); 2 Dec 2001 10:50:49 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 51784 invoked by uid 500); 2 Dec 2001 10:50:48 -0000 Delivered-To: millerrobert@example.com Date: 2 Dec 2001 10:33:02 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/modules/filters mod_include.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N brianp 01/12/02 02:33:01 Modified: modules/filters mod_include.c Log: Exclude the terminating null byte from the length of strings passed to apr_hash_get/apr_hash_set (this matches the convention used throughout the rest of the httpd, and it saves a small amount of processing) Revision Changes Path 1.161 +2 -2 httpd-2.0/modules/filters/mod_include.c Index: mod_include.c =================================================================== RCS file: /home/cvs/httpd-2.0/modules/filters/mod_include.c,v retrieving revision 1.160 retrieving revision 1.161 diff -u -r1.160 -r1.161 --- mod_include.c 2001/12/01 05:38:23 1.160 +++ mod_include.c 2001/12/02 10:33:01 1.161 @@ -2859,7 +2859,7 @@ handle_func = (include_handler_fn_t *)apr_hash_get(include_hash, ctx->combined_tag, - ctx->directive_length+1); + ctx->directive_length); if (handle_func != NULL) { rv = (*handle_func)(ctx, bb, r, f, dptr, &content_head); if ((rv != 0) && (rv != 1)) { @@ -3116,7 +3116,7 @@ static void ap_register_include_handler(char *tag, include_handler_fn_t *func) { - apr_hash_set(include_hash, tag, strlen(tag) + 1, (const void *)func); + apr_hash_set(include_hash, tag, strlen(tag), (const void *)func); } static int include_post_config(apr_pool_t *p, apr_pool_t *plog, From millerrobert@example.com Sun Dec 02 19:02:08 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 78260 invoked by uid 500); 2 Dec 2001 19:02:08 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 78230 invoked by uid 500); 2 Dec 2001 19:02:08 -0000 Delivered-To: millerrobert@example.com Date: 2 Dec 2001 18:44:06 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/modules/filters mod_include.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N brianp 01/12/02 10:44:06 Modified: modules/filters mod_include.c Log: Added faster logic for decodehtml to handle the special case where the string being decoded doesn't have any ampersands in it (e.g., because it's the value for an 'include virtual=...') Revision Changes Path 1.162 +11 -2 httpd-2.0/modules/filters/mod_include.c Index: mod_include.c =================================================================== RCS file: /home/cvs/httpd-2.0/modules/filters/mod_include.c,v retrieving revision 1.161 retrieving revision 1.162 diff -u -r1.161 -r1.162 --- mod_include.c 2001/12/02 10:33:01 1.161 +++ mod_include.c 2001/12/02 18:44:06 1.162 @@ -688,7 +688,7 @@ static void decodehtml(char *s) { int val, i, j; - char *p = s; + char *p; const char *ents; static const char * const entlist[MAXENTLEN + 1] = { @@ -708,7 +708,16 @@ otilde\365oslash\370ugrave\371uacute\372yacute\375" /* 6 */ }; - for (; *s != '\0'; s++, p++) { + /* Do a fast scan through the string until we find anything + * that needs more complicated handling + */ + for (; *s != '&'; s++) { + if (*s == '\0') { + return; + } + } + + for (p = s; *s != '\0'; s++, p++) { if (*s != '&') { *p = *s; continue; From millerrobert@example.com Sun Dec 02 19:34:03 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 86490 invoked by uid 500); 2 Dec 2001 19:34:03 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 86479 invoked by uid 500); 2 Dec 2001 19:34:03 -0000 Delivered-To: millerrobert@example.com Date: 2 Dec 2001 19:16:02 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/modules/filters mod_include.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N brianp 01/12/02 11:16:02 Modified: modules/filters mod_include.c Log: Added code to ap_ssi_get_tag_and_value() to avoid converting SSI tags to lowercase when they're already lowercase (in my experience, this special case happens often enough to be worth optimizing) Revision Changes Path 1.163 +5 -1 httpd-2.0/modules/filters/mod_include.c Index: mod_include.c =================================================================== RCS file: /home/cvs/httpd-2.0/modules/filters/mod_include.c,v retrieving revision 1.162 retrieving revision 1.163 diff -u -r1.162 -r1.163 --- mod_include.c 2001/12/02 18:44:06 1.162 +++ mod_include.c 2001/12/02 19:16:01 1.163 @@ -794,7 +794,11 @@ SKIP_TAG_WHITESPACE(c); *tag = c; /* First non-whitespace character (could be NULL). */ - while ((*c != '\0') && (*c != '=') && (!apr_isspace(*c))) { + while (apr_islower(*c)) { + c++; /* Optimization for the common case where the tag */ + } /* is already lowercase */ + + while ((*c != '=') && (!apr_isspace(*c)) && (*c != '\0')) { *c = apr_tolower(*c); /* find end of tag, lowercasing as we go... */ c++; } From millerrobert@example.com Sun Dec 02 19:38:12 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 87267 invoked by uid 500); 2 Dec 2001 19:38:12 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 87248 invoked by uid 500); 2 Dec 2001 19:38:12 -0000 Delivered-To: millerrobert@example.com Delivered-To: millerrobert@example.com Date: 2 Dec 2001 19:20:07 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-docs-1.3/htdocs/manual sitemap.html index.html.en X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N slive 01/12/02 11:20:07 Modified: htdocs/manual index.html.en Added: htdocs/manual sitemap.html Log: Add a sitemap. The goals here: 1. Include all documentation that MAY be still relevant. If it was clearly obsolete, I didn't include it. If it was probably obsolete, I put it in a special section at the bottom. 2. Put it in the order you would want it if you were to read the documentation from top to bottom (Ouch!). I did this relatively quickly, so I'm sure the ordering could be improved. Go to it! Revision Changes Path 1.54 +8 -8 httpd-docs-1.3/htdocs/manual/index.html.en Index: index.html.en =================================================================== RCS file: /home/cvs/httpd-docs-1.3/htdocs/manual/index.html.en,v retrieving revision 1.53 retrieving revision 1.54 diff -u -d -b -u -r1.53 -r1.54 --- index.html.en 2001/11/28 02:59:03 1.53 +++ index.html.en 2001/12/02 19:20:07 1.54 @@ -28,6 +28,9 @@ href="misc/FAQ.html"><strong>FAQ</strong></a> </td> <td align="center" bgcolor="#bebebe"><a + href="sitemap.html"><strong>SiteMap</strong></a></td> + + <td align="center" bgcolor="#bebebe"><a href="mod/directives.html"><strong>Directives</strong></a> </td> @@ -70,14 +73,6 @@ </td> </tr> </table> - <!-- - <table cellspacing="0" cellpadding="0" border="0" width="600"> - <tr> - <td align="center"><hr size="1" noshade width="100%"> - </td> - </tr> - </table> - --> <table cellspacing="0" cellpadding="0" border="0" width="600"> @@ -287,6 +282,11 @@ <tr> <td><a href="misc/FAQ.html">Frequently Asked Questions</a> </td> + </tr> + + <tr> + <td><a href="sitemap.html">SiteMap</a> + </td> </tr> <tr> 1.1 httpd-docs-1.3/htdocs/manual/sitemap.html Index: sitemap.html =================================================================== <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Site Map</title> </head> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#000080" alink="#FF0000"> <!--#include virtual="header.html" --> <h1 align="CENTER">Site Map</h1> <ul> <li><a href="index.html">Apache HTTP Server Version 1.3 Documentation</a> <ul> <li>Release Notes <ul> <li><a href="upgrading_to_1_3.html">Upgrading to 1.3 from 1.2</a></li> <li><a href="new_features_1_3.html">New features with Apache 1.3</a></li> </ul></li> <li>Using the Apache HTTP Server <ul> <li><a href="install.html">Compiling and Installing Apache</a></li> <li><a href="invoking.html">Starting Apache</a></li> <li><a href="stopping.html">Stopping and Restarting Apache</a></li> <li><a href="configuring.html">Configuration Files</a></li> <li><a href="sections.html">How Directory, Location and Files sections work</a></li> <li><a href="server-wide.html">Server-Wide Configuration</a></li> <li><a href="logs.html">Log Files</a></li> <li><a href="urlmapping.html">Mapping URLs to Filesystem Locations</a></li> <li><a href="misc/security_tips.html">Security Tips</a></li> <li><a href="dso.html">Dynamic Shared Object (DSO) support</a></li> <li><a href="content-negotiation.html">Apache Content Negotiation</a></li> <li><a href="custom-error.html">Custom error responses</a></li> <li><a href="bind.html">Setting which addresses and ports Apache uses</a></li> <li><a href="env.html">Environment Variables in Apache</a></li> <li><a href="handler.html">Apache's Handler Use</a></li> <li><a href="suexec.html">suEXEC Support</a></li> <li><a href="misc/perf-tuning.html">Performance Hints</a></li> <li><a href="misc/rewriteguide.html">URL Rewriting Guide</a></li> </ul></li> <li><a href="vhosts/index.html">Apache Virtual Host documentation</a> <ul> <li><a href="vhosts/name-based.html">Name-based Virtual Hosts</a></li> <li><a href="vhosts/ip-based.html">IP-based Virtual Host Support</a></li> <li><a href="vhosts/mass.html">Dynamically configured mass virtual hosting</a></li> <li><a href="vhosts/examples.html">VirtualHost Examples</a></li> <li><a href="vhosts/details.html">An In-Depth Discussion of Virtual Host Matching</a></li> <li><a href="vhosts/fd-limits.html">File Descriptor Limits with Virtual Hosts</a></li> <li><a href="dns-caveats.html">Issues Regarding DNS and Apache</a></li> </ul></li> <li><a href="misc/FAQ.html">Apache Server Frequently Asked Questions</a></li> <li>Guides, Tutorials, and HowTos <ul> <li><a href="howto/auth.html">Authentication, Authorization, and Access Control</a></li> <li><a href="howto/cgi.html">Apache Tutorial: Dynamic Content with CGI</a></li> <li><a href="howto/ssi.html">Apache Tutorial: Introduction to Server Side Includes</a></li> <li><a href="misc/howto.html">HOWTO documentation</a></li> <li><a href="misc/tutorials.html">Apache Tutorials</a></li> </ul></li> <li>Platform-specific Notes <ul> <li><a href="windows.html">Using Apache with Microsoft Windows</a></li> <li><a href="win_compiling.html">Compiling Apache for Microsoft Windows</a></li> <li><a href="win_service.html">Running Apache for Windows as a Service</a></li> <li><a href="cygwin.html">Using Apache with Cygwin</a></li> <li><a href="ebcdic.html">The Apache EBCDIC Port</a></li> <li><a href="readme-tpf.html">The Apache TPF Port</a></li> <li><a href="install-tpf.html">Installing Apache on TPF</a></li> <li><a href="mpeix.html">Using Apache with HP MPE/iX</a></li> <li><a href="netware.html">Using Apache with Novell NetWare</a></li> <li><a href="unixware.html">Compiling Apache under UnixWare</a></li> <li><a href="misc/perf-bsd44.html">Running a High-Performance Web Server for BSD</a></li> <li><a href="misc/perf-dec.html">Performance Tuning Tips for Digital Unix</a></li> <li><a href="misc/perf-hp.html">Running a High-Performance Web Server on HPUX</a></li> <li><a href="misc/perf.html">Hints on Running a High-Performance Web Server</a></li> </ul></li> <li><a href="programs/index.html">Apache HTTP Server and Supporting Programs</a> <ul> <li><a href="programs/httpd.html">Manual Page: httpd - Apache HTTP Server</a></li> <li><a href="programs/apxs.html">Manual Page: apxs - Apache HTTP Server</a></li> <li><a href="programs/ab.html">Manual Page: ab - Apache HTTP Server</a></li> <li><a href="programs/apachectl.html">Manual Page: apachectl - Apache HTTP Server</a></li> <li><a href="programs/dbmmanage.html">Manual Page: dbmmanage - Apache HTTP Server</a></li> <li><a href="programs/htdigest.html">Manual Page: htdigest - Apache HTTP Server</a></li> <li><a href="programs/htpasswd.html">Manual Page: htpasswd - Apache HTTP Server</a></li> <li><a href="programs/logresolve.html">Manual Page: logresolve - Apache HTTP Server</a></li> <li><a href="programs/rotatelogs.html">Manual Page: rotatelogs - Apache HTTP Server</a></li> <li><a href="programs/suexec.html">Manual Page: suexec - Apache HTTP Server</a></li> <li><a href="programs/other.html">Other Programs - Apache HTTP Server</a></li> </ul></li> <li><a href="mod/index.html">Apache modules</a> <ul> <li><a href="mod/index-bytype.html">Apache modules - By Type</a></li> <li><a href="mod/directives.html">Apache directives</a></li> <li><a href="mod/directive-dict.html">Definitions of terms used to describe Apache directives</a></li> <li><a href="mod/module-dict.html">Definitions of terms used to describe Apache modules</a></li> <li><a href="mod/core.html">Apache Core Features</a></li> <li><a href="mod/mod_access.html">Apache module mod_access</a></li> <li><a href="mod/mod_actions.html">Apache module mod_actions</a></li> <li><a href="mod/mod_alias.html">Apache module mod_alias</a></li> <li><a href="mod/mod_asis.html">Apache module mod_asis</a></li> <li><a href="mod/mod_auth.html">Apache module mod_auth</a></li> <li><a href="mod/mod_auth_anon.html">Apache module mod_auth_anon.c</a></li> <li><a href="mod/mod_auth_db.html">Apache module mod_auth_db</a></li> <li><a href="mod/mod_auth_dbm.html">Apache module mod_auth_dbm</a></li> <li><a href="mod/mod_auth_digest.html">Apache module mod_auth_digest</a></li> <li><a href="mod/mod_autoindex.html">Apache module mod_autoindex</a></li> <li><a href="mod/mod_cern_meta.html">Apache module mod_cern_meta</a></li> <li><a href="mod/mod_cgi.html">Apache module mod_cgi</a></li> <li><a href="mod/mod_digest.html">Apache module mod_digest</a></li> <li><a href="mod/mod_dir.html">Apache module mod_dir</a></li> <li><a href="mod/mod_env.html">Apache module mod_env</a></li> <li><a href="mod/mod_example.html">Apache module mod_example</a></li> <li><a href="mod/mod_expires.html">Apache module mod_expires</a></li> <li><a href="mod/mod_headers.html">Apache module mod_headers</a></li> <li><a href="mod/mod_imap.html">Apache module mod_imap</a></li> <li><a href="mod/mod_include.html">Apache module mod_include</a></li> <li><a href="mod/mod_info.html">Apache module mod_info</a></li> <li><a href="mod/mod_isapi.html">Apache module mod_isapi</a></li> <li><a href="mod/mod_log_agent.html">Apache module mod_log_agent</a></li> <li><a href="mod/mod_log_config.html">Apache module mod_log_config</a></li> <li><a href="mod/mod_log_referer.html">Apache module mod_log_referer</a></li> <li><a href="mod/mod_mime.html">Apache module mod_mime</a></li> <li><a href="mod/mod_mime_magic.html">Apache module mod_mime_magic</a></li> <li><a href="mod/mod_mmap_static.html">Apache module mod_mmap_static</a></li> <li><a href="mod/mod_negotiation.html">Apache module mod_negotiation</a></li> <li><a href="mod/mod_proxy.html">Apache module mod_proxy</a></li> <li><a href="mod/mod_rewrite.html">Apache module mod_rewrite</a></li> <li><a href="mod/mod_setenvif.html">Apache module mod_setenvif</a></li> <li><a href="mod/mod_so.html">Apache module mod_so</a></li> <li><a href="mod/mod_speling.html">Apache module mod_speling</a></li> <li><a href="mod/mod_status.html">Apache module mod_status</a></li> <li><a href="mod/mod_unique_id.html">Apache module mod_unique_id</a></li> <li><a href="mod/mod_userdir.html">Apache module mod_userdir</a></li> <li><a href="mod/mod_usertrack.html">Apache module mod_usertrack</a></li> <li><a href="mod/mod_vhost_alias.html">Apache module mod_vhost_alias</a></li> </ul></li> <li><a href="misc/API.html">Apache API notes</a></li> <li><a href="misc/index.html">Older Documentation</a> <ul> <li><a href="cgi_path.html">PATH_INFO Changes in the CGI Environment</a></li> <li><a href="keepalive.html">Apache Keep-Alive Support</a></li> <li><a href="multilogs.html">Apache Multiple Log Files</a></li> <li><a href="process-model.html">Server Pool Management</a></li> <li><a href="sourcereorg.html">Source Re-organisation</a></li> <li><a href="misc/compat_notes.html">Notes about Compatibility with NCSA's Server</a></li> <li><a href="misc/custom_errordocs.html">International Customized Server Error Messages</a></li> <li><a href="misc/descriptors.html">Descriptors and Apache</a></li> <li><a href="misc/fin_wait_2.html">Connections in FIN_WAIT_2 and Apache</a></li> <li><a href="misc/known_client_problems.html">Known Client Problems</a></li> <li><a href="misc/nopgp.html">Why We Took PEM Out of Apache</a></li> <li><a href="misc/vif-info.html">Configuring Multiple IP Addresses</a></li> <li><a href="misc/windoz_keepalive.html">MS Windows Netscape 3.0b4 KeepAlive problem solved</a></li> <li><a href="misc/client_block_api.html">Reading Client Input in Apache 1.2</a></li> </ul></li> </ul></li> </ul> <!--#include virtual="footer.html" --> </body> </html> From millerrobert@example.com Sun Dec 02 20:03:06 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 96038 invoked by uid 500); 2 Dec 2001 20:03:06 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 96027 invoked by uid 500); 2 Dec 2001 20:03:06 -0000 Delivered-To: millerrobert@example.com Date: 2 Dec 2001 19:45:00 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-dist .htaccess X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N slive 01/12/02 11:45:00 Modified: . .htaccess Log: Describe the pdf documentation Revision Changes Path 1.65 +1 -0 httpd-dist/.htaccess Index: .htaccess =================================================================== RCS file: /home/cvs/httpd-dist/.htaccess,v retrieving revision 1.64 retrieving revision 1.65 diff -u -d -b -u -r1.64 -r1.65 --- .htaccess 2001/11/22 01:24:57 1.64 +++ .htaccess 2001/12/02 19:45:00 1.65 @@ -25,6 +25,7 @@ AddDescription "1.3.22 compressed source" apache_1.3.19.tar.Z AddDescription "1.3.22 gzipped source" apache_1.3.19.tar.gz AddDescription "1.3.22 pkzipped source" apache_1.3.19.zip +AddDescription "1.3.22 PDF documentation pkzipped" apache-1.3.22-docs-pdf.zip AddDescription "2.0.28 beta compressed source" httpd-2_0_28-beta.tar.Z AddDescription "2.0.28 beta gzipped source" httpd-2_0_28-beta.tar.gz AddDescription "2.0.28 beta Win32 zipped source" httpd-2_0_28-beta-win32.zip From millerrobert@example.com Sun Dec 02 20:56:35 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 8381 invoked by uid 500); 2 Dec 2001 20:56:34 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 8370 invoked by uid 500); 2 Dec 2001 20:56:34 -0000 Delivered-To: millerrobert@example.com Date: 2 Dec 2001 20:38:33 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/server util.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N brianp 01/12/02 12:38:33 Modified: server util.c Log: Optimization: replace apr_pstrndup() with apr_pstrmemdup() in ap_escape_html() to eliminate a redundant scan through the string. Revision Changes Path 1.117 +1 -1 httpd-2.0/server/util.c Index: util.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/util.c,v retrieving revision 1.116 retrieving revision 1.117 diff -u -r1.116 -r1.117 --- util.c 2001/12/02 05:46:36 1.116 +++ util.c 2001/12/02 20:38:33 1.117 @@ -1649,7 +1649,7 @@ j += 4; if (j == 0) - return apr_pstrndup(p, s, i); + return apr_pstrmemdup(p, s, i); x = apr_palloc(p, i + j + 1); for (i = 0, j = 0; s[i] != '\0'; i++, j++) From millerrobert@example.com Sun Dec 02 23:29:15 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 48579 invoked by uid 500); 2 Dec 2001 23:29:14 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 48568 invoked by uid 500); 2 Dec 2001 23:29:14 -0000 Delivered-To: millerrobert@example.com Date: 2 Dec 2001 23:11:12 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/server protocol.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N brianp 01/12/02 15:11:12 Modified: server protocol.c Log: include/http_protocol.h Revision Changes Path 1.57 +31 -21 httpd-2.0/server/protocol.c Index: protocol.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/protocol.c,v retrieving revision 1.56 retrieving revision 1.57 diff -u -r1.56 -r1.57 --- protocol.c 2001/12/02 09:51:19 1.56 +++ protocol.c 2001/12/02 23:11:12 1.57 @@ -198,11 +198,10 @@ * If no LF is detected on the last line due to a dropped connection * or a full buffer, that's considered an error. */ -AP_DECLARE(int) ap_getline(char *s, int n, request_rec *r, int fold) +AP_DECLARE(int) ap_rgetline(char **s, int n, request_rec *r, int fold) { - char *pos = s; + char *pos; char *last_char; - char *beyond_buff = s + n; const char *temp; int retval; int total = 0; @@ -258,8 +257,12 @@ AP_DEBUG_ASSERT(!APR_BRIGADE_EMPTY(req_cfg->bb)); break; } - last_char = pos + length - 1; - if (last_char < beyond_buff) { + if (length - 1 < n) { + if (!*s) { + *s = apr_palloc(r->pool, length + 2); /* +2 for LF, null */ + } + pos = *s; + last_char = pos + length - 1; memcpy(pos, temp, length); apr_bucket_delete(e); } @@ -279,7 +282,7 @@ if (*pos == APR_ASCII_LF) { /* Did we get a full line of input? */ - if (pos > s && *(pos - 1) == APR_ASCII_CR) { + if (pos > *s && *(pos - 1) == APR_ASCII_CR) { --pos; /* zap optional CR before LF */ } @@ -289,12 +292,12 @@ * it much easier to check field values for exact matches, and * saves memory as well. Terminate string at end of line. */ - while (pos > (s + 1) && + while (pos > ((*s) + 1) && (*(pos - 1) == APR_ASCII_BLANK || *(pos - 1) == APR_ASCII_TAB)) { --pos; /* trim extra trailing spaces or tabs */ } *pos = '\0'; /* zap end of string */ - total = pos - s; /* update total string length */ + total = pos - *s; /* update total string length */ /* look ahead another line if line folding is desired * and this line isn't empty @@ -312,14 +315,20 @@ * bump past last character read, * and set total in case we bail before finding a LF */ - total = ++pos - s; + total = ++pos - *s; looking_ahead = 0; /* only appropriate right after LF */ } } - ap_xlate_proto_from_ascii(s, total); + ap_xlate_proto_from_ascii(*s, total); return total; } +AP_DECLARE(int) ap_getline(char *s, int n, request_rec *r, int fold) +{ + char *tmp_s = s; + return ap_rgetline(&tmp_s, n, r, fold); +} + /* parse_uri: break apart the uri * Side Effects: * - sets r->args to rest after '?' (or NULL if no '?') @@ -375,8 +384,7 @@ static int read_request_line(request_rec *r) { - char l[DEFAULT_LIMIT_REQUEST_LINE + 2]; /* getline's two extra for \n\0 */ - const char *ll = l; + const char *ll; const char *uri; const char *pro; @@ -401,7 +409,8 @@ * have to block during a read. */ - while ((len = ap_getline(l, sizeof(l), r, 0)) <= 0) { + while ((len = ap_rgetline(&(r->the_request), + DEFAULT_LIMIT_REQUEST_LINE + 2, r, 0)) <= 0) { if (len < 0) { /* includes EOF */ /* this is a hack to make sure that request time is set, * it's not perfect, but it's better than nothing @@ -413,7 +422,7 @@ /* we've probably got something to do, ignore graceful restart requests */ r->request_time = apr_time_now(); - r->the_request = apr_pstrdup(r->pool, l); + ll = r->the_request; r->method = ap_getword_white(r->pool, &ll); #if 0 @@ -474,7 +483,7 @@ static void get_mime_headers(request_rec *r) { - char field[DEFAULT_LIMIT_REQUEST_FIELDSIZE + 2]; /* getline's two extra */ + char* field; char *value; char *copy; int len; @@ -488,7 +497,9 @@ * Read header lines until we get the empty separator line, a read error, * the connection closes (EOF), reach the server limit, or we timeout. */ - while ((len = ap_getline(field, sizeof(field), r, 1)) > 0) { + field = NULL; + while ((len = ap_rgetline(&field, DEFAULT_LIMIT_REQUEST_FIELDSIZE + 2, + r, 1)) > 0) { if (r->server->limit_req_fields && (++fields_read > r->server->limit_req_fields)) { @@ -513,17 +524,15 @@ "</pre>\n", NULL)); return; } - copy = apr_palloc(r->pool, len + 1); - memcpy(copy, field, len + 1); - if (!(value = strchr(copy, ':'))) { /* Find the colon separator */ + if (!(value = strchr(field, ':'))) { /* Find the colon separator */ r->status = HTTP_BAD_REQUEST; /* or abort the bad request */ apr_table_setn(r->notes, "error-notes", apr_pstrcat(r->pool, "Request header field is missing " "colon separator.<br />\n" "<pre>\n", - ap_escape_html(r->pool, copy), + ap_escape_html(r->pool, field), "</pre>\n", NULL)); return; } @@ -534,7 +543,8 @@ ++value; /* Skip to start of value */ } - apr_table_addn(tmp_headers, copy, value); + apr_table_addn(tmp_headers, field, value); + field = NULL; /* to cause ap_rgetline to allocate a new one */ } apr_table_overlap(r->headers_in, tmp_headers, APR_OVERLAP_TABLES_MERGE); From millerrobert@example.com Sun Dec 02 23:31:35 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 49517 invoked by uid 500); 2 Dec 2001 23:31:34 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 49506 invoked by uid 500); 2 Dec 2001 23:31:34 -0000 Delivered-To: millerrobert@example.com Date: 2 Dec 2001 23:13:32 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/include http_protocol.h X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N brianp 01/12/02 15:13:32 Modified: include http_protocol.h Log: Added a version of ap_getline() that allocs a buffer from the request's pool, rather than copying into a caller-supplied buffer. (This lets us eliminate one copy operation on the request headers.) Revision Changes Path 1.67 +26 -0 httpd-2.0/include/http_protocol.h Index: http_protocol.h =================================================================== RCS file: /home/cvs/httpd-2.0/include/http_protocol.h,v retrieving revision 1.66 retrieving revision 1.67 diff -u -r1.66 -r1.67 --- http_protocol.h 2001/11/07 05:41:22 1.66 +++ http_protocol.h 2001/12/02 23:13:32 1.67 @@ -526,7 +526,33 @@ */ AP_CORE_DECLARE(void) ap_parse_uri(request_rec *r, const char *uri); +/** + * Get the next line of input for the request + * @param s The buffer into which to read the line + * @param n The size of the buffer + * @param r The request + * @param fold Whether to merge continuation lines + * @return The length of the line, if successful + * n, if the line is too big to fit in the buffer + * -1 for miscellaneous errors + * @deffunc int ap_method_number_of(const char *method) + */ AP_DECLARE(int) ap_getline(char *s, int n, request_rec *r, int fold); + +/** + * Get the next line of input for the request + * @param s Pointer to the pointer to the buffer into which the line + * should be read; if *s==NULL, a buffer of the necessary size + * to hold the data will be allocated from the request pool + * @param n The size of the buffer + * @param r The request + * @param fold Whether to merge continuation lines + * @return The length of the line, if successful + * n, if the line is too big to fit in the buffer + * -1 for miscellaneous errors + * @deffunc int ap_method_number_of(const char *method) + */ +AP_DECLARE(int) ap_rgetline(char **s, int n, request_rec *r, int fold); /** * Get the method number associated with the given string, assumed to From millerrobert@example.com Sun Dec 02 23:33:56 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 50141 invoked by uid 500); 2 Dec 2001 23:33:55 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 50130 invoked by uid 500); 2 Dec 2001 23:33:55 -0000 Delivered-To: millerrobert@example.com Date: 2 Dec 2001 23:15:54 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/server protocol.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N brianp 01/12/02 15:15:54 Modified: server protocol.c Log: [No code changes here, just adding the cvs comment that I messed up in the previous commit] Added a version of ap_getline() that allocs a buffer from the request's pool, rather than copying into a caller-supplied buffer. (This lets us eliminate one copy operation on the request headers.) Revision Changes Path 1.58 +0 -0 httpd-2.0/server/protocol.c Index: protocol.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/protocol.c,v retrieving revision 1.57 retrieving revision 1.58 diff -u -r1.57 -r1.58 From millerrobert@example.com Mon Dec 03 01:07:30 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 73478 invoked by uid 500); 3 Dec 2001 01:07:30 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 73467 invoked by uid 500); 3 Dec 2001 01:07:30 -0000 Delivered-To: millerrobert@example.com Date: 3 Dec 2001 00:49:28 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/server util.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N brianp 01/12/02 16:49:28 Modified: server util.c Log: Optimization for ap_getparents: skip past all the leading characters of the path that aren't '.' rather than copying those bytes onto themselves Revision Changes Path 1.118 +7 -4 httpd-2.0/server/util.c Index: util.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/util.c,v retrieving revision 1.117 retrieving revision 1.118 diff -u -r1.117 -r1.118 --- util.c 2001/12/02 20:38:33 1.117 +++ util.c 2001/12/03 00:49:28 1.118 @@ -476,12 +476,15 @@ */ AP_DECLARE(void) ap_getparents(char *name) { - int l, w; + char *next; + int l, w, first_dot; /* Four paseses, as per RFC 1808 */ /* a) remove ./ path segments */ - - for (l = 0, w = 0; name[l] != '\0';) { + for (next = name; *next && (*next != '.'); next++) { + } + l = w = first_dot = next - name; + while (name[l] != '\0') { if (name[l] == '.' && name[l + 1] == '/' && (l == 0 || name[l - 1] == '/')) l += 2; else @@ -496,7 +499,7 @@ name[w] = '\0'; /* c) remove all xx/../ segments. (including leading ../ and /../) */ - l = 0; + l = first_dot; while (name[l] != '\0') { if (name[l] == '.' && name[l + 1] == '.' && name[l + 2] == '/' && From millerrobert@example.com Mon Dec 03 08:52:58 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 4475 invoked by uid 500); 3 Dec 2001 08:52:58 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 4464 invoked by uid 500); 3 Dec 2001 08:52:57 -0000 Delivered-To: millerrobert@example.com Date: 3 Dec 2001 08:34:55 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/server/mpm/perchild perchild.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N jwoolley 01/12/03 00:34:55 Modified: server/mpm/perchild perchild.c Log: Fix a typo (?) One compile error down, several to go. Revision Changes Path 1.87 +1 -1 httpd-2.0/server/mpm/perchild/perchild.c Index: perchild.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/mpm/perchild/perchild.c,v retrieving revision 1.86 retrieving revision 1.87 diff -u -d -u -r1.86 -r1.87 --- perchild.c 2001/11/17 14:02:25 1.86 +++ perchild.c 2001/12/03 08:34:55 1.87 @@ -1092,7 +1092,7 @@ static void server_main_loop(int remaining_children_to_start) { int child_slot; - apr_exit_why exitwhy; + apr_exit_why_e exitwhy; int status; apr_proc_t pid; int i; From millerrobert@example.com Mon Dec 03 08:54:20 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 5059 invoked by uid 500); 3 Dec 2001 08:54:20 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 5048 invoked by uid 500); 3 Dec 2001 08:54:19 -0000 Delivered-To: millerrobert@example.com Date: 3 Dec 2001 08:36:18 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/server/mpm/perchild perchild.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N jwoolley 01/12/03 00:36:18 Modified: server/mpm/perchild perchild.c Log: Fix prototype for post_config hook Revision Changes Path 1.88 +2 -1 httpd-2.0/server/mpm/perchild/perchild.c Index: perchild.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/mpm/perchild/perchild.c,v retrieving revision 1.87 retrieving revision 1.88 diff -u -d -u -r1.87 -r1.88 --- perchild.c 2001/12/03 08:34:55 1.87 +++ perchild.c 2001/12/03 08:36:17 1.88 @@ -1454,7 +1454,7 @@ } -static void perchild_post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) +static int perchild_post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s) { int i; server_rec *sr; @@ -1486,6 +1486,7 @@ child_info_table[i].sd = def_sd[0]; } } + return OK; } static int perchild_post_read(request_rec *r) From millerrobert@example.com Mon Dec 03 12:30:48 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 3542 invoked by uid 500); 3 Dec 2001 12:30:48 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 3531 invoked by uid 500); 3 Dec 2001 12:30:48 -0000 Delivered-To: millerrobert@example.com Date: 3 Dec 2001 12:12:31 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/server protocol.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N trawick 01/12/03 04:12:31 Modified: server protocol.c Log: get rid of an unused variable Revision Changes Path 1.59 +0 -1 httpd-2.0/server/protocol.c Index: protocol.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/protocol.c,v retrieving revision 1.58 retrieving revision 1.59 diff -u -r1.58 -r1.59 --- protocol.c 2001/12/02 23:15:54 1.58 +++ protocol.c 2001/12/03 12:12:31 1.59 @@ -485,7 +485,6 @@ { char* field; char *value; - char *copy; int len; int fields_read = 0; apr_table_t *tmp_headers; From millerrobert@example.com Mon Dec 03 14:46:56 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 72397 invoked by uid 500); 3 Dec 2001 14:46:56 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 72386 invoked by uid 500); 3 Dec 2001 14:46:55 -0000 Delivered-To: millerrobert@example.com Date: 3 Dec 2001 14:28:39 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/server main.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N ben 01/12/03 06:28:39 Modified: server main.c Log: Handle the ? option. Revision Changes Path 1.108 +1 -0 httpd-2.0/server/main.c Index: main.c =================================================================== RCS file: /home/cvs/httpd-2.0/server/main.c,v retrieving revision 1.107 retrieving revision 1.108 diff -u -r1.107 -r1.108 --- main.c 2001/11/29 07:30:49 1.107 +++ main.c 2001/12/03 14:28:39 1.108 @@ -370,6 +370,7 @@ configtestonly = 1; break; case 'h': + case '?': usage(process); } } From millerrobert@example.com Mon Dec 03 16:15:19 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 37779 invoked by uid 500); 3 Dec 2001 16:15:19 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 37768 invoked by uid 500); 3 Dec 2001 16:15:18 -0000 Delivered-To: millerrobert@example.com Date: 3 Dec 2001 15:57:02 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/include ap_mmn.h X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N stoddard 01/12/03 07:57:02 Modified: include ap_mmn.h Log: Change a comment. This change was made to 2.0.29-dev. 2.0.28 had already gone out the door when this change was made. Revision Changes Path 1.22 +1 -1 httpd-2.0/include/ap_mmn.h Index: ap_mmn.h =================================================================== RCS file: /home/cvs/httpd-2.0/include/ap_mmn.h,v retrieving revision 1.21 retrieving revision 1.22 diff -u -r1.21 -r1.22 --- ap_mmn.h 2001/11/27 22:07:09 1.21 +++ ap_mmn.h 2001/12/03 15:57:02 1.22 @@ -80,7 +80,7 @@ * 20010808 (2.0.23-dev) dir d_is_absolute bit introduced, bucket changes, etc * 20010825 (2.0.25-dev) removed d_is_absolute, introduced map_to_storage hook * 20011002 (2.0.26-dev) removed 1.3-depreciated request_rec.content_language - * 20011127 (2.0.28-dev) bump for postconfig hook change, and removal of socket + * 20011127 (2.0.29-dev) bump for postconfig hook change, and removal of socket * from connection record */ From millerrobert@example.com Mon Dec 03 16:19:58 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 40265 invoked by uid 500); 3 Dec 2001 16:19:57 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 40254 invoked by uid 500); 3 Dec 2001 16:19:57 -0000 Delivered-To: millerrobert@example.com Date: 3 Dec 2001 16:01:40 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-dist .htaccess X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N slive 01/12/03 08:01:40 Modified: . .htaccess Log: Move pdf to an extension. Revision Changes Path 1.66 +1 -1 httpd-dist/.htaccess Index: .htaccess =================================================================== RCS file: /home/cvs/httpd-dist/.htaccess,v retrieving revision 1.65 retrieving revision 1.66 diff -u -d -b -u -r1.65 -r1.66 --- .htaccess 2001/12/02 19:45:00 1.65 +++ .htaccess 2001/12/03 16:01:40 1.66 @@ -25,7 +25,7 @@ AddDescription "1.3.22 compressed source" apache_1.3.19.tar.Z AddDescription "1.3.22 gzipped source" apache_1.3.19.tar.gz AddDescription "1.3.22 pkzipped source" apache_1.3.19.zip -AddDescription "1.3.22 PDF documentation pkzipped" apache-1.3.22-docs-pdf.zip +AddDescription "1.3.22 PDF documentation pkzipped" apache-1.3.22-docs.pdf.zip AddDescription "2.0.28 beta compressed source" httpd-2_0_28-beta.tar.Z AddDescription "2.0.28 beta gzipped source" httpd-2_0_28-beta.tar.gz AddDescription "2.0.28 beta Win32 zipped source" httpd-2_0_28-beta-win32.zip From millerrobert@example.com Mon Dec 03 18:18:22 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 20473 invoked by uid 500); 3 Dec 2001 18:18:22 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 20457 invoked by uid 500); 3 Dec 2001 18:18:22 -0000 Delivered-To: millerrobert@example.com Date: 3 Dec 2001 18:00:05 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/build binbuild.sh X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N gregames 01/12/03 10:00:05 Modified: . CHANGES configure.in . configure.in APRVARS.in support apachectl.in build binbuild.sh Log: get binbuild working when apr, apr-util, and expat are built shared in directories that are not well known to the loader. How it works: * libtool figures out the name of this system's library path environment variable (i.e. LD_LIBRARY_PATH, LIBPATH, DYLD_LIBRARY_PATH) at apr configure time (existing code) * save this variable name in SHLIBPATH_VAR in APRVARS * substitute this name when apachectl is created * uncomment the lines containing this variable during binbuild * install_bindist.sh updates the path to lib/ when the binary is installed (existing code) not done yet, but a good idea: * create a file or directory containing all environment variable settings for apachectl. Others env vars need to be tweaked, at least on AIX and OS/390, so keeping them separate should reduce headaches long term. Revision Changes Path 1.465 +3 -0 httpd-2.0/CHANGES Index: CHANGES =================================================================== RCS file: /home/cvs/httpd-2.0/CHANGES,v retrieving revision 1.464 retrieving revision 1.465 diff -u -r1.464 -r1.465 --- CHANGES 2001/12/01 17:42:17 1.464 +++ CHANGES 2001/12/03 18:00:03 1.465 @@ -1,4 +1,7 @@ Changes with Apache 2.0.30-dev + + *) Get binary builds working when libapr and libaprutil are built + shared [Greg Ames] *) Get shared builds of libapr and libaprutil, as well as Apache DSOs, working on AIX. [Aaron Bannert, Dick Dunbar <millerrobert@example.com>, 1.188 +1 -0 httpd-2.0/configure.in Index: configure.in =================================================================== RCS file: /home/cvs/httpd-2.0/configure.in,v retrieving revision 1.187 retrieving revision 1.188 diff -u -r1.187 -r1.188 --- configure.in 2001/12/01 17:42:18 1.187 +++ configure.in 2001/12/03 18:00:04 1.188 @@ -261,6 +261,7 @@ APACHE_SUBST(OS) APACHE_SUBST(OS_DIR) APACHE_SUBST(BUILTIN_LIBS) +APACHE_SUBST(SHLIBPATH_VAR) PRE_SHARED_CMDS='echo ""' POST_SHARED_CMDS='echo ""' 1.381 +1 -0 apr/configure.in Index: configure.in =================================================================== RCS file: /home/cvs/apr/configure.in,v retrieving revision 1.380 retrieving revision 1.381 diff -u -r1.380 -r1.381 --- configure.in 2001/11/29 02:45:59 1.380 +++ configure.in 2001/12/03 18:00:04 1.381 @@ -1364,6 +1364,7 @@ AC_SUBST(DEFAULT_OSDIR) AC_SUBST(EXEEXT) AC_SUBST(LIBTOOL_LIBS) +AC_SUBST(shlibpath_var) echo "${nl}Construct Makefiles and header files." MAKEFILE1="Makefile strings/Makefile passwd/Makefile tables/Makefile build/Makefile" 1.11 +1 -0 apr/APRVARS.in Index: APRVARS.in =================================================================== RCS file: /home/cvs/apr/APRVARS.in,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- APRVARS.in 2001/08/01 20:37:03 1.10 +++ APRVARS.in 2001/12/03 18:00:04 1.11 @@ -7,6 +7,7 @@ EXTRA_LIBS="@EXTRA_LIBS@" EXTRA_INCLUDES="@EXTRA_INCLUDES@" LIBTOOL_LIBS="@LIBTOOL_LIBS@" +SHLIBPATH_VAR="@shlibpath_var@" APR_SOURCE_DIR="@abs_srcdir@" APR_SO_EXT="@so_ext@" APR_LIB_TARGET="@export_lib_target@" 1.8 +5 -0 httpd-2.0/support/apachectl.in Index: apachectl.in =================================================================== RCS file: /home/cvs/httpd-2.0/support/apachectl.in,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- apachectl.in 2001/11/07 19:19:05 1.7 +++ apachectl.in 2001/12/03 18:00:04 1.8 @@ -30,6 +30,11 @@ # the path to your httpd binary, including options if necessary HTTPD='@prefix@/bin/@progname@' # +# the following lines are automatically uncommented for +# binary builds +#binbuild @SHLIBPATH_VAR@='@prefix@/lib/:$@SHLIBPATH_VAR@' +#binbuild export @SHLIBPATH_VAR@ +# # a command that outputs a formatted text version of the HTML at the # url given on the command line. Designed for lynx, however other # programs may work. 1.30 +1 -0 httpd-2.0/build/binbuild.sh Index: binbuild.sh =================================================================== RCS file: /home/cvs/httpd-2.0/build/binbuild.sh,v retrieving revision 1.29 retrieving revision 1.30 diff -u -r1.29 -r1.30 --- binbuild.sh 2001/11/29 14:18:06 1.29 +++ binbuild.sh 2001/12/03 18:00:04 1.30 @@ -137,6 +137,7 @@ cp bindist/conf/httpd.conf bindist/conf/httpd-std.conf sed -e "s%$BUILD_DIR%$DEFAULT_DIR%" \ + -e "s%^#binbuild %%" \ bindist/bin/apachectl > bindist/bin/apachectl.tmp mv bindist/bin/apachectl.tmp bindist/bin/apachectl From millerrobert@example.com Mon Dec 03 18:37:56 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 33020 invoked by uid 500); 3 Dec 2001 18:37:56 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 33009 invoked by uid 500); 3 Dec 2001 18:37:56 -0000 Delivered-To: millerrobert@example.com Date: 3 Dec 2001 18:19:39 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/docs/manual sitemap.html index.html.en X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N slive 01/12/03 10:19:39 Modified: docs/manual index.html.en Added: docs/manual sitemap.html Log: Add a sitemap. Revision Changes Path 1.30 +9 -0 httpd-2.0/docs/manual/index.html.en Index: index.html.en =================================================================== RCS file: /home/cvs/httpd-2.0/docs/manual/index.html.en,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -b -u -r1.29 -r1.30 --- index.html.en 2001/11/14 23:30:07 1.29 +++ index.html.en 2001/12/03 18:19:39 1.30 @@ -28,6 +28,10 @@ href="faq/"><strong>FAQ</strong></a> </td> <td align="center" bgcolor="#bebebe"><a + href="sitemap.html"><strong>SiteMap</strong></a> + </td> + + <td align="center" bgcolor="#bebebe"><a href="mod/directives.html"><strong>Directives</strong></a> </td> @@ -273,6 +277,11 @@ <tr> <td><a href="faq/">Frequently Asked Questions</a> + </td> + </tr> + + <tr> + <td><a href="sitemap.html">SiteMap</a> </td> </tr> 1.1 httpd-2.0/docs/manual/sitemap.html Index: sitemap.html =================================================================== <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Site Map - Apache HTTP Server 2.0</title> </head> <!-- Background white, links blue (unvisited), navy (visited), red (active) --> <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#000080" alink="#FF0000"> <!--#include virtual="header.html" --> <h1 align="center">Site Map</h1> <ul> <li><a href="index.html">Apache HTTP Server Version 2.0 Documentation</a> <ul> <li>Release Notes <ul> <li><a href="upgrading.html">Upgrading to 2.0 from 1.3</a></li> <li><a href="new_features_2_0.html">New features with Apache 2.0</a></li> </ul></li> <li>Using the Apache HTTP Server <ul> <li><a href="install.html">Compiling and Installing Apache</a></li> <li><a href="invoking.html">Starting Apache</a></li> <li><a href="stopping.html">Stopping and Restarting the Server</a></li> <li><a href="configuring.html">Configuration Files</a></li> <li><a href="sections.html">How Directory, Location and Files sections work</a></li> <li><a href="server-wide.html">Server-Wide Configuration</a></li> <li><a href="logs.html">Log Files</a></li> <li><a href="urlmapping.html">Mapping URLs to Filesystem Locations</a></li> <li><a href="misc/security_tips.html">Security Tips</a></li> <li><a href="dso.html">Dynamic Shared Object (DSO) support</a></li> <li><a href="content-negotiation.html">Content Negotiation</a></li> <li><a href="custom-error.html">Custom error responses</a></li> <li><a href="bind.html">Setting which addresses and ports Apache uses</a></li> <li><a href="mpm.html">Multi-Processing Modules (MPMs)</a></li> <li><a href="env.html">Environment Variables in Apache</a></li> <li><a href="handler.html">Apache's Handler Use</a></li> <li><a href="filter.html">Filters</a></li> <li><a href="suexec.html">suEXEC Support</a></li> <li><a href="misc/perf-tuning.html">Performance Hintes</a></li> <li><a href="misc/rewriteguide.html">URL Rewriting Guide</a></li> </ul></li> <li><a href="vhosts/index.html">Apache Virtual Host documentation</a> <ul> <li><a href="vhosts/name-based.html">Name-based Virtual Hosts</a></li> <li><a href="vhosts/ip-based.html">IP-based Virtual Host Support</a></li> <li><a href="vhosts/mass.html">Dynamically configured mass virtual hosting</a></li> <li><a href="vhosts/examples.html">VirtualHost Examples</a></li> <li><a href="vhosts/details.html">An In-Depth Discussion of Virtual Host Matching</a></li> <li><a href="vhosts/fd-limits.html">File descriptor limitations</a></li> <li><a href="dns-caveats.html">Issues Regarding DNS and Apache</a></li> </ul></li> <li><a href="faq/index.html">Apache Server Frequently Asked Questions</a> <ul> <li><a href="faq/support.html">Support</a></li> </ul></li> <li><a href="ssl/index.html">Apache SSL/TLS Encryption</a> <ul> <li><a href="ssl/ssl_intro.html">SSL/TLS Encryption: An Introduction</a></li> <li><a href="ssl/ssl_compat.html">SSL/TLS Encryption: Compatibility</a></li> <li><a href="ssl/ssl_howto.html">SSL/TLS Encryption: How-To</a></li> <li><a href="ssl/ssl_faq.html">SSL/TLS Encryption: FAQ</a></li> <li><a href="ssl/ssl_glossary.html">SSL/TLS Encryption: Glossary</a></li> </ul></li> <li>Guides, Tutorials, and HowTos <ul> <li><a href="howto/auth.html">Authentication</a></li> <li><a href="howto/cgi.html">Apache Tutorial: Dynamic Content with CGI</a></li> <li><a href="howto/ssi.html">Apache Tutorial: Introduction to Server Side Includes</a></li> <li><a href="misc/tutorials.html">Apache Tutorials</a></li> </ul></li> <li>Platfrom-specific Notes <ul> <li><a href="platform/windows.html">Using Apache with Microsoft Windows</a></li> <li><a href="platform/win_compiling.html">Compiling Apache for Microsoft Windows</a></li> <li><a href="platform/win_service.html">Running Apache for Windows as a Service</a></li> <li><a href="platform/netware.html">Using Apache with Novell NetWare</a></li> <li><a href="platform/perf-hp.html">Running a High-Performance Web Server on HPUX</a></li> <li><a href="ebcdic.html">The Apache EBCDIC Port</a></li> </ul></li> <li><a href="programs/index.html">Apache HTTP Server and Supporting Programs</a> <ul> <li><a href="programs/httpd.html">Manual Page: httpd</a></li> <li><a href="programs/ab.html">Manual Page: ab</a></li> <li><a href="programs/apachectl.html">Manual Page: apachectl</a></li> <li><a href="programs/apxs.html">Manual Page: apxs</a></li> <li><a href="programs/dbmmanage.html">Manual Page: dbmmanage</a></li> <li><a href="programs/htdigest.html">Manual Page: htdigest</a></li> <li><a href="programs/htpasswd.html">Manual Page: htpasswd</a></li> <li><a href="programs/logresolve.html">Manual Page: logresolve</a></li> <li><a href="programs/rotatelogs.html">Manual Page: rotatelogs</a></li> <li><a href="programs/suexec.html">Manual Page: suexec</a></li> <li><a href="programs/other.html">Other Programs</a></li> </ul></li> <li><a href="misc/index.html">Apache Miscellaneous Documentation</a> <ul> <li><a href="misc/custom_errordocs.html">International Customized Server Error Messages</a></li> <li><a href="misc/fin_wait_2.html">Connections in FIN_WAIT_2 and Apache</a></li> <li><a href="misc/known_client_problems.html">Known Client Problems</a></li> <li><a href="misc/descriptors.html">Descriptors and Apache</a></li> <li><a href="cgi_path.html">PATH_INFO Changes in the CGI Environment</a></li> </ul></li> <li><a href="mod/index.html">Apache modules</a> <ul> <li><a href="mod/index-bytype.html">Apache modules - By Type</a></li> <li><a href="mod/directives.html">Apache directives</a></li> <li><a href="mod/module-dict.html">Definitions of terms used to describe Apache modules</a></li> <li><a href="mod/directive-dict.html">Definitions of terms used to describe Apache directives</a></li> <li><a href="mod/core.html">Apache Core Features</a></li> <li><a href="mod/mpm_common.html">Apache MPM Common Directives</a></li> <li><a href="mod/mpm_netware.html">Apache MPM netware</a></li> <li><a href="mod/mpm_winnt.html">Apache MPM winnt</a></li> <li><a href="mod/perchild.html">Apache MPM perchild</a></li> <li><a href="mod/prefork.html">Apache MPM prefork</a></li> <li><a href="mod/threaded.html">Apache MPM threaded</a></li> <li><a href="mod/mod_access.html">Apache module mod_access</a></li> <li><a href="mod/mod_actions.html">Apache module mod_actions</a></li> <li><a href="mod/mod_alias.html">Apache module mod_alias</a></li> <li><a href="mod/mod_asis.html">Apache module mod_asis</a></li> <li><a href="mod/mod_auth.html">Apache module mod_auth</a></li> <li><a href="mod/mod_auth_anon.html">Apache module mod_auth_anon.c</a></li> <li><a href="mod/mod_auth_db.html">Apache module mod_auth_db</a></li> <li><a href="mod/mod_auth_dbm.html">Apache module mod_auth_dbm</a></li> <li><a href="mod/mod_auth_digest.html">Apache module mod_auth_digest</a></li> <li><a href="mod/mod_auth_ldap.html">Apache module mod_ldap</a></li> <li><a href="mod/mod_autoindex.html">Apache module mod_autoindex</a></li> <li><a href="mod/mod_cern_meta.html">Apache module mod_cern_meta</a></li> <li><a href="mod/mod_cgi.html">Apache module mod_cgi</a></li> <li><a href="mod/mod_cgid.html">Apache module mod_cgi</a></li> <li><a href="mod/mod_charset_lite.html">Apache module mod_charset_lite</a></li> <li><a href="mod/mod_dav.html">Apache module mod_dav</a></li> <li><a href="mod/mod_dir.html">Apache module mod_dir</a></li> <li><a href="mod/mod_env.html">Apache module mod_env</a></li> <li><a href="mod/mod_example.html">Apache module mod_example</a></li> <li><a href="mod/mod_expires.html">Apache module mod_expires</a></li> <li><a href="mod/mod_ext_filter.html">Apache module mod_ext_filter</a></li> <li><a href="mod/mod_file_cache.html">Apache module mod_file_cache</a></li> <li><a href="mod/mod_headers.html">Apache module mod_headers</a></li> <li><a href="mod/mod_imap.html">Apache module mod_imap</a></li> <li><a href="mod/mod_include.html">Apache module mod_include</a></li> <li><a href="mod/mod_info.html">Apache module mod_info</a></li> <li><a href="mod/mod_isapi.html">Apache module mod_isapi</a></li> <li><a href="mod/mod_ldap.html">Apache module mod_ldap</a></li> <li><a href="mod/mod_log_config.html">Apache module mod_log_config</a></li> <li><a href="mod/mod_mime.html">Apache module mod_mime</a></li> <li><a href="mod/mod_mime_magic.html">Apache module mod_mime_magic</a></li> <li><a href="mod/mod_mmap_static.html">Apache module mod_mmap_static</a></li> <li><a href="mod/mod_negotiation.html">Apache module mod_negotiation</a></li> <li><a href="mod/mod_proxy.html">Apache module mod_proxy</a></li> <li><a href="mod/mod_rewrite.html">Apache module mod_rewrite</a></li> <li><a href="mod/mod_setenvif.html">Apache module mod_setenvif</a></li> <li><a href="mod/mod_so.html">Apache module mod_so</a></li> <li><a href="mod/mod_speling.html">Apache module mod_speling</a></li> <li><a href="mod/mod_ssl.html">Apache module mod_ssl</a></li> <li><a href="mod/mod_status.html">Apache module mod_status</a></li> <li><a href="mod/mod_suexec.html">Apache module mod_suexec</a></li> <li><a href="mod/mod_unique_id.html">Apache module mod_unique_id</a></li> <li><a href="mod/mod_userdir.html">Apache module mod_userdir</a></li> <li><a href="mod/mod_usertrack.html">Apache module mod_usertrack</a></li> <li><a href="mod/mod_vhost_alias.html">Apache module mod_vhost_alias</a></li> </ul></li> <li><a href="developer/index.html">Developer Documentation</a> <ul> <li><a href="developer/API.html">Apache API notes</a></li> <li><a href="developer/debugging.html">Debugging Memory Allocation in APR</a></li> <li><a href="developer/documenting.html">Documenting Apache 2.0</a></li> <li><a href="developer/hooks.html">Apache 2.0 Hook Functions</a></li> <li><a href="developer/layeredio.html">Apache 2.0 Layered I/O</a></li> <li><a href="developer/modules.html">Converting Modules from Apache 1.3 to Apache 2.0</a></li> <li><a href="developer/request.html">Request Processing in Apache 2.0</a></li> </ul></li> </ul></li> </ul> <!--#include virtual="footer.html" --> </body> </html> From millerrobert@example.com Mon Dec 03 20:04:50 2001 Return-Path: <millerrobert@example.com> Delivered-To: millerrobert@example.com Received: (qmail 84640 invoked by uid 500); 3 Dec 2001 20:04:50 -0000 Mailing-List: contact millerrobert@example.com; run by ezmlm Precedence: bulk Reply-To: millerrobert@example.com list-help: <mailto:millerrobert@example.com> list-unsubscribe: <mailto:millerrobert@example.com> list-post: <mailto:millerrobert@example.com> Delivered-To: mailing list millerrobert@example.com Received: (qmail 84629 invoked by uid 500); 3 Dec 2001 20:04:49 -0000 Delivered-To: millerrobert@example.com Date: 3 Dec 2001 19:46:33 -0000 Message-ID: <millerrobert@example.com> From: millerrobert@example.com To: millerrobert@example.com Subject: cvs commit: httpd-2.0/modules/arch/win32 mod_isapi.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N wrowe 01/12/03 11:46:32 Modified: . CHANGES modules/arch/win32 mod_isapi.c Log: Resolved segfault in mod_isapi when configuring with ISAPICacheFile. PR: 8563, 8919 Revision Changes Path 1.466 +3 -0 httpd-2.0/CHANGES Index: CHANGES =================================================================== RCS file: /home/cvs/httpd-2.0/CHANGES,v retrieving revision 1.465 retrieving revision 1.466 diff -u -r1.465 -r1.466 --- CHANGES 2001/12/03 18:00:03 1.465 +++ CHANGES 2001/12/03 19:46:32 1.466 @@ -1,4 +1,7 @@ Changes with Apache 2.0.30-dev + + *) Resolved segfault in mod_isapi when configuring with ISAPICacheFile. + PR 8563, 8919 [William Rowe] *) Get binary builds working when libapr and libaprutil are built shared [Greg Ames] 1.54 +22 -36 httpd-2.0/modules/arch/win32/mod_isapi.c Index: mod_isapi.c =================================================================== RCS file: /home/cvs/httpd-2.0/modules/arch/win32/mod_isapi.c,v retrieving revision 1.53 retrieving revision 1.54 diff -u -r1.53 -r1.54 --- mod_isapi.c 2001/11/26 16:27:01 1.53 +++ mod_isapi.c 2001/12/03 19:46:32 1.54 @@ -114,7 +114,7 @@ BOOL WINAPI GetServerVariable (HCONN hConn, LPSTR lpszVariableName, LPVOID lpvBuffer, LPDWORD lpdwSizeofBuffer); -BOOL WINAPI WriteClient (HCONN ConnID, LPVOID Buffer, LPDWORD lpwdwBytes, +BOOL WINAPI WriteClient (HCONN ConnID, LPVOID Buffer, LPDWORD lpdwBytes, DWORD dwReserved); BOOL WINAPI ReadClient (HCONN ConnID, LPVOID lpvBuffer, LPDWORD lpdwSize); BOOL WINAPI ServerSupportFunction (HCONN hConn, DWORD dwHSERequest, @@ -134,7 +134,6 @@ /* Our isapi server config structure */ typedef struct { - HANDLE lock; apr_array_header_t *loaded; DWORD ReadAheadBuffer; int LogNotSupported; @@ -169,39 +168,16 @@ HANDLE complete; } isapi_cid; -static BOOL isapi_unload(isapi_loaded* isa, int force); - -static apr_status_t cleanup_isapi_server_config(void *sconfv) -{ - isapi_server_conf *sconf = sconfv; - size_t n; - isapi_loaded **isa; - - n = sconf->loaded->nelts; - isa = (isapi_loaded **)sconf->loaded->elts; - while(n--) { - if ((*isa)->handle) - isapi_unload(*isa, TRUE); - ++isa; - } - CloseHandle(sconf->lock); - return APR_SUCCESS; -} - static void *create_isapi_server_config(apr_pool_t *p, server_rec *s) { isapi_server_conf *sconf = apr_palloc(p, sizeof(isapi_server_conf)); sconf->loaded = apr_array_make(p, 20, sizeof(isapi_loaded*)); - sconf->lock = CreateMutex(NULL, FALSE, NULL); - + sconf->ReadAheadBuffer = 49152; sconf->LogNotSupported = -1; sconf->AppendLogToErrors = 0; sconf->AppendLogToQuery = 0; - apr_pool_cleanup_register(p, sconf, cleanup_isapi_server_config, - apr_pool_cleanup_null); - return sconf; } @@ -214,7 +190,7 @@ } static int isapi_post_config(apr_pool_t *p, apr_pool_t *plog, - apr_pool_t *ptemp, server_rec *s) + apr_pool_t *ptemp, server_rec *s) { isapi_server_conf *sconf = ap_get_module_config(s->module_config, &isapi_module); @@ -224,13 +200,20 @@ /* sort the elements of the main_server, by filename */ qsort(elts, nelts, sizeof(isapi_loaded*), compare_loaded); - /* and make the virtualhosts share the same thing */ + /* and make all virtualhosts share the same */ for (s = s->next; s; s = s->next) { ap_set_module_config(s->module_config, &isapi_module, sconf); } return OK; } +static apr_status_t isapi_unload(isapi_loaded* isa, int force); + +static apr_status_t cleanup_isapi(void *isa) +{ + return isapi_unload((isapi_loaded*) isa, TRUE); +} + static apr_status_t isapi_load(apr_pool_t *p, isapi_server_conf *sconf, request_rec *r, const char *fpath, isapi_loaded** isa) @@ -323,27 +306,30 @@ ++(*isa)->refcount; + apr_pool_cleanup_register(p, *isa, cleanup_isapi, + apr_pool_cleanup_null); + return APR_SUCCESS; } -static int isapi_unload(isapi_loaded* isa, int force) +static apr_status_t isapi_unload(isapi_loaded* isa, int force) { /* All done with the DLL... get rid of it... * * If optionally cached, pass HSE_TERM_ADVISORY_UNLOAD, * and if it returns TRUE, unload, otherwise, cache it. */ - if ((--isa->refcount > 0) && !force) - return FALSE; + if (((--isa->refcount > 0) && !force) || !isa->handle) + return APR_SUCCESS; if (isa->TerminateExtension) { if (force) (*isa->TerminateExtension)(HSE_TERM_MUST_UNLOAD); else if (!(*isa->TerminateExtension)(HSE_TERM_ADVISORY_UNLOAD)) - return FALSE; + return APR_EGENERAL; } apr_dso_unload(isa->handle); isa->handle = NULL; - return TRUE; + return APR_SUCCESS; } apr_status_t isapi_handler (request_rec *r) @@ -653,7 +639,7 @@ return FALSE; } -BOOL WINAPI WriteClient (HCONN ConnID, LPVOID Buffer, LPDWORD lpwdwBytes, +BOOL WINAPI WriteClient (HCONN ConnID, LPVOID Buffer, LPDWORD lpdwBytes, DWORD dwReserved)
{'source': 'Apache Software Foundation Public Mail Archives'}