cvs commit: apache-1.3/src/main http_core.c

1998-07-23 Thread coar
coar98/07/23 03:46:25

  Modified:src/main http_core.c
  Log:
Add a comment explaining the initially astonishing use of '!='
in what otherwise looks like it should be a string comparison.
  
  Revision  ChangesPath
  1.213 +9 -3  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.212
  retrieving revision 1.213
  diff -u -r1.212 -r1.213
  --- http_core.c   1998/07/13 11:32:39 1.212
  +++ http_core.c   1998/07/23 10:46:23 1.213
  @@ -1087,12 +1087,18 @@
   static const char *end_nested_section(cmd_parms *cmd, void *dummy)
   {
   if (cmd-end_token == NULL) {
  - return ap_pstrcat(cmd-pool, cmd-cmd-name,
  -  without matching , cmd-cmd-name + 2,  section, NULL);
  +return ap_pstrcat(cmd-pool, cmd-cmd-name,
  +without matching , cmd-cmd-name + 2, 
  +section, NULL);
   }
  +/*
  + * This '!=' may look weird on a string comparison, but it's correct --
  + * it's been set up so that checking for two pointers to the same datum
  + * is valid here.  And faster.
  + */
   if (cmd-cmd-name != cmd-end_token) {
return ap_pstrcat(cmd-pool, Expected , cmd-end_token,  but saw ,
  - cmd-cmd-name, NULL);
  +   cmd-cmd-name, NULL);
   }
   return cmd-end_token;
   }
  
  
  


cvs commit: apache-1.3/src/modules/standard mod_rewrite.c mod_rewrite.h

1998-07-23 Thread coar
coar98/07/23 04:34:02

  Modified:src/modules/standard mod_rewrite.c mod_rewrite.h
  Log:
Add some capability for setting the Vary response field when
mod_rewrite makes changes based upon request fields.  This is
by no means a complete treatment of the problem (redirects don't
inherit the Vary at the moment, for instance), but at least
we're not ignoring Vary here completely any more.
  
  PR:   1644
  Reviewed by:  Ralf Engelschall
  
  Revision  ChangesPath
  1.126 +20 -0 apache-1.3/src/modules/standard/mod_rewrite.c
  
  Index: mod_rewrite.c
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.c,v
  retrieving revision 1.125
  retrieving revision 1.126
  diff -u -r1.125 -r1.126
  --- mod_rewrite.c 1998/07/18 15:30:46 1.125
  +++ mod_rewrite.c 1998/07/23 11:34:00 1.126
  @@ -1728,6 +1728,7 @@
   {
   char *uri;
   char *output;
  +const char *vary;
   char newuri[MAX_STRING_LEN];
   char env[MAX_STRING_LEN];
   regex_t *regexp;
  @@ -1841,6 +1842,7 @@
   /*  One condition is false, but another can be
*  still true, so we have to continue...
*/
  + ap_table_unset(r-notes, VARY_KEY_THIS);
   continue;
   }
   else {
  @@ -1866,13 +1868,30 @@
   break;
   }
   }
  + vary = ap_table_get(r-notes, VARY_KEY_THIS);
  + if (vary != NULL) {
  + ap_table_merge(r-notes, VARY_KEY, vary);
  + ap_table_unset(r-notes, VARY_KEY_THIS);
  + }
   }
   /*  if any condition fails the complete rule fails  */
   if (failed) {
  +ap_table_unset(r-notes, VARY_KEY);
  +ap_table_unset(r-notes, VARY_KEY_THIS);
   return 0;
   }
   
   /*
  + * Regardless of what we do next, we've found a match.  Check to see
  + * if any of the request header fields were involved, and add them
  + * to the Vary field of the response.
  + */
  +if ((vary = ap_table_get(r-notes, VARY_KEY)) != NULL) {
  +ap_table_merge(r-headers_out, Vary, vary);
  + ap_table_unset(r-notes, VARY_KEY);
  +}
  +
  +/*
*  If this is a pure matching rule (`RewriteRule pat -')
*  we stop processing and return immediately. The only thing
*  we have not to forget are the environment variables
  @@ -3718,6 +3737,7 @@
   continue;
   }
   if (strcasecmp(hdrs[i].key, name) == 0) {
  + ap_table_merge(r-notes, VARY_KEY_THIS, name);
   return hdrs[i].val;
   }
   }
  
  
  
  1.56  +7 -0  apache-1.3/src/modules/standard/mod_rewrite.h
  
  Index: mod_rewrite.h
  ===
  RCS file: /export/home/cvs/apache-1.3/src/modules/standard/mod_rewrite.h,v
  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -r1.55 -r1.56
  --- mod_rewrite.h 1998/07/13 11:32:46 1.55
  +++ mod_rewrite.h 1998/07/23 11:34:01 1.56
  @@ -113,6 +113,13 @@
   #include http_log.h
   #include http_vhost.h
   
  +/*
  + * The key in the r-notes table wherein we store our accumulated
  + * Vary values, and the one used for per-condition checks in a chain.
  + */
  +#define VARY_KEY rewrite-Vary
  +#define VARY_KEY_THIS rewrite-Vary-this
  +
   /* The NDBM support:
* We support only NDBM files.
* But we have to stat the file for the mtime,
  
  
  


cvs commit: apache-1.3/src CHANGES

1998-07-23 Thread coar
coar98/07/23 06:45:45

  Modified:src  CHANGES
  Log:
I always forget this..
  
  PR:   1644
  
  Revision  ChangesPath
  1.978 +3 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.977
  retrieving revision 1.978
  diff -u -r1.977 -r1.978
  --- CHANGES   1998/07/22 13:20:51 1.977
  +++ CHANGES   1998/07/23 13:45:42 1.978
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3.2
   
  +  *) Modify mod_rewrite to update the Vary response field if it Does
  + Anything based upon request fields.  [Ken Coar]  PR#1644
  +
 *) Document the special APACI behavior for installation paths where
``/apache'' is appended to paths under some (well defined, of course)
situations to prevent pollution of system locations with Apache files.
  
  
  


cvs commit: apache-1.3/src CHANGES Configuration.tmpl

1998-07-23 Thread Ralf S. Engelschall
rse 98/07/23 06:57:52

  Modified:src  CHANGES Configuration.tmpl
  Log:
  Fix document name for dso.html
  
  Revision  ChangesPath
  1.979 +3 -0  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.978
  retrieving revision 1.979
  diff -u -r1.978 -r1.979
  --- CHANGES   1998/07/23 13:45:42 1.978
  +++ CHANGES   1998/07/23 13:57:50 1.979
  @@ -1,5 +1,8 @@
   Changes with Apache 1.3.2
   
  +  *) Fix document hyperlink for dso.html in src/Configuration.tmpl
  + [Ralf S. Engelschall] PR#2674
  +
 *) Modify mod_rewrite to update the Vary response field if it Does
Anything based upon request fields.  [Ken Coar]  PR#1644
   
  
  
  
  1.107 +1 -2  apache-1.3/src/Configuration.tmpl
  
  Index: Configuration.tmpl
  ===
  RCS file: /export/home/cvs/apache-1.3/src/Configuration.tmpl,v
  retrieving revision 1.106
  retrieving revision 1.107
  diff -u -r1.106 -r1.107
  --- Configuration.tmpl1998/07/11 16:44:33 1.106
  +++ Configuration.tmpl1998/07/23 13:57:51 1.107
  @@ -72,8 +72,7 @@
   # knowledge on how to compile these DSO files because this is
   # heavily platform-dependent. The current state of supported and
   # explicitly unsupported platforms can be found in the file 
  -# htdocs/manual/sharedobjects.html, under 
  -# Supported Platforms.
  +# htdocs/manual/dso.html, under Supported Platforms.
   #
   # For other platforms where you want to use the DSO mechanism you
   # first have to make sure it supports the pragmatic dlopen()
  
  
  


cvs commit: apache-2.0/docs overview_aek

1998-07-23 Thread akosut
akosut  98/07/23 09:42:05

  Added:   docs overview_aek
  Log:
  Add my 2.0 overview document to CVS, where it will be maintained for
  all eternity. Please make changes where appropriate.
  
  Revision  ChangesPath
  1.1  apache-2.0/docs/overview_aek
  
  Index: overview_aek
  ===
  
  From [EMAIL PROTECTED] Thu Jul 23 09:38:40 1998
  Date: Sun, 19 Jul 1998 00:12:37 -0700 (PDT)
  From: Alexei Kosut [EMAIL PROTECTED]
  To: new-httpd@apache.org
  Subject: Apache 2.0 - an overview
  
  For those not at the Apache meeting in SF, and even for those who were,
  here's a quick overview of (my understanding of) the Apache 2.0
  architecture that we came up with. I present this to make sure that I have
  it right, and to get opinions from the rest of the group. Enjoy.
  
  
  1. Well, if we haven't released 2.0 by Christmas of 1999, it won't
  matter anyway. 
  
  A couple of notes about this plan: I'm looking at this right now from a
  design standpoint, not an implementation one. If the plan herein were
  actually coded as-is, you'd get a very inefficient web server. But as
  Donald Knuth (Professor emeritus at Stanford, btw... :) points out,
  premature optimization is the root of all evil. Rest assured there are
  plenty of ways to make sure Apache 2.0 is much faster than Apache 1.3.
  Taking out all the slowness code, for example... :)
  
  Also, the main ideas in this document mainly come from Dean Gaudet, Simon
  Spero, Cliff Skolnick and a bunch of other people, from the Apache Group's
  meeting in San Francisco, July 2 and 3, 1998. The other ideas come from
  other people. I'm being vague because I can't quite remember. We should
  have videotaped it.  I've titled the sections of this document with quotes
  from our meeting, but they are paraphrased from memory, so don't take them
  too seriously.
  
  2. But Simon, how can you have a *middle* end?
  
  One of the main goals of Apache 2.0 is protocol independence (i.e.,
  serving HTTP/1.1, HTTP-NG, and maybe FTP or gopher or something). Another
  is to rid the server of the belief that everything is a file. Towards this
  end, we divide the server up into three parts, the front end, the middle
  end, and the back end.
  
  The front end is essentially a combination of http_main and http_protocol
  today. It takes care of all network and protocol matters, interpreting the
  request, putting it into a protocol-neutral form, and (possibly) passing
  it off to the rest of the server. This is approximately equivalent to the
  part of Apache contained in Dean's flow stuff, and it also works very well
  in certain non-Unix-like architectures such as clustered mainframes. In
  addition, part of this front-end might be optionally run in kernel space,
  giving a very fast server indeed...
  
  The back end is what generates the content. At the back of the back end we
  have backing stores (Cliff's term), which contain actual data. These might
  represent files on a disk, entries in a database, CGI scripts, etc... The
  back end also consists of other modules, which can alter the request in
  various fashions. The objects the server acts on can be thought of (Cliff
  again) as a filehandle and a set of key/value pairs (metainformation).
  The modules are set up as filters that can alter either one of those,
  stacking I/O routines onto the stream of data, or altering the
  metainformation.
  
  The middle end is what comes between the front and back ends. Think of
  http_request. This section takes care of arranging the modules, backing
  stores, etc... into a manner so that the path of the request will result
  in the correct entity being delivered to the front end and sent to the
  client.
  
  3. I won't embarrass you guys with the numbers for how well Apache
  performs compared to IIS. (on NT)
  
  For a server that was designed to handle flat files, Apache does it
  surprisingly poorly, compared with other servers that have been optimized
  for it. And the performance for non-static files is, of course, worse.
  While Apache is still more than fast enough for 95% of Web servers, we'd
  be remiss to dismiss those other 5% (they're the fun ones anyway). Another
  problem Apache has is its lack of a good, caching, proxy module.
  
  Put these together, along with the work Dean has done with the flow and
  mod_mmap_static stuff, and we realize the most important part of Apache
  2.0: a built-in, all-pervasive, cache. Every part of the request process
  will involve caching. In the path outlined above, between each layer of
  the request, between each module, sits the cache, which can (when it is
  useful), cache the response and its metainformation - including its
  variance, so it knows when it is safe to give out the cached copy. This
  gives every opportunity to increase the speed of the server by making sure
  it never has to dynamically create content more 

cvs commit: apache-1.3/src CHANGES

1998-07-23 Thread Ralf S. Engelschall
rse 98/07/23 10:31:27

  Modified:src  CHANGES
  Log:
  Do some litte adjustments to let Marc agree to it ;-)
  
  Revision  ChangesPath
  1.980 +4 -3  apache-1.3/src/CHANGES
  
  Index: CHANGES
  ===
  RCS file: /export/home/cvs/apache-1.3/src/CHANGES,v
  retrieving revision 1.979
  retrieving revision 1.980
  diff -u -r1.979 -r1.980
  --- CHANGES   1998/07/23 13:57:50 1.979
  +++ CHANGES   1998/07/23 17:31:24 1.980
  @@ -1,10 +1,11 @@
   Changes with Apache 1.3.2
   
 *) Fix document hyperlink for dso.html in src/Configuration.tmpl
  - [Ralf S. Engelschall] PR#2674
  + [Knut A.Syed [EMAIL PROTECTED]] PR#2674
   
  -  *) Modify mod_rewrite to update the Vary response field if it Does
  - Anything based upon request fields.  [Ken Coar]  PR#1644
  +  *) Modify mod_rewrite to update the Vary response field if the URL 
rewriting
  + engine does any manipulations or decisions based upon request fields. 
  + [Ken Coar] PR#1644
   
 *) Document the special APACI behavior for installation paths where
``/apache'' is appended to paths under some (well defined, of course)