You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by Dean Gaudet <dg...@hyperreal.com> on 1997/06/27 05:02:19 UTC

cvs commit: apache/htdocs/manual/mod core.html mod_auth_anon.html mod_dir.html mod_include.html mod_proxy.html mod_rewrite.html mod_status.html

dgaudet     97/06/26 20:02:17

  Modified:    htdocs    Tag: APACHE_1_2_X  index.html
               htdocs/manual  Tag: APACHE_1_2_X  custom-error.html
                        index.html new_features_1_2.html 
                        process-model.html suexec.html virtual-host.html
               htdocs/manual/misc  Tag: APACHE_1_2_X  FAQ.html
                        compat_notes.html fin_wait_2.html index.html 
                        known_bugs.html nopgp.html perf-bsd44.html
                        perf.html  vif-info.html
               htdocs/manual/mod  Tag: APACHE_1_2_X  core.html
                        mod_auth_anon.html mod_dir.html mod_include.html 
                        mod_proxy.html mod_rewrite.html mod_status.html
  Added:       htdocs/manual  Tag: APACHE_1_2_X  new_features_1_3.html
               htdocs/manual/misc  Tag: APACHE_1_2_X  descriptors.html
  Log:
  Merge in all of the docs from HEAD, I'll clean it up a bit later.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.5.2.1   +33 -23    apache/htdocs/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/index.html,v
  retrieving revision 1.5
  retrieving revision 1.5.2.1
  diff -C3 -r1.5 -r1.5.2.1
  *** index.html	1997/05/01 05:26:31	1.5
  --- index.html	1997/06/27 03:01:56	1.5.2.1
  ***************
  *** 1,23 ****
  ! <HTML><HEAD>
  ! <TITLE>Test Page for Apache</TITLE>
  ! </HEAD><BODY>
  ! 
  ! <H1>It Worked!</H1>
  ! 
  ! If you can see this, then your 
  ! <A HREF="http://www.apache.org/">Apache</A> installation was 
  ! successful.  You may now add content to this directory and 
  ! replace this page.
  ! 
  ! <P>
  ! The Apache <A HREF="manual/index.html">documentation has been
  ! included with this distribution.</A>
  ! 
  ! <P>
  ! You are free to use the image below on an Apache-powered web
  ! server.  Thanks for using Apache!
  ! 
  ! <P>
  ! <img src="apache_pb.gif" alt="">
  ! 
  ! </BODY></HTML>
  --- 1,33 ----
  ! <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
  ! <HTML>
  !  <HEAD>
  !   <TITLE>Test Page for Apache</TITLE>
  !  </HEAD>
  ! <!-- Background white, links blue (unvisited), navy (visited), red (active) -->
  !  <BODY
  !   BGCOLOR="#FFFFFF"
  !   TEXT="#000000"
  !   LINK="#0000FF"
  !   VLINK="#000080"
  !   ALINK="#FF0000"
  !  >
  !   <H1 ALIGN="CENTER">It Worked!</H1>
  !   <P>
  !   If you can see this, then your 
  !   <A HREF="http://www.apache.org/">Apache</A> installation was 
  !   successful.  You may now add content to this directory and 
  !   replace this page.
  !   </P>
  !   <P>
  !   The Apache <A HREF="manual/index.html">documentation</A> has been
  !   included with this distribution.
  !   </P>
  !   <P>
  !   You are free to use the image below on an Apache-powered web
  !   server.  Thanks for using Apache!
  !   </P>
  !   <P ALIGN="CENTER">
  !   <IMG SRC="apache_pb.gif" ALT="">
  !   </P>
  !  </BODY>
  ! </HTML>
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.8.2.1   +2 -2      apache/htdocs/manual/custom-error.html
  
  Index: custom-error.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/custom-error.html,v
  retrieving revision 1.8
  retrieving revision 1.8.2.1
  diff -C3 -r1.8 -r1.8.2.1
  *** custom-error.html	1997/06/04 11:07:47	1.8
  --- custom-error.html	1997/06/27 03:01:58	1.8.2.1
  ***************
  *** 29,37 ****
          response, then this response can be replaced with either some
          friendlier text or by a redirection to another URL (local or
          external).
  ! 	
          <P>
  ! 	
    <DT>Old behavior
    
      <DD>NCSA httpd 1.3 would return some boring old error/problem message 
  --- 29,37 ----
          response, then this response can be replaced with either some
          friendlier text or by a redirection to another URL (local or
          external).
  !         
          <P>
  !         
    <DT>Old behavior
    
      <DD>NCSA httpd 1.3 would return some boring old error/problem message 
  
  
  
  1.14.2.1  +1 -0      apache/htdocs/manual/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/index.html,v
  retrieving revision 1.14
  retrieving revision 1.14.2.1
  diff -C3 -r1.14 -r1.14.2.1
  *** index.html	1997/06/04 11:07:48	1.14
  --- index.html	1997/06/27 03:01:58	1.14.2.1
  ***************
  *** 19,24 ****
  --- 19,25 ----
    
    <h3><a name="new">Release Notes</a></h3>
    <ul>
  + <li><a href="new_features_1_3.html">New features in Apache 1.3</a>
    <li><a href="new_features_1_2.html">New features in Apache 1.2</a>
    <li><a href="new_features_1_1.html">New features in Apache 1.1</a>
    <li><a href="new_features_1_0.html">New features in Apache 1.0</a>
  
  
  
  1.29.2.1  +6 -6      apache/htdocs/manual/new_features_1_2.html
  
  Index: new_features_1_2.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/new_features_1_2.html,v
  retrieving revision 1.29
  retrieving revision 1.29.2.1
  diff -C3 -r1.29 -r1.29.2.1
  *** new_features_1_2.html	1997/06/04 11:07:51	1.29
  --- new_features_1_2.html	1997/06/27 03:01:58	1.29.2.1
  ***************
  *** 193,204 ****
    <li><b><a href="mod/mod_proxy.html">Optional proxy module</a></b><br>
    An improved FTP, HTTP, and CONNECT mode SSL proxy is included with
    Apache 1.2. Some of the changes visible to users:
  ! 	<dl><dl>
  ! 	<dt>- Improved FTP proxy supporting PASV mode
  ! 	<dt>- ProxyBlock directive for excluding sites to proxy
  ! 	<dt>- NoCache * directive for disabling proxy caching
  ! 	<dt>- Numerous bug fixes
  ! 	</dl></dl>
    
    </ul>
    
  --- 193,204 ----
    <li><b><a href="mod/mod_proxy.html">Optional proxy module</a></b><br>
    An improved FTP, HTTP, and CONNECT mode SSL proxy is included with
    Apache 1.2. Some of the changes visible to users:
  !         <dl><dl>
  !         <dt>- Improved FTP proxy supporting PASV mode
  !         <dt>- ProxyBlock directive for excluding sites to proxy
  !         <dt>- NoCache * directive for disabling proxy caching
  !         <dt>- Numerous bug fixes
  !         </dl></dl>
    
    </ul>
    
  
  
  
  1.8.2.1   +3 -3      apache/htdocs/manual/process-model.html
  
  Index: process-model.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/process-model.html,v
  retrieving revision 1.8
  retrieving revision 1.8.2.1
  diff -C3 -r1.8 -r1.8.2.1
  *** process-model.html	1997/06/04 11:07:51	1.8
  --- process-model.html	1997/06/27 03:01:59	1.8.2.1
  ***************
  *** 39,47 ****
    The defaults for each variable are:
    
    <PRE>
  ! MinSpareServers		5
  ! MaxSpareServers		10
  ! StartServers		5
    </PRE>
    
    There is an absolute maximum number of simultaneous children defined
  --- 39,47 ----
    The defaults for each variable are:
    
    <PRE>
  ! MinSpareServers         5
  ! MaxSpareServers         10
  ! StartServers            5
    </PRE>
    
    There is an absolute maximum number of simultaneous children defined
  
  
  
  1.11.2.1  +157 -156  apache/htdocs/manual/suexec.html
  
  Index: suexec.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/suexec.html,v
  retrieving revision 1.11
  retrieving revision 1.11.2.1
  diff -C3 -r1.11 -r1.11.2.1
  *** suexec.html	1997/06/05 20:07:19	1.11
  --- suexec.html	1997/06/27 03:01:59	1.11.2.1
  ***************
  *** 17,30 ****
    
    <P ALIGN="LEFT">
    <OL>
  ! 	<LH><BIG><STRONG>CONTENTS</STRONG></BIG></LH>
  ! 	<LI><A HREF="#what">What is suEXEC?</A></LI>
  ! 	<LI><A HREF="#before">Before we begin.</A></LI>
  ! 	<LI><A HREF="#model">suEXEC Security Model.</A></LI>
  ! 	<LI><A HREF="#install">Configuring & Installing suEXEC</A></LI>
  ! 	<LI><A HREF="#enable">Enabling & Disabling suEXEC</A></LI>
  ! 	<LI><A HREF="#debug">Debugging suEXEC</A></LI>
  ! 	<LI><A HREF="#jabberwock">Beware the Jabberwock: Warnings & Examples</A></LI>
    </OL>
    </P>
    
  --- 17,31 ----
    
    <P ALIGN="LEFT">
    <OL>
  !         <LH><BIG><STRONG>CONTENTS</STRONG></BIG></LH>
  !         <LI><A HREF="#what">What is suEXEC?</A></LI>
  !         <LI><A HREF="#before">Before we begin.</A></LI>
  !         <LI><A HREF="#model">suEXEC Security Model.</A></LI>
  !         <LI><A HREF="#install">Configuring &amp; Installing suEXEC</A></LI>
  !         <LI><A HREF="#enable">Enabling &amp; Disabling suEXEC</A></LI>
  !         <LI><A HREF="#debug">Debugging suEXEC</A></LI>
  !         <LI><A HREF="#jabberwock">Beware the Jabberwock: Warnings &amp;
  !          Examples</A></LI> 
    </OL>
    </P>
    
  ***************
  *** 119,242 ****
    The wrapper then employs the following process to determine success or
    failure -- if any one of these conditions fail, the program logs the failure
    and exits with an error, otherwise it will continue:
  ! 	<OL>
  ! 	<LI><STRONG>Was the wrapper called with the proper number of arguments?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	The wrapper will only execute if it is given the proper number of arguments.
  ! 	The proper argument format is known to the Apache web server.  If the wrapper
  ! 	is not receiving the proper number of arguments, it is either being hacked, or
  ! 	there is something wrong with the suEXEC portion of your Apache binary.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Is the user executing this wrapper a valid user of this system?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	This is to ensure that the user executing the wrapper is truly a user of the system.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Is this valid user allowed to run the wrapper?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	Is this user the user allowed to run this wrapper?  Only one user (the Apache
  ! 	user) is allowed to execute this program.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Does the target program have an unsafe hierarchical reference?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	Does the target program contain a leading '/' or have a '..' backreference?  These
  ! 	are not allowed; the target program must reside within the Apache webspace.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Is the target user name valid?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	Does the target user exist?
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Is the target group name valid?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	Does the target group exist?
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Is the target user <EM>NOT</EM> superuser?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	Presently, suEXEC does not allow 'root' to execute CGI/SSI programs.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Is the target userid <EM>ABOVE</EM> the minimum ID number?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	The minimum user ID number is specified during configuration.  This allows you
  ! 	to set the lowest possible userid that will be allowed to execute CGI/SSI programs.
  ! 	This is useful to block out "system" accounts.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Is the target group <EM>NOT</EM> the superuser group?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	Presently, suEXEC does not allow the 'root' group to execute CGI/SSI programs.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Is the target groupid <EM>ABOVE</EM> the minimum ID number?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	The minimum group ID number is specified during configuration.  This allows you
  ! 	to set the lowest possible groupid that will be allowed to execute CGI/SSI programs.
  ! 	This is useful to block out "system" groups.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Can the wrapper successfully become the target user and group?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	Here is where the program becomes the target user and group via setuid and setgid
  ! 	calls.  The group access list is also initialized with all of the groups of which
  ! 	the user is a member.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Does the directory in which the program resides exist?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	If it doesn't exist, it can't very well contain files.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Is the directory within the Apache webspace?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	If the request is for a regular portion of the server, is the requested directory
  ! 	within the server's document root?  If the request is for a UserDir, is the requested
  ! 	directory within the user's document root?
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Is the directory <EM>NOT</EM> writable by anyone else?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	We don't want to open up the directory to others; only the owner user may be able
  ! 	to alter this directories contents.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Does the target program exist?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	If it doesn't exists, it can't very well be executed.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Is the target program <EM>NOT</EM> writable by anyone else?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	We don't want to give anyone other than the owner the ability to change the program.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Is the target program <EM>NOT</EM> setuid or setgid?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	We do not want to execute programs that will then change our UID/GID again.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Is the target user/group the same as the program's user/group?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	Is the user the owner of the file?
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Can we successfully clean the process environment to ensure safe operations?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	suEXEC cleans the process' environment by establishing a safe execution PATH (defined
  ! 	during configuration), as well as only passing through those variables whose names
  ! 	are listed in the safe environment list (also created during configuration).
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI><STRONG>Can we successfully become the target program and execute?</STRONG>
  ! 	<BLOCKQUOTE>
  ! 	Here is where suEXEC ends and the target program begins.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	</OL>
    </P>
    
    <P ALIGN="LEFT">
  --- 120,243 ----
    The wrapper then employs the following process to determine success or
    failure -- if any one of these conditions fail, the program logs the failure
    and exits with an error, otherwise it will continue:
  !         <OL>
  !         <LI><STRONG>Was the wrapper called with the proper number of arguments?</STRONG>
  !         <BLOCKQUOTE>
  !         The wrapper will only execute if it is given the proper number of arguments.
  !         The proper argument format is known to the Apache web server.  If the wrapper
  !         is not receiving the proper number of arguments, it is either being hacked, or
  !         there is something wrong with the suEXEC portion of your Apache binary.
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Is the user executing this wrapper a valid user of this system?</STRONG>
  !         <BLOCKQUOTE>
  !         This is to ensure that the user executing the wrapper is truly a user of the system.
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Is this valid user allowed to run the wrapper?</STRONG>
  !         <BLOCKQUOTE>
  !         Is this user the user allowed to run this wrapper?  Only one user (the Apache
  !         user) is allowed to execute this program.
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Does the target program have an unsafe hierarchical reference?</STRONG>
  !         <BLOCKQUOTE>
  !         Does the target program contain a leading '/' or have a '..' backreference?  These
  !         are not allowed; the target program must reside within the Apache webspace.
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Is the target user name valid?</STRONG>
  !         <BLOCKQUOTE>
  !         Does the target user exist?
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Is the target group name valid?</STRONG>
  !         <BLOCKQUOTE>
  !         Does the target group exist?
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Is the target user <EM>NOT</EM> superuser?</STRONG>
  !         <BLOCKQUOTE>
  !         Presently, suEXEC does not allow 'root' to execute CGI/SSI programs.
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Is the target userid <EM>ABOVE</EM> the minimum ID number?</STRONG>
  !         <BLOCKQUOTE>
  !         The minimum user ID number is specified during configuration.  This allows you
  !         to set the lowest possible userid that will be allowed to execute CGI/SSI programs.
  !         This is useful to block out "system" accounts.
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Is the target group <EM>NOT</EM> the superuser group?</STRONG>
  !         <BLOCKQUOTE>
  !         Presently, suEXEC does not allow the 'root' group to execute CGI/SSI programs.
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Is the target groupid <EM>ABOVE</EM> the minimum ID number?</STRONG>
  !         <BLOCKQUOTE>
  !         The minimum group ID number is specified during configuration.  This allows you
  !         to set the lowest possible groupid that will be allowed to execute CGI/SSI programs.
  !         This is useful to block out "system" groups.
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Can the wrapper successfully become the target user and group?</STRONG>
  !         <BLOCKQUOTE>
  !         Here is where the program becomes the target user and group via setuid and setgid
  !         calls.  The group access list is also initialized with all of the groups of which
  !         the user is a member.
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Does the directory in which the program resides exist?</STRONG>
  !         <BLOCKQUOTE>
  !         If it doesn't exist, it can't very well contain files.
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Is the directory within the Apache webspace?</STRONG>
  !         <BLOCKQUOTE>
  !         If the request is for a regular portion of the server, is the requested directory
  !         within the server's document root?  If the request is for a UserDir, is the requested
  !         directory within the user's document root?
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Is the directory <EM>NOT</EM> writable by anyone else?</STRONG>
  !         <BLOCKQUOTE>
  !         We don't want to open up the directory to others; only the owner user may be able
  !         to alter this directories contents.
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Does the target program exist?</STRONG>
  !         <BLOCKQUOTE>
  !         If it doesn't exists, it can't very well be executed.
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Is the target program <EM>NOT</EM> writable by anyone else?</STRONG>
  !         <BLOCKQUOTE>
  !         We don't want to give anyone other than the owner the ability to change the program.
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Is the target program <EM>NOT</EM> setuid or setgid?</STRONG>
  !         <BLOCKQUOTE>
  !         We do not want to execute programs that will then change our UID/GID again.
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Is the target user/group the same as the program's user/group?</STRONG>
  !         <BLOCKQUOTE>
  !         Is the user the owner of the file?
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Can we successfully clean the process environment to ensure safe operations?</STRONG>
  !         <BLOCKQUOTE>
  !         suEXEC cleans the process' environment by establishing a safe execution PATH (defined
  !         during configuration), as well as only passing through those variables whose names
  !         are listed in the safe environment list (also created during configuration).
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI><STRONG>Can we successfully become the target program and execute?</STRONG>
  !         <BLOCKQUOTE>
  !         Here is where suEXEC ends and the target program begins.
  !         </BLOCKQUOTE>
  !         </LI>
  !         </OL>
    </P>
    
    <P ALIGN="LEFT">
  ***************
  *** 257,263 ****
    <STRONG><A HREF="suexec.html">BACK TO CONTENTS</A></STRONG>
    </P>
    
  ! <H3><A NAME="install">Configuring & Installing suEXEC</A></H3>
    <P ALIGN="LEFT">
    Here's where we begin the fun.  The configuration and installation of suEXEC is
    a four step process: edit the suEXEC header file, compile suEXEC, place the
  --- 258,264 ----
    <STRONG><A HREF="suexec.html">BACK TO CONTENTS</A></STRONG>
    </P>
    
  ! <H3><A NAME="install">Configuring &amp; Installing suEXEC</A></H3>
    <P ALIGN="LEFT">
    Here's where we begin the fun.  The configuration and installation of suEXEC is
    a four step process: edit the suEXEC header file, compile suEXEC, place the
  ***************
  *** 396,402 ****
    <STRONG><A HREF="suexec.html">BACK TO CONTENTS</A></STRONG>
    </P>
    
  ! <H3><A NAME="enable">Enabling & Disabling suEXEC</A></H3>
    <P ALIGN="LEFT">
    After properly installing the <STRONG>suexec</STRONG> wrapper
    executable, you must kill and restart the Apache server.  A simple
  --- 397,403 ----
    <STRONG><A HREF="suexec.html">BACK TO CONTENTS</A></STRONG>
    </P>
    
  ! <H3><A NAME="enable">Enabling &amp; Disabling suEXEC</A></H3>
    <P ALIGN="LEFT">
    After properly installing the <STRONG>suexec</STRONG> wrapper
    executable, you must kill and restart the Apache server.  A simple
  ***************
  *** 454,460 ****
    <STRONG><A HREF="suexec.html">BACK TO CONTENTS</A></STRONG>
    </P>
    
  ! <H3><A NAME="jabberwock">Beware the Jabberwock: Warnings & Examples</A></H3>
    <P ALIGN="LEFT">
    <STRONG>NOTE!</STRONG>  This section may not be complete.  For the latest
    revision of this section of the documentation, see the Apache Group's
  --- 455,461 ----
    <STRONG><A HREF="suexec.html">BACK TO CONTENTS</A></STRONG>
    </P>
    
  ! <H3><A NAME="jabberwock">Beware the Jabberwock: Warnings &amp; Examples</A></H3>
    <P ALIGN="LEFT">
    <STRONG>NOTE!</STRONG>  This section may not be complete.  For the latest
    revision of this section of the documentation, see the Apache Group's
  ***************
  *** 467,499 ****
    limitations on server setup.  Please review these before submitting any
    "bugs" regarding suEXEC.
    <UL>
  ! 	<LH><STRONG>suEXEC Points Of Interest</STRONG></LH>
  ! 	<LI>Hierarchy limitations
  ! 	<BLOCKQUOTE>
  ! 	For security and efficiency reasons, all suexec requests must
  ! 	remain within either a top-level document root for virtual
  ! 	host requests, or one top-level personal document root for
  ! 	userdir requests.  For example, if you have four VirtualHosts
  ! 	configured, you would need to structure all of your VHosts'
  ! 	document roots off of one main Apache document hierarchy to
  ! 	take advantage of suEXEC for VirtualHosts. (Example forthcoming.)
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI>suEXEC's PATH environment variable
  ! 	<BLOCKQUOTE>
  ! 	This can be a dangerous thing to change.  Make certain every
  ! 	path you include in this define is a <STRONG>trusted</STRONG>
  ! 	directory.  You don't want to open people up to having someone
  ! 	from across the world running a trojan horse on them.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
  ! 	<LI>Altering the suEXEC code
  ! 	<BLOCKQUOTE>
  ! 	Again, this can cause <STRONG>Big Trouble</STRONG> if you try
  ! 	this without knowing what you are doing.  Stay away from it
  ! 	if at all possible.
  ! 	</BLOCKQUOTE>
  ! 	</LI>
    </UL>
    
    <P ALIGN="CENTER">
  --- 468,500 ----
    limitations on server setup.  Please review these before submitting any
    "bugs" regarding suEXEC.
    <UL>
  !         <LH><STRONG>suEXEC Points Of Interest</STRONG></LH>
  !         <LI>Hierarchy limitations
  !         <BLOCKQUOTE>
  !         For security and efficiency reasons, all suexec requests must
  !         remain within either a top-level document root for virtual
  !         host requests, or one top-level personal document root for
  !         userdir requests.  For example, if you have four VirtualHosts
  !         configured, you would need to structure all of your VHosts'
  !         document roots off of one main Apache document hierarchy to
  !         take advantage of suEXEC for VirtualHosts. (Example forthcoming.)
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI>suEXEC's PATH environment variable
  !         <BLOCKQUOTE>
  !         This can be a dangerous thing to change.  Make certain every
  !         path you include in this define is a <STRONG>trusted</STRONG>
  !         directory.  You don't want to open people up to having someone
  !         from across the world running a trojan horse on them.
  !         </BLOCKQUOTE>
  !         </LI>
  !         <LI>Altering the suEXEC code
  !         <BLOCKQUOTE>
  !         Again, this can cause <STRONG>Big Trouble</STRONG> if you try
  !         this without knowing what you are doing.  Stay away from it
  !         if at all possible.
  !         </BLOCKQUOTE>
  !         </LI>
    </UL>
    
    <P ALIGN="CENTER">
  
  
  
  1.12.2.1  +2 -2      apache/htdocs/manual/virtual-host.html
  
  Index: virtual-host.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/virtual-host.html,v
  retrieving revision 1.12
  retrieving revision 1.12.2.1
  diff -C3 -r1.12 -r1.12.2.1
  *** virtual-host.html	1997/06/04 11:07:52	1.12
  --- virtual-host.html	1997/06/27 03:02:00	1.12.2.1
  ***************
  *** 186,194 ****
    "rlimit" to some large number, like 512.  
    <LI>Edit http_main.c to add calls to setrlimit() from main(), along the lines of
    <PRE>
  ! 	struct rlimit rlp;
    
  ! 	rlp.rlim_cur = rlp.rlim_max = 512;
            if (setrlimit(RLIMIT_NPROC, &rlp)) {
                fprintf(stderr, "setrlimit(RLIMIT_NPROC) failed.\n");
                exit(1);
  --- 186,194 ----
    "rlimit" to some large number, like 512.  
    <LI>Edit http_main.c to add calls to setrlimit() from main(), along the lines of
    <PRE>
  !         struct rlimit rlp;
    
  !         rlp.rlim_cur = rlp.rlim_max = 512;
            if (setrlimit(RLIMIT_NPROC, &rlp)) {
                fprintf(stderr, "setrlimit(RLIMIT_NPROC) failed.\n");
                exit(1);
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +0 -0      apache/htdocs/manual/new_features_1_3.html
  
  Index: new_features_1_3.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/new_features_1_3.html,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -C3 -r1.1 -r1.1.2.1
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.63.2.3  +181 -23   apache/htdocs/manual/misc/FAQ.html
  
  Index: FAQ.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/misc/FAQ.html,v
  retrieving revision 1.63.2.2
  retrieving revision 1.63.2.3
  diff -C3 -r1.63.2.2 -r1.63.2.3
  *** FAQ.html	1997/06/11 21:21:39	1.63.2.2
  --- FAQ.html	1997/06/27 03:02:04	1.63.2.3
  ***************
  *** 15,21 ****
      <!--#include virtual="header.html" -->
      <H1 ALIGN="CENTER">Apache Server Frequently Asked Questions</H1>
      <P>
  !   $Revision: 1.63.2.2 $ ($Date: 1997/06/11 21:21:39 $)
      </P>
      <P>
      The latest version of this FAQ is always available from the main
  --- 15,21 ----
      <!--#include virtual="header.html" -->
      <H1 ALIGN="CENTER">Apache Server Frequently Asked Questions</H1>
      <P>
  !   $Revision: 1.63.2.3 $ ($Date: 1997/06/27 03:02:04 $)
      </P>
      <P>
      The latest version of this FAQ is always available from the main
  ***************
  *** 35,45 ****
    <!--    apache.org or apacheweek.com).                              -->
    <!--  - 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	    -->
    <!--    correctly in a reliable way when this is converted to text  -->
  ! <!--	with Lynx.  Use <DL><DD><CODE>xxx<BR>xx</CODE></DD></DL>    -->
  ! <!--	blocks inside a <P></P> instead.  This is necessary to get  -->
  ! <!--	the horizontal and vertical indenting right.		    -->
    <!--  - Don't forget to include an HR tag after the last /P tag     -->
    <!--    but before the /LI in an item.                              -->
      <P>
  --- 35,45 ----
    <!--    apache.org or apacheweek.com).                              -->
    <!--  - 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          -->
    <!--    correctly in a reliable way when this is converted to text  -->
  ! <!--    with Lynx.  Use <DL><DD><CODE>xxx<BR>xx</CODE></DD></DL>    -->
  ! <!--    blocks inside a <P></P> instead.  This is necessary to get  -->
  ! <!--    the horizontal and vertical indenting right.                -->
    <!--  - Don't forget to include an HR tag after the last /P tag     -->
    <!--    but before the /LI in an item.                              -->
      <P>
  ***************
  *** 131,136 ****
  --- 131,138 ----
       <LI><A HREF="#fdlim">Why can't I run more than &lt;<EM>n</EM>&gt;
        virtual hosts?</A>
       </LI>
  +    <LI><A HREF="#freebsd-setsize">Can I increase FD_SETSIZE on FreeBSD?</A>
  +    </LI>
       <LI><A HREF="#limitGET">Why do I keep getting &quot;access denied&quot; for
        form POST requests?</A>
       </LI>
  ***************
  *** 205,210 ****
  --- 207,221 ----
       </LI>
       <LI><A HREF="#no-info-directives">Why doesn't mod_info list any
        directives?</A>
  +    <LI><A HREF="#linux-shmget">When I run it under Linux I get "shmget:
  +     function not found", what should I do?</A>
  +    </LI>
  +    <LI><A HREF="#authauthoritative">Why does my authentification give
  +     me a server error?</A>
  +    <LI><A HREF="#auth-on-same-machine">Do I have to keep the (mSQL)
  +       authentification information on the same machine?</A>
  +    </LI>
  +    <LI><A HREF="#msql-slow">Why is my mSQL authentification terribly slow?</A>
       </LI>
      </OL>
     </LI>
  ***************
  *** 569,595 ****
      <P>
      It means just what it says: the server was expecting a complete set of
      HTTP headers (one or more followed by a blank line), and didn't get
  !   them.  The most common cause of this (aside from people not
  !   outputting the required headers at all) a result of an interaction
  !   with perl's output buffering.  To make perl flush its buffers 
  !   after each output statement, insert the following statements before your
  !   first <CODE>print</CODE> or <CODE>write</CODE> statement:
      </P>
      <P>
      <DL>
  !    <DD><CODE>$cfh = select (STDOUT);<BR>
  !     $| = 1;<BR>
  !     select ($cfh);</CODE>
       </DD>
      </DL>
      </P>
      <P>
      This is generally only necessary when you are calling external 
      programs from your script that send output to stdout, or if there will
  !   be along delay between the time the headers are sent and the actual
      content starts being emitted.  To maximise performance, you should
  !   turn buffering back <EM>on</EM> (with <CODE>$| = 0</CODE> or the
  !   equivalent) after the statements that send the headers.
      <P>
      If your script isn't written in Perl, do the equivalent thing for
      whatever language you <EM>are</EM> using (<EM>e.g.</EM>, for C, call 
  --- 580,627 ----
      <P>
      It means just what it says: the server was expecting a complete set of
      HTTP headers (one or more followed by a blank line), and didn't get
  !   them.
  !   </P>
  !   <P>
  !   The most common cause of this problem is the script dying before
  !   sending the complete set of headers, or possibly any at all, to the
  !   server.  To see if this is the case, try running the script standalone
  !   from an interactive session, rather than as a script under the server.
  !   If you get error messages, this is almost certainly the cause of the
  !   &quot;premature end of script headers&quot; message.
  !   </P>
  !   <P>
  !   The second most common cause of this (aside from people not
  !   outputting the required headers at all) is a result of an interaction
  !   with Perl's output buffering.  To make Perl flush its buffers 
  !   after each output statement, insert the following statements around
  !   the <CODE>print</CODE> or <CODE>write</CODE> statements that send your
  !   HTTP headers:
      </P>
      <P>
      <DL>
  !    <DD><CODE>{<BR>
  !     &nbsp;local ($oldbar) = $|;<BR>
  !     &nbsp;$cfh = select (STDOUT);<BR>
  !     &nbsp;$| = 1;<BR>
  !     &nbsp;#<BR>
  !     &nbsp;# print your HTTP headers here<BR>
  !     &nbsp;#<BR>
  !     &nbsp;$| = $oldbar;<BR>
  !     &nbsp;select ($cfh);<BR>
  !     }</CODE>
       </DD>
      </DL>
      </P>
      <P>
      This is generally only necessary when you are calling external 
      programs from your script that send output to stdout, or if there will
  !   be a long delay between the time the headers are sent and the actual
      content starts being emitted.  To maximise performance, you should
  !   turn buffer-flushing back <EM>off</EM> (with <CODE>$| = 0</CODE> or the
  !   equivalent) after the statements that send the headers, as displayed
  !   above.
  !   </P>
      <P>
      If your script isn't written in Perl, do the equivalent thing for
      whatever language you <EM>are</EM> using (<EM>e.g.</EM>, for C, call 
  ***************
  *** 796,803 ****
            HREF="../mod/core.html#listen"
           ><SAMP>Listen</SAMP></A>
           directives.  If there are no other servers running on the machine 
  !        and all of them are running on the same port, you normally don't 
  !        need any Listen directives at all.
       </LI>
       <LI>Reduce the number of log files.  You can use 
           <A
  --- 828,836 ----
            HREF="../mod/core.html#listen"
           ><SAMP>Listen</SAMP></A>
           directives.  If there are no other servers running on the machine 
  !        on the same port then you normally don't
  !        need any Listen directives at all.  By default Apache listens to
  !        all addresses on port 80.
       </LI>
       <LI>Reduce the number of log files.  You can use 
           <A
  ***************
  *** 815,821 ****
           <A
            HREF="perf.html"
           >performance hints</A>
  !        page.
       </LI>
       <LI>&quot;Don't do that&quot; - try to run with fewer virtual hosts
       </LI>
  --- 848,855 ----
           <A
            HREF="perf.html"
           >performance hints</A>
  !        page.  There is a specific note for
  !        <a href="#freebsd-setsize">FreeBSD</a> below.
       </LI>
       <LI>&quot;Don't do that&quot; - try to run with fewer virtual hosts
       </LI>
  ***************
  *** 831,836 ****
  --- 865,888 ----
      available in the way of solutions.
      </P>
      <HR>
  + 
  +  <LI><A NAME="freebsd-setsize">
  +       <STRONG>Can I increase FD_SETSIZE on FreeBSD?</STRONG>
  +      </A>
  +   <P>
  +     On FreeBSD 2.2 and older FD_SETSIZE, which limits the number of open
  +     files on the system, is limted to 256. This can limit the number of
  +     virtual hosts you are using; especially if they all use different log
  +     files. Increasing this limit (and recompiling apache) is not enough
  +     (As it is on some platforms, such as Solaris), as you also will have
  +     to recompile libc with the changed setting.
  +   </P>
  +   <p>
  +     On FreeBSD 3.0 the default is 1024, so the problem is lessened.
  +   </p>
  +   <HR>
  +  </LI>
  + 
     <LI><A NAME="limitGET">
          <STRONG>Why do I keep getting &quot;access denied&quot; for form POST
          requests?</STRONG>
  ***************
  *** 1113,1119 ****
      </P>
      <P>
      <DL>
  !    <DD><CODE>if ($0 =~ m:/*nph-:) {
        <BR>
        &nbsp;&nbsp;&nbsp;&nbsp;
        $HTTP_headers&nbsp;=&nbsp;
  --- 1165,1171 ----
      </P>
      <P>
      <DL>
  !    <DD><CODE>if ($0 =~ m:^(.*/)*nph-[^/]*$:) {
        <BR>
        &nbsp;&nbsp;&nbsp;&nbsp;
        $HTTP_headers&nbsp;=&nbsp;
  ***************
  *** 1124,1132 ****
        &quot;Connection:&nbsp;close\015\012&quot;;
        <BR>
        &nbsp;&nbsp;&nbsp;&nbsp;
  !     printf&nbsp;($HTTP_headers);
        <BR>
  !     };</CODE>
       </DD>
      </DL>
      </P>
  --- 1176,1184 ----
        &quot;Connection:&nbsp;close\015\012&quot;;
        <BR>
        &nbsp;&nbsp;&nbsp;&nbsp;
  !     print&nbsp;$HTTP_headers;
        <BR>
  !     }</CODE>
       </DD>
      </DL>
      </P>
  ***************
  *** 1137,1143 ****
     </LI>
     <LI><A NAME="linuxiovec">
          <STRONG>Why do I get complaints about redefinition
  !       of &quot;<CODE>struct iovec</CODE>&quot; when compiling under Linux?</STRONG>
         </A>
      <P>
      This is a conflict between your C library includes and your kernel
  --- 1189,1196 ----
     </LI>
     <LI><A NAME="linuxiovec">
          <STRONG>Why do I get complaints about redefinition
  !       of &quot;<CODE>struct iovec</CODE>&quot; when
  !       compiling under Linux?</STRONG>
         </A>
      <P>
      This is a conflict between your C library includes and your kernel
  ***************
  *** 1538,1543 ****
  --- 1591,1701 ----
      this event, however.
      </P>
      <HR>
  +  </LI>
  + 
  +  <LI><A NAME="linux-shmget">
  +       <STRONG>When I run it under Linux I get "shmget:
  +       function not found", what should I do?</STRONG>
  +      </A>
  +   <P>
  +     Your kernel has been built without SysV IPC support.  You will have to
  +     rebuild the kernel with that support enabled (it's under the
  +     "General Setup" submenu).  Documention for
  +     kernel building is beyond the scope of this FAQ, you should consult
  +     the <A HREF="http://www.linuxhq.com/HOWTO/Kernel-HOWTO.html">Kernel
  +     HOWTO</A>, or the documentation provided with your distribution,
  +     or a <A HREF="http://www.linuxhq.com/HOWTO/META-FAQ.html">Linux
  +     newsgroup/mailing list</A>.  As a last resort workaround, you can
  +     comment out the <CODE>#define HAVE_SHMGET</CODE> definition in the
  +     <CODE>LINUX</CODE> section of
  +     <CODE>src/conf.h</CODE> and rebuild the server.  This will produce
  +     a server which is slower and less reliable.
  +   </P>
  +   <HR>
  +  </LI>
  + 
  +  <LI><A NAME="authauthoritative">
  +       <STRONG>Why does my authentification give me a server error?</STRONG>
  +      </A>
  +   <P>
  +     Under normal circumstances, the apache access control modules will
  +     pass unrecognized userids on to the next access control module in
  +     line.  Only if the userid is recognized, the password is validated
  +     (or not) will it give the usual success or authentification failed
  +     messages.
  +   </p>
  +   <p>
  +     However if the last access module in line 'declines' the validation
  +     request (because it has never heard of the userid or because it is not
  +     configured) the http_request handler will give one of the following,
  +     confusing, errors:
  +   <UL>
  +     <li> <code>check access</code>
  +     <li> <code>check user.  No user file? </code>
  +     <li> <code>check access.  No groups file? </code>
  +   </ul> 
  +     This does not mean that you have to add a 'AuthUserFile /dev/null'
  +     line as some magazines suggest !
  +   </p>
  +   <p>
  +     The solution is to ensure that at least the last module is authoritative
  +     and <b>CONFIGURED</b>. By default <code>mod_auth</code> is authoritative
  +     and will give an OK/Denied, but only if it is configured with the
  +     proper AuthUserFile. Likewise if a valid group is required.  (Remember
  +     that the modules are processed in the reverse order they appear in
  +     your compile-time Configuration file.)
  +   </P>
  +   <p>
  +     A typical situation for this error is when you are using the
  +     mod_auth_dbm, mod_auth_msql, mod_auth_mysql, mod_auth_anon or
  +     mod_auth_cookie on their own.  These are by default <b>not</b>
  +     authoritative, and this will pass the buck on to the (non-existent) next
  +     authentification module when the user ID is not in their respective
  +     database.  Just add the appropriate 'XXXAuthoritative yes' line to
  +     the configuration.
  +   </p>
  +   <p>
  +     In general it is a good idea (though not terribly efficient) to have the
  +     file based mod_auth a module of last resort. This allows you to access
  +     the web server with a few special passwords even if the databases are
  +     down or corrupted.  This does cost a file-open/seek/close for each
  +     request in a protected area.
  +   </p>
  +   <HR>
  +  </LI>
  + 
  +  <LI><A NAME="auth-on-same-machine">
  +       <STRONG>Do I have to keep the (mSQL) authentification information
  +       on the same machine?</STRONG>
  +      </A>
  +   <p>
  +     Some organizations feel very strongly about keeping the authentification
  +     information on a different machine than the webserver. With the
  +     mod_auth_msql, mod_auth_mysql and other SQL modules connecting to
  +     (R)DBMses this is quite well possible. Just configure an explicit host
  +     to contact.
  +   </p>
  +   <p>
  +     Be aware that with mSQL and Oracle, opening and closing these database
  +     connections is very expensive and time consuming. You might want to
  +     look at the code in the auth_modules and play with the compile time
  +     flags to alleviate this somewhat; if your RDBMS licences alows for it.
  +   </p>
  +   <HR>
  +  </LI>
  + 
  +  <LI><A NAME="msql-slow">
  +       <STRONG>Why is my mSQL authentification terribly slow?</STRONG>
  +      </A>
  +   <p>
  +     You have probably configured the Host by specificing a FQHN,
  +     and thus the libmsql will use a full blown tcp/ip socket to talk to
  +     the database, rather than a fast internal device. Both the libmsql,
  +     the mSQL faq and the mod_auth_msql documentation warn you about this. If
  +     you have to use different hosts, check out the mod_auth_msql code for
  +     some compile time flags which might, or might not suit you.
  +   </p>
  +  <HR>
     </LI>
    
      <!-- Don't forget to add HR tags at the end of each list item.. -->
  
  
  
  1.7.2.2   +4 -0      apache/htdocs/manual/misc/compat_notes.html
  
  Index: compat_notes.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/misc/compat_notes.html,v
  retrieving revision 1.7.2.1
  retrieving revision 1.7.2.2
  diff -C3 -r1.7.2.1 -r1.7.2.2
  *** compat_notes.html	1997/06/09 14:42:12	1.7.2.1
  --- compat_notes.html	1997/06/27 03:02:05	1.7.2.2
  ***************
  *** 33,38 ****
  --- 33,39 ----
    <LI>The basic mod_auth <CODE>AuthGroupFile</CODE>-specified group file 
        format allows commas between user names - Apache does not.<BR>
        <I>- added 12/1/96</I>
  +   <p>
    
      <LI><P>If you follow the NCSA guidelines for setting up access restrictions
      based on client domain, you may well have added entries for,
  ***************
  *** 99,104 ****
  --- 100,108 ----
      files if the last line does not have a trailing newline. This affects
      configuration files (httpd.conf, access.conf and srm.conf), and
      htpasswd and htgroup files.
  +   </LI>
  + 
  +   <LI>Apache does not permit commas delimiting the methods in &lt;Limit&gt;.
     
    </OL>
    
  
  
  
  1.7.2.1   +57 -57    apache/htdocs/manual/misc/fin_wait_2.html
  
  Index: fin_wait_2.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/misc/fin_wait_2.html,v
  retrieving revision 1.7
  retrieving revision 1.7.2.1
  diff -C3 -r1.7 -r1.7.2.1
  *** fin_wait_2.html	1997/06/04 11:42:56	1.7
  --- fin_wait_2.html	1997/06/27 03:02:05	1.7.2.1
  ***************
  *** 57,69 ****
    connection stays in the FIN_WAIT_2 state until one of the following
    happens:<P>
    <UL>
  ! 	<LI>The client opens a new connection to the same or a different
  ! 	    site, which causes it to fully close the older connection on
                that socket.
  ! 	<LI>The user exits the client, which on some (most?) clients
  ! 	    causes the OS to fully shutdown the connection.
  ! 	<LI>The FIN_WAIT_2 times out, on servers that have a timeout
  ! 	    for this state.
    </UL><P>
    If you are lucky, this means that the buggy client will fully close the
    connection and release the resources on your server.  However, there
  --- 57,69 ----
    connection stays in the FIN_WAIT_2 state until one of the following
    happens:<P>
    <UL>
  !         <LI>The client opens a new connection to the same or a different
  !             site, which causes it to fully close the older connection on
                that socket.
  !         <LI>The user exits the client, which on some (most?) clients
  !             causes the OS to fully shutdown the connection.
  !         <LI>The FIN_WAIT_2 times out, on servers that have a timeout
  !             for this state.
    </UL><P>
    If you are lucky, this means that the buggy client will fully close the
    connection and release the resources on your server.  However, there
  ***************
  *** 77,92 ****
    
    The clients on which this problem has been verified to exist:<P>
    <UL>
  ! 	<LI>Mozilla/3.01 (X11; I; FreeBSD 2.1.5-RELEASE i386)
  ! 	<LI>Mozilla/2.02 (X11; I; FreeBSD 2.1.5-RELEASE i386)
  ! 	<LI>Mozilla/3.01Gold (X11; I; SunOS 5.5 sun4m)
  ! 	<LI>MSIE 3.01 on the Macintosh
  ! 	<LI>MSIE 3.01 on Windows 95
    </UL><P>
    
    This does not appear to be a problem on:
    <UL>
  ! 	<LI>Mozilla/3.01 (Win95; I)
    </UL>
    <P>
    
  --- 77,92 ----
    
    The clients on which this problem has been verified to exist:<P>
    <UL>
  !         <LI>Mozilla/3.01 (X11; I; FreeBSD 2.1.5-RELEASE i386)
  !         <LI>Mozilla/2.02 (X11; I; FreeBSD 2.1.5-RELEASE i386)
  !         <LI>Mozilla/3.01Gold (X11; I; SunOS 5.5 sun4m)
  !         <LI>MSIE 3.01 on the Macintosh
  !         <LI>MSIE 3.01 on Windows 95
    </UL><P>
    
    This does not appear to be a problem on:
    <UL>
  !         <LI>Mozilla/3.01 (Win95; I)
    </UL>
    <P>
    
  ***************
  *** 155,210 ****
    The following systems are known to have a timeout:
    <P>
    <UL>
  ! 	<LI><A HREF="http://www.freebsd.org/">FreeBSD</A> versions starting at 2.0 or possibly earlier.
  ! 	<LI><A HREF="http://www.netbsd.org/">NetBSD</A> version 1.2(?)
  ! 	<LI><A HREF="http://www.openbsd.org/">OpenBSD</A> all versions(?)
  ! 	<LI><A HREF="http://www.bsdi.com/">BSD/OS</A> 2.1, with the 
  ! 	    <A HREF="ftp://ftp.bsdi.com/bsdi/patches/patches-2.1/K210-027">
  ! 	    K210-027</A> patch installed.  
  ! 	<LI><A HREF="http://www.sun.com/">Solaris</A> as of around version
  ! 	    2.2.  The timeout can be tuned by using <CODE>ndd</CODE> to 
  ! 	    modify <CODE>tcp_fin_wait_2_flush_interval</CODE>, but the
  ! 	    default should be appropriate for most servers and improper 
  ! 	    tuning can have negative impacts.
  ! 	<LI><A HREF="http://www.sco.com/">SCO TCP/IP Release 1.2.1</A>
  ! 	    can be modified to have a timeout by following
  ! 	    <A HREF="http://www.sco.com/cgi-bin/waisgate?WAISdocID=2242622956+0+0+0&WAISaction=retrieve"> SCO's instructions</A>.
  ! 	<LI><A HREF="http://www.linux.org/">Linux</A> 2.0.x and
  ! 	    earlier(?)
  ! 	<LI><A HREF="http://www.hp.com/">HP-UX</A> 10.x defaults to 
  !  	    terminating connections in the FIN_WAIT_2 state after the 
  ! 	    normal keepalive timeouts.  This does not
  ! 	    refer to the persistent connection or HTTP keepalive
  ! 	    timeouts, but the <CODE>SO_LINGER</CODE> socket option 
  ! 	    which is enabled by Apache.  This parameter can be adjusted 
  ! 	    by using <CODE>nettune</CODE> to modify parameters such as
  ! 	    <CODE>tcp_keepstart</CODE> and <CODE>tcp_keepstop</CODE>.
  ! 	    In later revisions, there is an explicit timer for
  ! 	    connections in FIN_WAIT_2 that can be modified; contact HP
  ! 	    support for details.
  ! 	<LI><A HREF="http://www.sgi.com/">SGI IRIX</A> can be patched to
  ! 	    support a timeout.  For IRIX 5.3, 6.2, and 6.3, 
  ! 	    use patches 1654, 1703 and 1778 respectively.  If you
  ! 	    have trouble locating these patches, please contact your
  ! 	    SGI support channel for help.
  ! 	<LI><A HREF="http://www.ncr.com/">NCR's MP RAS Unix</A> 2.xx and
  ! 	    3.xx both have FIN_WAIT_2 timeouts.  In 2.xx it is non-tunable
  ! 	    at 600 seconds, while in 3.xx it defaults to 600 seconds and
  ! 	    is calculated based on the tunable "max keep alive probes" 
  ! 	    (default of 8) multiplied by the "keep alive interval" (default
  ! 	    75 seconds).
  ! 	<LI><A HREF="http://www.sequent.com">Squent's ptx/TCP/IP for
  ! 	    DYNIX/ptx</A> has had a FIN_WAIT_2 timeout since around
  ! 	    release 4.1 in mid-1994.
    </UL>
    <P>
    The following systems are known to not have a timeout:
    <P>
    <UL>
  ! 	<LI><A HREF="http://www.sun.com/">SunOS 4.x</A> does not and
  ! 	    almost certainly never will have one because it as at the
  ! 	    very end of its development cycle for Sun.  If you have kernel
  ! 	    source should be easy to patch.
    </UL>
    <P>
    There is a 
  --- 155,210 ----
    The following systems are known to have a timeout:
    <P>
    <UL>
  !         <LI><A HREF="http://www.freebsd.org/">FreeBSD</A> versions starting at 2.0 or possibly earlier.
  !         <LI><A HREF="http://www.netbsd.org/">NetBSD</A> version 1.2(?)
  !         <LI><A HREF="http://www.openbsd.org/">OpenBSD</A> all versions(?)
  !         <LI><A HREF="http://www.bsdi.com/">BSD/OS</A> 2.1, with the 
  !             <A HREF="ftp://ftp.bsdi.com/bsdi/patches/patches-2.1/K210-027">
  !             K210-027</A> patch installed.  
  !         <LI><A HREF="http://www.sun.com/">Solaris</A> as of around version
  !             2.2.  The timeout can be tuned by using <CODE>ndd</CODE> to 
  !             modify <CODE>tcp_fin_wait_2_flush_interval</CODE>, but the
  !             default should be appropriate for most servers and improper 
  !             tuning can have negative impacts.
  !         <LI><A HREF="http://www.sco.com/">SCO TCP/IP Release 1.2.1</A>
  !             can be modified to have a timeout by following
  !             <A HREF="http://www.sco.com/cgi-bin/waisgate?WAISdocID=2242622956+0+0+0&WAISaction=retrieve"> SCO's instructions</A>.
  !         <LI><A HREF="http://www.linux.org/">Linux</A> 2.0.x and
  !             earlier(?)
  !         <LI><A HREF="http://www.hp.com/">HP-UX</A> 10.x defaults to 
  !             terminating connections in the FIN_WAIT_2 state after the 
  !             normal keepalive timeouts.  This does not
  !             refer to the persistent connection or HTTP keepalive
  !             timeouts, but the <CODE>SO_LINGER</CODE> socket option 
  !             which is enabled by Apache.  This parameter can be adjusted 
  !             by using <CODE>nettune</CODE> to modify parameters such as
  !             <CODE>tcp_keepstart</CODE> and <CODE>tcp_keepstop</CODE>.
  !             In later revisions, there is an explicit timer for
  !             connections in FIN_WAIT_2 that can be modified; contact HP
  !             support for details.
  !         <LI><A HREF="http://www.sgi.com/">SGI IRIX</A> can be patched to
  !             support a timeout.  For IRIX 5.3, 6.2, and 6.3, 
  !             use patches 1654, 1703 and 1778 respectively.  If you
  !             have trouble locating these patches, please contact your
  !             SGI support channel for help.
  !         <LI><A HREF="http://www.ncr.com/">NCR's MP RAS Unix</A> 2.xx and
  !             3.xx both have FIN_WAIT_2 timeouts.  In 2.xx it is non-tunable
  !             at 600 seconds, while in 3.xx it defaults to 600 seconds and
  !             is calculated based on the tunable "max keep alive probes" 
  !             (default of 8) multiplied by the "keep alive interval" (default
  !             75 seconds).
  !         <LI><A HREF="http://www.sequent.com">Squent's ptx/TCP/IP for
  !             DYNIX/ptx</A> has had a FIN_WAIT_2 timeout since around
  !             release 4.1 in mid-1994.
    </UL>
    <P>
    The following systems are known to not have a timeout:
    <P>
    <UL>
  !         <LI><A HREF="http://www.sun.com/">SunOS 4.x</A> does not and
  !             almost certainly never will have one because it as at the
  !             very end of its development cycle for Sun.  If you have kernel
  !             source should be easy to patch.
    </UL>
    <P>
    There is a 
  
  
  
  1.4.2.1   +14 -14    apache/htdocs/manual/misc/index.html
  
  Index: index.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/misc/index.html,v
  retrieving revision 1.4
  retrieving revision 1.4.2.1
  diff -C3 -r1.4 -r1.4.2.1
  *** index.html	1997/06/04 11:42:57	1.4
  --- index.html	1997/06/27 03:02:06	1.4.2.1
  ***************
  *** 21,112 ****
      </P>
      <DL>
       <DT><A
  !        	HREF="API.html"
           >API</A>
       </DT>
       <DD>Description of Apache's Application Programming Interface.
       </DD>
       <DT><A
  !        	HREF="FAQ.html"
           >FAQ</A>
       </DT>
       <DD>Frequently-Asked Questions concerning the Apache project and server
       </DD>
       <DT><A
  !        	HREF="client_block_api.html"
           >Reading Client Input in Apache 1.2</A>
       </DT>
       <DD>Describes differences between Apache 1.1 and 1.2 in how modules
        read information from the client
       </DD>
       <DT><A
  !        	HREF="compat_notes.html"
           >Compatibility with NCSA</A>
       </DT>
       <DD>Notes about Apache's compatibility with the NCSA server
       </DD>
       <DT><A
  !        	HREF="fin_wait_2.html"
           ><SAMP>FIN_WAIT_2</SAMP></A>
       </DT>
       <DD>A description of the causes of Apache processes going into the
        <SAMP>FIN_WAIT_2</SAMP> state, and what you can do about it
       </DD>
       <DT><A
  !        	HREF="howto.html"
           >&quot;How-To&quot;</A>
       </DT>
       <DD>Instructions about how to accomplish some commonly-desired server
        functionality changes
       </DD>
       <DT><A
  !        	HREF="known_bugs.html"
           >Known Bugs</A>
       </DT>
       <DD>Just what it says - a list of known bugs in each of the Apache releases
       </DD>
       <DT><A
  !        	HREF="nopgp.html"
           >No PGP</A>
       </DT>
       <DD>Why we took PEM and PGP support out of the base Apache distribution
       </DD>
       <DT><A
  !        	HREF="perf-bsd44.html"
           >Performance Notes (BSD 4.4)</A>
       </DT>
       <DD>Some notes about ways to improve/optimize Apache performance on
        BSD 4.4 systems
       </DD>
       <DT><A
  !        	HREF="perf-dec.html"
           >Performance Notes (Digital UNIX)</A>
       </DT>
       <DD>Extracts of USENET postings describing how to optimize Apache
        performance on Digital UNIX systems
       </DD>
       <DT><A
  !        	HREF="perf.html"
           >Performance Notes (General)</A>
       </DT>
       <DD>Some generic notes about how to improve Apache performance
       </DD>
       <DT><A
  !        	HREF="security_tips.html"
           >Security Tips</A>
       </DT>
       <DD>Some &quot;do&quot;s  - and &quot;don't&quot;s - for keeping your
        Apache web site secure
       </DD>
       <DT><A
  !        	HREF="vif-info.html"
           >Virtual Hosts (IP-based)</A>
       </DT>
       <DD>Excerpts and notes about configuring and using Apache IP-based virtual
        hosts
       </DD>
       <DT><A
  !        	HREF="windoz_keepalive.html"
           >Windows Bug with Web Keepalive</A>
       </DT>
       <DD>A brief description of a known problem with Microsoft Windows and
  --- 21,112 ----
      </P>
      <DL>
       <DT><A
  !         HREF="API.html"
           >API</A>
       </DT>
       <DD>Description of Apache's Application Programming Interface.
       </DD>
       <DT><A
  !         HREF="FAQ.html"
           >FAQ</A>
       </DT>
       <DD>Frequently-Asked Questions concerning the Apache project and server
       </DD>
       <DT><A
  !         HREF="client_block_api.html"
           >Reading Client Input in Apache 1.2</A>
       </DT>
       <DD>Describes differences between Apache 1.1 and 1.2 in how modules
        read information from the client
       </DD>
       <DT><A
  !         HREF="compat_notes.html"
           >Compatibility with NCSA</A>
       </DT>
       <DD>Notes about Apache's compatibility with the NCSA server
       </DD>
       <DT><A
  !         HREF="fin_wait_2.html"
           ><SAMP>FIN_WAIT_2</SAMP></A>
       </DT>
       <DD>A description of the causes of Apache processes going into the
        <SAMP>FIN_WAIT_2</SAMP> state, and what you can do about it
       </DD>
       <DT><A
  !         HREF="howto.html"
           >&quot;How-To&quot;</A>
       </DT>
       <DD>Instructions about how to accomplish some commonly-desired server
        functionality changes
       </DD>
       <DT><A
  !         HREF="known_bugs.html"
           >Known Bugs</A>
       </DT>
       <DD>Just what it says - a list of known bugs in each of the Apache releases
       </DD>
       <DT><A
  !         HREF="nopgp.html"
           >No PGP</A>
       </DT>
       <DD>Why we took PEM and PGP support out of the base Apache distribution
       </DD>
       <DT><A
  !         HREF="perf-bsd44.html"
           >Performance Notes (BSD 4.4)</A>
       </DT>
       <DD>Some notes about ways to improve/optimize Apache performance on
        BSD 4.4 systems
       </DD>
       <DT><A
  !         HREF="perf-dec.html"
           >Performance Notes (Digital UNIX)</A>
       </DT>
       <DD>Extracts of USENET postings describing how to optimize Apache
        performance on Digital UNIX systems
       </DD>
       <DT><A
  !         HREF="perf.html"
           >Performance Notes (General)</A>
       </DT>
       <DD>Some generic notes about how to improve Apache performance
       </DD>
       <DT><A
  !         HREF="security_tips.html"
           >Security Tips</A>
       </DT>
       <DD>Some &quot;do&quot;s  - and &quot;don't&quot;s - for keeping your
        Apache web site secure
       </DD>
       <DT><A
  !         HREF="vif-info.html"
           >Virtual Hosts (IP-based)</A>
       </DT>
       <DD>Excerpts and notes about configuring and using Apache IP-based virtual
        hosts
       </DD>
       <DT><A
  !         HREF="windoz_keepalive.html"
           >Windows Bug with Web Keepalive</A>
       </DT>
       <DD>A brief description of a known problem with Microsoft Windows and
  
  
  
  1.14.2.2  +59 -258   apache/htdocs/manual/misc/known_bugs.html
  
  Index: known_bugs.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/misc/known_bugs.html,v
  retrieving revision 1.14.2.1
  retrieving revision 1.14.2.2
  diff -C3 -r1.14.2.1 -r1.14.2.2
  *** known_bugs.html	1997/06/09 14:17:28	1.14.2.1
  --- known_bugs.html	1997/06/27 03:02:06	1.14.2.2
  ***************
  *** 17,31 ****
    
    The most up-to-date resource for bug tracking and information is the
    <A HREF="http://www.apache.org/bugdb.cgi">Apache bug database</A>.
  ! All existing bugs will be noted there.  Below is a synopsis of
  ! significant outstanding bugs at release time.  In fact you really
  ! shouldn't trust anything this page says other than the 1.2
  ! information.
    
    <P>See Also: <A HREF="compat_notes.html">Compatibility notes</A></P>
    <HR>
    
  ! <H2>Version 1.2 (all)</H2>
    
    <OL><a name="listenbug"></a>
        <LI>On some architectures if your configuration uses multiple
  --- 17,31 ----
    
    The most up-to-date resource for bug tracking and information is the
    <A HREF="http://www.apache.org/bugdb.cgi">Apache bug database</A>.
  ! Significant bugs at release time will also be noted there.
  ! If you are running a 1.2 beta release or version 1.1.3 or earlier
  ! and thing you have found a bug, please upgrade to 1.2. Many bugs
  ! in early versions have been fixed in 1.2.
    
    <P>See Also: <A HREF="compat_notes.html">Compatibility notes</A></P>
    <HR>
    
  ! <H2>Apache 1.2 Bugs</H2>
    
    <OL><a name="listenbug"></a>
        <LI>On some architectures if your configuration uses multiple
  ***************
  *** 39,45 ****
        This affects any architecture that doesn't use one of the
        <code>USE_xxxxx_SERIALIZED_ACCEPT</code> definitions, see the
        source file <code>conf.h</code> for your architecture.
  !     <p>This will be tracked as
        <a href="http://www.apache.org/bugdb.cgi/full/467">PR#467</a>.
        </LI>
    
  --- 39,45 ----
        This affects any architecture that doesn't use one of the
        <code>USE_xxxxx_SERIALIZED_ACCEPT</code> definitions, see the
        source file <code>conf.h</code> for your architecture.
  !     This will be tracked as
        <a href="http://www.apache.org/bugdb.cgi/full/467">PR#467</a>.
        </LI>
    
  ***************
  *** 51,318 ****
        This <A HREF="../../dist/contrib/patches/1.2/conneg-bug.patch">patch</A>
        fixes this problem. It also fixes the problem which makes Apache
        pick the last equally acceptable variant instead of the first.
  !     <p>This will be tracked as
        <a href="http://www.apache.org/bugdb.cgi/full/94">PR#94</a>.
        </LI>
  - </OL>
  - 
  - <H2>Version 1.2b8</H2>
  - 
  - There are several known bugs in 1.2b8.  See the
  - <A HREF="http://www.apache.org/dist/patches/apply_to_1.2b8/">1.2b8 patches
  - directory</A> for patches for some of the ones that have been fixed since
  - the release of 1.2b8.<P>
  - 
  - <H2>Version 1.2b1</H2>
  - 
  - <OL>
  - 
  - 	<LI>users have reported problems with many connections stuck in the
  - FIN_WAIT_2 state due to server timeouts. This is a quite complicated 
  - problem; see our <A HREF="fin_wait_2.html">FIN_WAIT_2</A> page for
  - details.
  - 
  - 	<LI>hard_timeout() for request reads uses incorrect logic, and
  - ends up waiting for an initial request read for the default "timeout"
  - number of seconds, 1200, yet only the "KeepAliveTimeout" number of
  - seconds on keepalive connections.  
  - 
  - 	<LI>mod_info output is not displaying current configuration as
  - it should.
  - 
  - 	<LI>Invalid commands in .htaccess files may cause segmentation faults.
  - 
  - </OL>
  - 
  - <H2>Version 1.1.1</H2>
  - 
  - <OL>
  - 
  - 	<LI>Hostnames such as "123.hotwired.com" are valid, yet
  - find_allowdeny does not properly handle them.  This should be put on
  - Known Bugs.  Be careful when fixing this because just removing the
  - isalpha() check creates a security hole, consider the DNS map
  - "1.1.1.1.in-addr.arpa IN PTR 2.2.2."  if the user has a config line
  - "allow from 2.2.2" it will allow 1.1.1.1 in (unless -DMAXIMUM_DNS).
  - -- which is bad because it breaks people who understand double reverse
  - lookup and are trying to avoid it by using only IP addresses on
  - allow/deny statements. - reported by Dean Gaudet, fixed in 1.2.
  - 
  - </OL>
  - 
  - 
  - <H2>Version 1.1.0</H2>
  - 
  - <OL>
  - 	<LI>mod_auth_msql misbehaviors.  Grab a newer version from 
  - 	<A HREF="http://www.apache.org/dist/contrib/modules/">the modules distribution
  - 	directory</A>. -fixed in 1.1
  - 
  - 	<LI>Hanging on Netscape 2.0-3.0b4 on MSWindows (3.1 and 95) - 
  - 	we investigated pretty seriously, and as best we can tell 
  - 	this is a Netscape bug, and was fixed in 3.0b5.  Please read our
  - 	<A HREF="windoz_keepalive.html">lab report</A>.
  - 
  - </OL>
  - 
  - <H2>Version 1.1b2 (beta)</h2>
  - <OL>
  -        <LI>SunOS has trouble compiling mod_status.c . It'll be fixed
  -        before 1.1 is released.</LI>
  - 
  -        <LI>CGI which spawn background processes may fail to return immediately.
  -        No fix exists yet.</LI>
  - 
  -        <LI>mod_dir appears to have problems when the DocumentRoot has a 
  -        trailing slash.</LI>
  - 
  - </OL>
  - <H2>Version 1.1b1 (beta)</h2>
  - <OL>
  - 	<LI>The logfile can sometimes contain only part of a host
  - 	address.  This occurs if the Cookie module is compiled in
  - 	and enabled.  
  - </OL>
  - 
  - <H2>Version 0.8.16 (beta)</H2>
  - <OL>
  -   <LI>(Feature) You cannot use relative pathnames for the -f or -d flags
  -  to httpd.<p>
  -   <LI><code>.asis</code> files cannot be used for content-negotiation.
  - </OL>
  - 
  - <H2>Version 0.8.13 (beta)</H2>
  - 
  - <OL>
  -   <LI><CODE>AddDescription</CODE> doesn't seem to work (a fix is imminent)</LI>
  - </OL>
  - 
  - <H2>Version 0.8.11 (beta)</H2>
  - <OL>
  -   <LI><CODE>http_main.c</CODE> function <CODE>accept_mutex_init()</CODE>
  -  horrible bug, <CODE>lock_fname</CODE> should be defined larger, e.g.
  -  <CODE><BR>
  -      char lock_fname[30];
  -  </CODE>
  -  <BR><B>Ooops.</B>
  - 
  - <P>
  - 
  -  <LI>There's a bug with <B>NeXT</B>. Restarting the server causes an
  -    infinite loop. A fix has been provided by a user and should be included
  -    in a future update.
  - 
  - <P>
  - 
  - </OL>
  - 
  - 
  - <H2>Version 0.8.10 (beta)</H2>
  - 
  - <OL>
  -   <LI>Server side includes which include CGI output can have unbearable
  -    delays on some platforms. We're looking into a fix.
  - 
  - <P>
  - 
  -   <LI>NCSA 1.3 and beyond allow wildcards in &lt;Directory&gt; tags; e.g.
  -       &lt;Directory /home/*/public_html&gt; - Apache doesn't (yet),
  -       but we have a patch coming real soon now
  - 
  - <P>
  - 
  -   <LI>Buggy scripts can cause server misbehavior on Solaris at least.
  - 
  - <P>
  - 
  -   <LI>Some of the default directives in srm.conf-dist are outdated
  - 
  - <P>
  - 
  -   <LI>Descriptions of args to AddIcon and AddAlt are wrong
  -       in command table.
  - 
  - <P>
  - 
  -   <LI>DirectoryIndex sometimes gets spuriously reset to the default value.
  - 
  - <P>
  - 
  -   <LI>ErrorDocument is a little shaky, <CODE>" Some text %s</CODE> doesn't
  -     agree with the documentation.
  - 
  - <P>
  - 
  -   <LI>All Aliases are checked before any ScriptAliases --- the fully
  -       compatible behavior would be to check both in one pass, in the order
  -       in which they occur in srm.conf.
  - 
  - <P>
  - </OL>
  - 
  - <H2>Version 0.8.8 (beta)</H2>
  - 
  - <OL>
  -   <LI>There's a known compilation problem with <B>NeXT</B>. Knock out the
  -    2nd argument to <CODE>setjmp</CODE> when your compiler complains.<BR><BR>
  -   </LI>
  - 
  -   <LI><CODE>exec cgi=""</CODE> produces reasonable <B>malformed header</B>
  -   responses when used to invoke non-CGI scripts.<BR>
  -   The NCSA code ignores the missing header. (bad idea)<BR>
  -   Solution: write CGI to the CGI spec or use <CODE>exec cmd=""</CODE> instead.
  -   <P>We might add <CODE>virtual</CODE> support to <CODE>exec cmd</CODE> to
  -   make up for this difference.</P>
  - 
  -   <LI>A <I>scoreboard</I> file for process management is currently
  -   created in <B>/tmp</B>. We now find this to be a bad idea, and have plans
  -   to move it into the <CODE>/logs</CODE> directory along with other
  -   files created by Apache.
  -   <P>If you have any <B>/tmp</B> cleaning scripts (e.g. from crontab), you
  -   should have them ignore the scoreboard file, which is named 
  -   <B>/tmp/htstatus.XXXXXXX</B>. If the scoreboard file is damaged, Apache
  -   can become very confused (a SIGHUP repairs the damage).  Furthermore, not
  -   having a /tmp at all can cause disastrous results, as there's no error 
  -   checking yet.<P>  
  - 
  -   <LI>Putting authorization information (like AuthName and AuthType) into a 
  -   &lt;Directory&gt; directive without a "requires" field in the &lt;Limit&gt;
  -   directive can result in a core dump.<P>
  - 
  -   <LI>AddIcon is broken. The fix is to change<BR>
  -   <CODE>
  -   { "AddIcon", add_icon, BY_<B>TYPE</B>, DIR_CMD_PERMS, ITERATE2,
  -   </CODE>
  -   <BR>to<BR>
  -   <CODE>
  -   { "AddIcon", add_icon, BY_<B>PATH</B>, DIR_CMD_PERMS, ITERATE2,
  -   </CODE>
  -   <P>in <CODE>mod_dir.c</CODE></P></LI>
  - 
  -   <LI>Under IRIX, the "Group" directive in httpd.conf needs to be a valid group name 
  -   (i.e. "nogroup") not the numeric group ID.  The distribution httpd.conf, and earlier 
  -   ones, had the default Group be "#-1", which was causing silent exits at startup. 
  - 
  - <P>
    
    
  !   <LI>Server push as regular CGI's don't work - actually, any normal CGI script 
  !   that outputs additional attributes to the Content-type line (separated by a 
  !   semicolon) gets that extra information chopped off, which means that the line
  !   <code>Content-type: multipart/x-mixed-replace; boundary=ThisRandomString</code>
  !   gets munged to just <code>Content-type: multipart/x-mixed-replace</code>, which 
  !   means it doesn't know what the boundary is, and fails.  You can get around this
  !   until 0.8.9 by making the CGI script a "No Parsed Header" script by prefixing the 
  !   name of the script with a "nph-", but then you have to be responsible for correct
  !   HTTP headers.  If the server-push animation is a constant, unchanging stream that
  !   terminates at some point, you could also put that stream into a whole file and 
  !   use the .asis file extension functionality.  
    
  ! <P>
    
  !   <LI>ErrorDocument is a little shaky, <CODE>" Some text %s</CODE> doesn't
  !     agree with the documentation.
    
  ! <P>
    
  ! </OL>
    
  ! <HR>
    
  ! <H2>Version 0.6.4 </H2>
  ! <OL>
  ! <LI>As with NCSA 1.3 (and 1.4 ?), some <B>HEAD</B> requests on
  ! directories without an <CODE>index.html</CODE> fail to be logged... harmless.</LI>
  ! <LI>Typo in Virtual Host #defines (accidentally defined #VIRUAL_HOST").  0.6.4b fixes this.
  ! </OL>
  ! <H2>Version 0.6.2 (first beta)</H2>
  ! <OL>
  ! 
  ! <LI><P>Apache error_log might show <CODE>httpd: caught SIGBUS, dumping core</CODE> after a successful redirect. We hope to fix this in 0.6.3</P></LI>
  ! 
  ! <LI><P>If you see a lot of messages such as,
  ! <PRE>access to /something: failed for foo.bar.com, reason: no multi in this directory</PRE>
  ! in your error log, don't panic !. It means "File not found", and we will
  ! fix it sooner or later.
  ! 
  ! </P>
  ! 
  ! <LI><P><B>WARNING</B>: Apache logs all URLs redirected <B>from</B> and
  ! <B>to</B>.  This isn't bug, it's deliberate, but you should be aware
  ! of it.  It's a recognition of the fact that the Common Log File format
  ! doesn't have any place to log the real object that was returned for
  ! the internally redirected request.  This will be changed soon.  
  ! 
  ! </P>
  ! 
  ! <LI><P>BSDI problems: One of the test machines (<a
  ! href="http://www.hyperreal.com/">Hyperreal</a>) has noticed "flocks" of
  ! child processes sucking up large amounts of resources when moderately
  ! hit (on a Pentium 90 running 1.1 serving ~2 hits/second).  Killing and
  ! restarting the daemon helps this disappear - it's being investigated,
  ! it might be a kernel bug, but then every server developer likes to say
  ! that.  Let us know how well it works for you if you are using BSDI and
  ! have a high number of hits.</P></LI>
    
    </OL>
    
  --- 51,119 ----
        This <A HREF="../../dist/contrib/patches/1.2/conneg-bug.patch">patch</A>
        fixes this problem. It also fixes the problem which makes Apache
        pick the last equally acceptable variant instead of the first.
  !     This will be tracked as
        <a href="http://www.apache.org/bugdb.cgi/full/94">PR#94</a>.
        </LI>
    
  +     <LI>
  +     The PATH_INFO part of a request URI cannot include the sequence
  +     <CODE>%2f</CODE>. This will be tracked as 
  +     <A HREF="http://www.apache.org/bugdb.cgi/full/543">PR#543</A>.
  +     </LI>
    
  !     <LI>Users of early 1.2 betas reported problems with many
  !     connections stuck in the FIN_WAIT_2 state due to server
  !     timeouts. Several changes were made during the beta testing of 1.2
  !     to reduce this problem as much as possible, although you may still
  !     see sockets in FIN_WAIT_2 state due to network or operating system
  !     issues outside the control of Apache. See our <A
  !     HREF="fin_wait_2.html">FIN_WAIT_2</A> page for more details.
  !     </LI>
    
  !     <LI>Compilation fails on SCO3 when using gcc instead of cc, complaining
  !     with "<CODE>gcc: noinline: No such file or directory</CODE>". Fix
  !     is given in <a href="http://www.apache.org/bugdb.cgi/full/695">PR#695</A>.
  !     </LI>
    
  !     <LI>If compilation fails complaining about "unknown symbol __inet_ntoa()"
  !     then you have probably installed version 8 of bind. You will need to
  !     explicitly link with the bind library by adding <CODE>-lbind</CODE> 
  !     to <CODE>EXTRA_LFLAGS</CODE> in <CODE>Configuration</CODE>. See
  !     <A HREF="http://www.apache.org/bugdb.cgi/full/616">PR#616</A>
  !     and the 
  !     <A HREF="http://192.168.2.4:8080/htdocs/manual/misc/FAQ.html#bind8.1">Apache FAQ</A>.
  !     </LI>
    
  !     <LI>The message "<CODE>created shared memory segment #730499</CODE>"
  !     in error_log is not an error and should be ignored. See 
  !     <a href="http://www.apache.org/bugdb.cgi/full/696">PR#696</A>.
  !     </LI>
    
  !     <LI>
  !     Compiling on Solaris 2 with SunSoft's C compiler gives the warning
  !     <CODE>"mod_include.c", line 1123: warning: end-of-loop code not
  !     reached</CODE>. This is a bogus warning and can be ignored.
  !     See <A HREF="http://www.apache.org/bugdb.cgi/full/681">PR#681</A>.
  !     </LI>
    
  !     <LI>
  !     There appears to be a problem on BSDI 2.1 with large numbers of
  !     virtual hosts. This appears similar to a file-descriptor limit
  !     but BSDI should not have this problem. This will be tracked as
  !     <A HREF="http://www.apache.org/bugdb.cgi/full/611">PR#611</A>.
  !     See also the 
  !     <A HREF="http://192.168.2.4:8080/htdocs/manual/misc/FAQ.html#fdlim">Apache
  !     FAQ</A>. 
  !     </LI>
    
  !     <LI>
  !     Solaris 2 has problems with large numbers of virtual hosts. This is
  !     because of an operating system limit of 256 file pointers, not due
  !     to Apache. 
  !     See also the 
  !     <A HREF="http://192.168.2.4:8080/htdocs/manual/misc/FAQ.html#fdlim">Apache
  !     FAQ</A>.
  !     </LI>
    
    </OL>
    
  
  
  
  1.3.2.1   +2 -2      apache/htdocs/manual/misc/nopgp.html
  
  Index: nopgp.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/misc/nopgp.html,v
  retrieving revision 1.3
  retrieving revision 1.3.2.1
  diff -C3 -r1.3 -r1.3.2.1
  *** nopgp.html	1997/06/04 11:42:58	1.3
  --- nopgp.html	1997/06/27 03:02:06	1.3.2.1
  ***************
  *** 69,75 ****
    Thanks.
    
    <UL>
  ! <LI><A HREF="http://www.yahoo.com/Science/Mathematics/Security_and_Encryption/">
    Yahoo - Science: Mathematics: Security and Encryption</A>
    <LI><A HREF="http://www.eff.org/pub/EFF/Policy/Crypto/">
    EFF Crypto/Privacy/Security Archive</A>
  --- 69,75 ----
    Thanks.
    
    <UL>
  ! <LI><A HREF="http://www.yahoo.com/Computers_and_Internet/Security_and_Encryption/">
    Yahoo - Science: Mathematics: Security and Encryption</A>
    <LI><A HREF="http://www.eff.org/pub/EFF/Policy/Crypto/">
    EFF Crypto/Privacy/Security Archive</A>
  ***************
  *** 81,87 ****
    ICLU - Your Rights in Cyberspace</A>
    </UL>
    
  ! 	<a href="http://bong.com/~brian">Brian</a>, <a href="mailto:brian@hyperreal.com">brian@hyperreal.com</a>
    
    <!--#include virtual="footer.html" -->
    </BODY>
  --- 81,87 ----
    ICLU - Your Rights in Cyberspace</A>
    </UL>
    
  !         <a href="http://www.behlendorf.com/~brian/">Brian</a>, <a href="mailto:brian@hyperreal.com">brian@hyperreal.com</a>
    
    <!--#include virtual="footer.html" -->
    </BODY>
  
  
  
  1.6.2.1   +1 -1      apache/htdocs/manual/misc/perf-bsd44.html
  
  Index: perf-bsd44.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/misc/perf-bsd44.html,v
  retrieving revision 1.6
  retrieving revision 1.6.2.1
  diff -C3 -r1.6 -r1.6.2.1
  *** perf-bsd44.html	1997/06/04 11:42:58	1.6
  --- perf-bsd44.html	1997/06/27 03:02:06	1.6.2.1
  ***************
  *** 219,225 ****
    <blockquote>It really does help if your kernel and frequently used utilities
    are fully optimized. Rebuilding the FreeBSD kernel on an AMD-133
    (486-class CPU) web-server with<BR>
  ! <code>    -m486 -fexpensive-optimizations -fomit-frame-ponter -O2</code><BR>
    helped reduce the number of "unable" errors, because the CPU was
    often maxed out.</blockquote>
    <P>
  --- 219,225 ----
    <blockquote>It really does help if your kernel and frequently used utilities
    are fully optimized. Rebuilding the FreeBSD kernel on an AMD-133
    (486-class CPU) web-server with<BR>
  ! <code>    -m486 -fexpensive-optimizations -fomit-frame-pointer -O2</code><BR>
    helped reduce the number of "unable" errors, because the CPU was
    often maxed out.</blockquote>
    <P>
  
  
  
  1.8.2.1   +2 -12     apache/htdocs/manual/misc/perf.html
  
  Index: perf.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/misc/perf.html,v
  retrieving revision 1.8
  retrieving revision 1.8.2.1
  diff -C3 -r1.8 -r1.8.2.1
  *** perf.html	1997/06/04 11:42:58	1.8
  --- perf.html	1997/06/27 03:02:07	1.8.2.1
  ***************
  *** 26,32 ****
    <LI><A HREF="#AUX">A/UX (Apple's UNIX)</A>
    <LI><A HREF="#BSD">BSD-based (BSDI, FreeBSD, etc)</A>
    <LI><A HREF="#DEC">Digital UNIX</A>
  - <LI><A HREF="#HP">Hewlett-Packard</A>
    <LI><A HREF="#Linux">Linux</A>
    <LI><A HREF="#SGI">SGI</A>
    <LI><A HREF="#Solaris">Solaris</A>
  --- 26,31 ----
  ***************
  *** 62,80 ****
    
    <UL> 
      <LI><A HREF="http://www.digital.com/info/internet/document/ias/tuning.html">DIGITAL
  !   	UNIX Tuning Parameters for Web Servers</A> 
      <LI>We have some <A HREF="perf-dec.html">newsgroup postings</A> on how to tune 
  ! 	Digital UNIX 3.2 and 4.0. 
    </UL>
  - 
  - <P><HR>
  - 
  - <H3><A NAME="HP">
  - Hewlett-Packard
  - </A></H3>
  - 
  - Some documentation on tuning HP machines can be found at <A
  - HREF="http://www.software.hp.com/internet/perf/tuning.html">http://www.software.hp.com/internet/perf/tuning.html</A>.
    
    <P><HR>
    
  --- 61,70 ----
    
    <UL> 
      <LI><A HREF="http://www.digital.com/info/internet/document/ias/tuning.html">DIGITAL
  !         UNIX Tuning Parameters for Web Servers</A> 
      <LI>We have some <A HREF="perf-dec.html">newsgroup postings</A> on how to tune 
  !         Digital UNIX 3.2 and 4.0. 
    </UL>
    
    <P><HR>
    
  
  
  
  1.6.2.1   +137 -137  apache/htdocs/manual/misc/vif-info.html
  
  Index: vif-info.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/misc/vif-info.html,v
  retrieving revision 1.6
  retrieving revision 1.6.2.1
  diff -C3 -r1.6 -r1.6.2.1
  *** vif-info.html	1997/06/04 11:42:59	1.6
  --- vif-info.html	1997/06/27 03:02:07	1.6.2.1
  ***************
  *** 49,63 ****
    that these are three distinct class C addresses in three distinct
    class C nets). Here are the ifconfigs:
    
  !   ifconfig le0 198.3.2.1 up -trailers	# config primary interface
    
  !   ifconfig vif0 198.4.3.2 up 		# config first virtual interface
  !   route delete net 198.4.3 198.4.3.2	# delete spurious route 
  !   route add host 198.4.3.2 198.4.3.2 0	# add route for this i/f
  ! 
  !   ifconfig vif1 198.5.4.3 up		# config second virtual interface
  !   route delete net 198.5.4 198.5.4.3	# delete spurious route 
  !   route add host 198.5.4.3 198.5.4.3 0	# add route for this i/f
    
    The route deletes are needed because the ifconfig creates a default
    route to the interface's network, which can cause problems; all that's
  --- 49,63 ----
    that these are three distinct class C addresses in three distinct
    class C nets). Here are the ifconfigs:
    
  !   ifconfig le0 198.3.2.1 up -trailers   # config primary interface
    
  !   ifconfig vif0 198.4.3.2 up            # config first virtual interface
  !   route delete net 198.4.3 198.4.3.2    # delete spurious route 
  !   route add host 198.4.3.2 198.4.3.2 0  # add route for this i/f
  ! 
  !   ifconfig vif1 198.5.4.3 up            # config second virtual interface
  !   route delete net 198.5.4 198.5.4.3    # delete spurious route 
  !   route add host 198.5.4.3 198.5.4.3 0  # add route for this i/f
    
    The route deletes are needed because the ifconfig creates a default
    route to the interface's network, which can cause problems; all that's
  ***************
  *** 91,101 ****
    and netinet/if_vif.h, configure your kernel with the number of
    virtual interfaces you want using a line like:
    
  ! pseudo-device	vif4		# Virtual IP interface
    
    in your configuration file, and the line
    
  ! netinet/if_vif.c	optional vif device-driver
    
    in the "files" file. Also, add the appropriate entries in conf.c, so
    that you can access the if_attach() routine when you open the device:
  --- 91,101 ----
    and netinet/if_vif.h, configure your kernel with the number of
    virtual interfaces you want using a line like:
    
  ! pseudo-device   vif4            # Virtual IP interface
    
    in your configuration file, and the line
    
  ! netinet/if_vif.c        optional vif device-driver
    
    in the "files" file. Also, add the appropriate entries in conf.c, so
    that you can access the if_attach() routine when you open the device:
  ***************
  *** 122,130 ****
    then, way down in the definition for cdevsw[]:
    
    --------------------
  ! 	vifopen,	vifclose,	vifread,	vifwrite,	/*14*/
  ! 	vifioctl,	nodev,		nodev,		0,
  ! 	0,	nodev,
    --------------------
    
    Make sure you remember the correct major device number, 14 in this case!
  --- 122,130 ----
    then, way down in the definition for cdevsw[]:
    
    --------------------
  !         vifopen,        vifclose,       vifread,        vifwrite,       /*14*/
  !         vifioctl,       nodev,          nodev,          0,
  !         0,      nodev,
    --------------------
    
    Make sure you remember the correct major device number, 14 in this case!
  ***************
  *** 139,150 ****
    ---------------------netinet/if_vif.h--------------------------------------
    typedef struct 
    {
  ! 	struct ifnet	vif_if;
  ! 	struct ifnet	*vif_sif;	/* slave interface */
  ! 	int		vif_flags;
    } vif_softc_t;
    
  ! #define	VIFMTU	(1024+512)
    ---------------------------------------------------------------------------
    
    and
  --- 139,150 ----
    ---------------------netinet/if_vif.h--------------------------------------
    typedef struct 
    {
  !         struct ifnet    vif_if;
  !         struct ifnet    *vif_sif;       /* slave interface */
  !         int             vif_flags;
    } vif_softc_t;
    
  ! #define VIFMTU  (1024+512)
    ---------------------------------------------------------------------------
    
    and
  ***************
  *** 165,171 ****
    #include "../net/netisr.h"
    #include "../net/route.h"
    
  ! #ifdef	INET
    #include "../netinet/in.h"
    #include "../netinet/in_systm.h"
    #include "../netinet/in_var.h"
  --- 165,171 ----
    #include "../net/netisr.h"
    #include "../net/route.h"
    
  ! #ifdef  INET
    #include "../netinet/in.h"
    #include "../netinet/in_systm.h"
    #include "../netinet/in_var.h"
  ***************
  *** 191,315 ****
    
    vifattach()
    {
  ! 	register int i;
  ! 	register struct ifnet *ifp;
  !         int	vifoutput(), vififioctl();
  ! 	
  ! 	for (i=0; i&lt;NVIF; i++)
  ! 	{
  ! 		ifp = &vif_softc[i].vif_if;
  ! 		ifp-&gt;if_name = "vif";
  ! 		ifp-&gt;if_unit = i;
  ! 		ifp-&gt;if_mtu = VIFMTU;
  ! 		ifp-&gt;if_flags = IFF_LOOPBACK | IFF_NOARP;
  ! 		ifp-&gt;if_ioctl = vififioctl;
  ! 		ifp-&gt;if_output = vifoutput;
  ! 		if_attach(ifp);
  ! 	}
    }
    
    vifopen(dev, flag)
    int dev, flag;
    {
  ! 	int unit;
  ! 	
  ! 	if (!vifs_inited)
  ! 	{
  ! 		vifattach();
  ! 		vifs_inited = 1;
  ! 		printf("vif initialized\n");
  ! 	}
  ! 	
  ! 	unit = minor(dev);
  ! 	if ((unit &lt; 0) || (unit &gt;= NVIF))
  ! 	{
  ! 		return ENXIO;
  ! 	}
  ! 	
  ! 	return 0;
    }
    
    vifclose(dev, flag)
    int dev, flag;
    {
  ! 	return 0;
    }
    
    vifread()
    {
  ! 	return ENXIO;
    }
    
    vifwrite()
    {
  ! 	return ENXIO;
    }
    
    vifselect()
    {
  ! 	return ENXIO;
    }
    
    vifoutput(ifp, m0, dst)
  ! 	struct ifnet *ifp;
  ! 	register struct mbuf *m0;
  ! 	struct sockaddr *dst;
  ! {
  ! 	int s;
  ! 	register struct ifqueue *ifq;
  ! 	struct mbuf *m;
  ! 	struct sockaddr_in *din;
  ! 	
  ! 	if (dst-&gt;sa_family != AF_INET)
  ! 	{
  ! 		printf("%s%d: can't handle af%d\n", 
  ! 		       ifp-&gt;if_name, ifp-&gt;if_unit,
  ! 		       dst-&gt;sa_family);
  ! 		m_freem(m0);
  ! 		return (EAFNOSUPPORT);
  ! 	}
  ! 
  ! 	din = (struct sockaddr_in *)dst;
  ! 	
  ! 	if (din-&gt;sin_addr.s_addr == IA_SIN(ifp-&gt;if_addrlist)-&gt;sin_addr.s_addr)
  ! 	{
  ! 		/* printf("%s%d: looping\n", ifp-&gt;if_name, ifp-&gt;if_unit); */
  ! 		
  ! 		/*
  ! 		 * Place interface pointer before the data
  ! 		 * for the receiving protocol.
  ! 		 */
  ! 		if (m0-&gt;m_off &lt;= MMAXOFF &&
  ! 		    m0-&gt;m_off &gt;= MMINOFF + sizeof(struct ifnet *)) {
  ! 			m0-&gt;m_off -= sizeof(struct ifnet *);
  ! 			m0-&gt;m_len += sizeof(struct ifnet *);
  ! 		} else {
  ! 			MGET(m, M_DONTWAIT, MT_HEADER);
  ! 			if (m == (struct mbuf *)0)
  ! 			  return (ENOBUFS);
  ! 			m-&gt;m_off = MMINOFF;
  ! 			m-&gt;m_len = sizeof(struct ifnet *);
  ! 			m-&gt;m_next = m0;
  ! 			m0 = m;
  ! 		}
  ! 		*(mtod(m0, struct ifnet **)) = ifp;
  ! 		s = splimp();
  ! 		ifp-&gt;if_opackets++;
  ! 		ifq = &ipintrq;
  ! 		if (IF_QFULL(ifq)) {
  ! 			IF_DROP(ifq);
  ! 			m_freem(m0);
  ! 			splx(s);
  ! 			return (ENOBUFS);
  ! 		}
  ! 		IF_ENQUEUE(ifq, m0);
  ! 		schednetisr(NETISR_IP);
  ! 		ifp-&gt;if_ipackets++;
  ! 		splx(s);
  ! 		return (0);
  ! 	}
    
  ! 	return EHOSTUNREACH;
    }
    
    /*
  --- 191,315 ----
    
    vifattach()
    {
  !         register int i;
  !         register struct ifnet *ifp;
  !         int     vifoutput(), vififioctl();
  !         
  !         for (i=0; i&lt;NVIF; i++)
  !         {
  !                 ifp = &vif_softc[i].vif_if;
  !                 ifp-&gt;if_name = "vif";
  !                 ifp-&gt;if_unit = i;
  !                 ifp-&gt;if_mtu = VIFMTU;
  !                 ifp-&gt;if_flags = IFF_LOOPBACK | IFF_NOARP;
  !                 ifp-&gt;if_ioctl = vififioctl;
  !                 ifp-&gt;if_output = vifoutput;
  !                 if_attach(ifp);
  !         }
    }
    
    vifopen(dev, flag)
    int dev, flag;
    {
  !         int unit;
  !         
  !         if (!vifs_inited)
  !         {
  !                 vifattach();
  !                 vifs_inited = 1;
  !                 printf("vif initialized\n");
  !         }
  !         
  !         unit = minor(dev);
  !         if ((unit &lt; 0) || (unit &gt;= NVIF))
  !         {
  !                 return ENXIO;
  !         }
  !         
  !         return 0;
    }
    
    vifclose(dev, flag)
    int dev, flag;
    {
  !         return 0;
    }
    
    vifread()
    {
  !         return ENXIO;
    }
    
    vifwrite()
    {
  !         return ENXIO;
    }
    
    vifselect()
    {
  !         return ENXIO;
    }
    
    vifoutput(ifp, m0, dst)
  !         struct ifnet *ifp;
  !         register struct mbuf *m0;
  !         struct sockaddr *dst;
  ! {
  !         int s;
  !         register struct ifqueue *ifq;
  !         struct mbuf *m;
  !         struct sockaddr_in *din;
  !         
  !         if (dst-&gt;sa_family != AF_INET)
  !         {
  !                 printf("%s%d: can't handle af%d\n", 
  !                        ifp-&gt;if_name, ifp-&gt;if_unit,
  !                        dst-&gt;sa_family);
  !                 m_freem(m0);
  !                 return (EAFNOSUPPORT);
  !         }
  ! 
  !         din = (struct sockaddr_in *)dst;
  !         
  !         if (din-&gt;sin_addr.s_addr == IA_SIN(ifp-&gt;if_addrlist)-&gt;sin_addr.s_addr)
  !         {
  !                 /* printf("%s%d: looping\n", ifp-&gt;if_name, ifp-&gt;if_unit); */
  !                 
  !                 /*
  !                  * Place interface pointer before the data
  !                  * for the receiving protocol.
  !                  */
  !                 if (m0-&gt;m_off &lt;= MMAXOFF &&
  !                     m0-&gt;m_off &gt;= MMINOFF + sizeof(struct ifnet *)) {
  !                         m0-&gt;m_off -= sizeof(struct ifnet *);
  !                         m0-&gt;m_len += sizeof(struct ifnet *);
  !                 } else {
  !                         MGET(m, M_DONTWAIT, MT_HEADER);
  !                         if (m == (struct mbuf *)0)
  !                           return (ENOBUFS);
  !                         m-&gt;m_off = MMINOFF;
  !                         m-&gt;m_len = sizeof(struct ifnet *);
  !                         m-&gt;m_next = m0;
  !                         m0 = m;
  !                 }
  !                 *(mtod(m0, struct ifnet **)) = ifp;
  !                 s = splimp();
  !                 ifp-&gt;if_opackets++;
  !                 ifq = &ipintrq;
  !                 if (IF_QFULL(ifq)) {
  !                         IF_DROP(ifq);
  !                         m_freem(m0);
  !                         splx(s);
  !                         return (ENOBUFS);
  !                 }
  !                 IF_ENQUEUE(ifq, m0);
  !                 schednetisr(NETISR_IP);
  !                 ifp-&gt;if_ipackets++;
  !                 splx(s);
  !                 return (0);
  !         }
    
  !         return EHOSTUNREACH;
    }
    
    /*
  ***************
  *** 317,341 ****
     */
    /* ARGSUSED */
    vififioctl(ifp, cmd, data)
  ! 	register struct ifnet *ifp;
  ! 	int cmd;
  ! 	caddr_t data;
  ! {
  ! 	int error = 0;
  ! 
  ! 	switch (cmd) {
  ! 
  ! 	case SIOCSIFADDR:
  ! 		ifp-&gt;if_flags |= IFF_UP;
  ! 		/*
  ! 		 * Everything else is done at a higher level.
  ! 		 */
  ! 		break;
  ! 
  ! 	default:
  ! 		error = EINVAL;
  ! 	}
  ! 	return (error);
    }
    
    vifioctl(dev, cmd, arg, mode)
  --- 317,341 ----
     */
    /* ARGSUSED */
    vififioctl(ifp, cmd, data)
  !         register struct ifnet *ifp;
  !         int cmd;
  !         caddr_t data;
  ! {
  !         int error = 0;
  ! 
  !         switch (cmd) {
  ! 
  !         case SIOCSIFADDR:
  !                 ifp-&gt;if_flags |= IFF_UP;
  !                 /*
  !                  * Everything else is done at a higher level.
  !                  */
  !                 break;
  ! 
  !         default:
  !                 error = EINVAL;
  !         }
  !         return (error);
    }
    
    vifioctl(dev, cmd, arg, mode)
  ***************
  *** 344,356 ****
    caddr_t arg;
    int mode;
    {
  ! 	int unit;
  ! 	
  ! 	unit = minor(dev);
  ! 	if ((unit &lt; 0) || (unit &gt;= NVIF))
  ! 	  return ENXIO;
  ! 	
  ! 	return EINVAL;
    }
    ---------------------------------------------------------------------------- 
    
  --- 344,356 ----
    caddr_t arg;
    int mode;
    {
  !         int unit;
  !         
  !         unit = minor(dev);
  !         if ((unit &lt; 0) || (unit &gt;= NVIF))
  !           return ENXIO;
  !         
  !         return EINVAL;
    }
    ---------------------------------------------------------------------------- 
    
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.1   +0 -0      apache/htdocs/manual/misc/descriptors.html
  
  Index: descriptors.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/misc/descriptors.html,v
  retrieving revision 1.1
  retrieving revision 1.1.2.1
  diff -C3 -r1.1 -r1.1.2.1
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.56.2.1  +4 -1      apache/htdocs/manual/mod/core.html
  
  Index: core.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/mod/core.html,v
  retrieving revision 1.56
  retrieving revision 1.56.2.1
  diff -C3 -r1.56 -r1.56.2.1
  *** core.html	1997/06/04 16:14:13	1.56
  --- core.html	1997/06/27 03:02:11	1.56.2.1
  ***************
  *** 836,841 ****
  --- 836,844 ----
    <dd>
    <!--%plaintext &lt;?INDEX {\tt FollowSymLinks} option&gt; -->
    The server will follow symbolic links in this directory.
  + <b>Note</b>: even though the server follows the symlink it does <i>not</i>
  + change the pathname used to match against <code>&lt;Directory&gt;</code>
  + sections.
    <dt>Includes
    <dd>
    <!--%plaintext &lt;?INDEX {\tt Includes} option&gt; -->
  ***************
  *** 1158,1164 ****
    <A name="sendbuffersize"><h2>SendBufferSize directive</h2></A>
    <!--%plaintext &lt;?INDEX {\tt SendBufferSize} directive&gt; -->
    <strong>Syntax:</strong> SendBufferSize <em>bytes</em><br>
  ! <strong>Context:</strong> server config, virtual host<br>
    <strong>Status:</strong> core<p>
    
    The server will set the TCP buffer size to the number of bytes
  --- 1161,1167 ----
    <A name="sendbuffersize"><h2>SendBufferSize directive</h2></A>
    <!--%plaintext &lt;?INDEX {\tt SendBufferSize} directive&gt; -->
    <strong>Syntax:</strong> SendBufferSize <em>bytes</em><br>
  ! <strong>Context:</strong> server config<br>
    <strong>Status:</strong> core<p>
    
    The server will set the TCP buffer size to the number of bytes
  
  
  
  1.8.2.1   +40 -40    apache/htdocs/manual/mod/mod_auth_anon.html
  
  Index: mod_auth_anon.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_auth_anon.html,v
  retrieving revision 1.8
  retrieving revision 1.8.2.1
  diff -C3 -r1.8 -r1.8.2.1
  *** mod_auth_anon.html	1997/06/04 16:14:15	1.8
  --- mod_auth_anon.html	1997/06/27 03:02:12	1.8.2.1
  ***************
  *** 61,83 ****
    <strong>Status:</strong> Extension<br>
    <strong>Module:</strong> mod_auth_anon<p>
    
  ! 	A list of one or more 'magic' userIDs which are allowed access
  ! 	without password verification. The userIDs are space separated.
  ! 	It is possible to use the ' and " quotes to allow a space in
  ! 	a userID as well as the \ escape character.
  ! 	<p>
  ! 	Please note that the comparison is <b>case-IN-sensitive</b>.
  ! 	<br>
  ! 	I strongly suggest that the magic username '<code>anonymous</code>'
  ! 	is always one of the allowed userIDs.
  ! 	<p>
  ! 	Example:<br>
  ! 	<code>
  ! 	Anonymous: anonymous "Not Registered" 'I don\'t know'
  ! 	</code><p>
  ! 	This would allow the user to enter without password verification
  ! 	by using the userId's 'anonymous', 'AnonyMous','Not Registered' and
  ! 	'I Don't Know'.
    <HR>
    
    <A name="Authoritative"><h2>Anonymous_Authoritative</h2></A>
  --- 61,83 ----
    <strong>Status:</strong> Extension<br>
    <strong>Module:</strong> mod_auth_anon<p>
    
  !         A list of one or more 'magic' userIDs which are allowed access
  !         without password verification. The userIDs are space separated.
  !         It is possible to use the ' and " quotes to allow a space in
  !         a userID as well as the \ escape character.
  !         <p>
  !         Please note that the comparison is <b>case-IN-sensitive</b>.
  !         <br>
  !         I strongly suggest that the magic username '<code>anonymous</code>'
  !         is always one of the allowed userIDs.
  !         <p>
  !         Example:<br>
  !         <code>
  !         Anonymous: anonymous "Not Registered" 'I don\'t know'
  !         </code><p>
  !         This would allow the user to enter without password verification
  !         by using the userId's 'anonymous', 'AnonyMous','Not Registered' and
  !         'I Don't Know'.
    <HR>
    
    <A name="Authoritative"><h2>Anonymous_Authoritative</h2></A>
  ***************
  *** 91,102 ****
            When set 'on', there is no
            fall-through to other authorization methods. So if a
            userID does not match the values specified in the
  ! 	<code>Anonymous</code> directive, access is denied.
  ! 	<p>
  ! 	Be sure you know what you are doing when you decide to switch 
  ! 	it on. And remember that it is the linking order of the modules
  ! 	(in the Configuration / Make file) which details the order
  ! 	in which the Authorization modules are queried.
    <hr>
    
    <A name="LogEmail"><h2>Anonymous_LogEmail</h2></A>
  --- 91,102 ----
            When set 'on', there is no
            fall-through to other authorization methods. So if a
            userID does not match the values specified in the
  !         <code>Anonymous</code> directive, access is denied.
  !         <p>
  !         Be sure you know what you are doing when you decide to switch 
  !         it on. And remember that it is the linking order of the modules
  !         (in the Configuration / Make file) which details the order
  !         in which the Authorization modules are queried.
    <hr>
    
    <A name="LogEmail"><h2>Anonymous_LogEmail</h2></A>
  ***************
  *** 107,114 ****
    <strong>Status:</strong> Extension<br>
    <strong>Module:</strong> mod_auth_anon<p>
    
  ! 	When set 'on', the default, the 'password' entered (which hopefully
  ! 	contains a sensible email address) is logged in the httpd-log file.
    <hr>
    
    <A name="MustGiveEmail"><h2>Anonymous_MustGiveEmail</h2></a>
  --- 107,114 ----
    <strong>Status:</strong> Extension<br>
    <strong>Module:</strong> mod_auth_anon<p>
    
  !         When set 'on', the default, the 'password' entered (which hopefully
  !         contains a sensible email address) is logged in the httpd-log file.
    <hr>
    
    <A name="MustGiveEmail"><h2>Anonymous_MustGiveEmail</h2></a>
  ***************
  *** 120,127 ****
    <strong>Status:</strong> Extension<br>
    <strong>Module:</strong> mod_auth_anon<p>
    
  ! 	Specifies whether the user must specify an email
  ! 	address as the password.  This prohibits blank passwords.
    <HR>
    
    <A name="NoUserID"><h2>Anonymous_NoUserID</h2></A>
  --- 120,127 ----
    <strong>Status:</strong> Extension<br>
    <strong>Module:</strong> mod_auth_anon<p>
    
  !         Specifies whether the user must specify an email
  !         address as the password.  This prohibits blank passwords.
    <HR>
    
    <A name="NoUserID"><h2>Anonymous_NoUserID</h2></A>
  ***************
  *** 132,142 ****
    <strong>Status:</strong> Extension<br>
    <strong>Module:</strong> mod_auth_anon<p>
    
  ! 	When set 'on', users can leave
  ! 	the userID (and perhaps the password field) empty. This
  ! 	can be very convenient for MS-Explorer users who can
  ! 	just hit return or click directly on the OK button; which
  ! 	seems a natural reaction.
    
    <hr>
    
  --- 132,142 ----
    <strong>Status:</strong> Extension<br>
    <strong>Module:</strong> mod_auth_anon<p>
    
  !         When set 'on', users can leave
  !         the userID (and perhaps the password field) empty. This
  !         can be very convenient for MS-Explorer users who can
  !         just hit return or click directly on the OK button; which
  !         seems a natural reaction.
    
    <hr>
    
  ***************
  *** 148,156 ****
    <strong>Status:</strong> Extension<br>
    <strong>Module:</strong> mod_auth_anon<p>
    
  ! 	When set 'on' the 'password' entered is
  ! 	checked for at least one '@' and a '.' to encourage users to enter
  ! 	valid email addresses (see the above <code>Auth_LogEmail</code>).
    
    <hr><a name="Example"><h2>Example</h2></a>
    
  --- 148,156 ----
    <strong>Status:</strong> Extension<br>
    <strong>Module:</strong> mod_auth_anon<p>
    
  !         When set 'on' the 'password' entered is
  !         checked for at least one '@' and a '.' to encourage users to enter
  !         valid email addresses (see the above <code>Auth_LogEmail</code>).
    
    <hr><a name="Example"><h2>Example</h2></a>
    
  ***************
  *** 180,189 ****
    <dl>
    <dt><code>
    Anonymous        anonymous guest www test welcome<p>
  ! Anonymous_MustGiveEmail	on<br>
    Anonymous_VerifyEmail    on<br>
  ! Anonymous_NoUserId    	off<br>
  ! Anonymous_LogEmail    	on<br>
    <p>
    AuthName                Use 'anonymous' & Email address for guest entry<br>
    AuthType                basic<p>
  --- 180,189 ----
    <dl>
    <dt><code>
    Anonymous        anonymous guest www test welcome<p>
  ! Anonymous_MustGiveEmail on<br>
    Anonymous_VerifyEmail    on<br>
  ! Anonymous_NoUserId      off<br>
  ! Anonymous_LogEmail      on<br>
    <p>
    AuthName                Use 'anonymous' & Email address for guest entry<br>
    AuthType                basic<p>
  ***************
  *** 217,224 ****
        </dd>
    <dt>Version 0.5<br></dt>
        <dd>Added 'VerifyEmail' and 'LogEmail' options. Multiple
  ! 	'anonymous' tokens allowed. more docs. Added Authoritative
  ! 	functionality.
        </dd>
    </dl>
    
  --- 217,224 ----
        </dd>
    <dt>Version 0.5<br></dt>
        <dd>Added 'VerifyEmail' and 'LogEmail' options. Multiple
  !         'anonymous' tokens allowed. more docs. Added Authoritative
  !         functionality.
        </dd>
    </dl>
    
  
  
  
  1.6.2.1   +20 -0     apache/htdocs/manual/mod/mod_dir.html
  
  Index: mod_dir.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_dir.html,v
  retrieving revision 1.6
  retrieving revision 1.6.2.1
  diff -C3 -r1.6 -r1.6.2.1
  *** mod_dir.html	1997/06/04 16:14:19	1.6
  --- mod_dir.html	1997/06/27 03:02:12	1.6.2.1
  ***************
  *** 324,329 ****
  --- 324,349 ----
    <dd>
    <!--%plaintext &lt;?INDEX {\tt SuppressDescription} index option&gt; -->
    This will suppress the file description in fancy indexing listings.
  + <dt>IconHeight[=pixels] (<EM>Apache 1.3 and later</EM>)
  + <dd>
  + <!--%plaintext &lt;?INDEX {\tt IconHeight} index option&gt; -->
  + Presence of this option, when used with IconWidth, will cause the server
  + to include <SAMP>HEIGHT</SAMP> and <SAMP>WIDTH</SAMP> attributes in the
  + <SAMP>IMG</SAMP> tag for the file icon.  This allows browser to
  + precalculate the page layout without having to wait until all the
  + images have been loaded.  If no value is given for the option, it
  + defaults to the standard height of the icons supplied with the Apache
  + software.
  + <dt>IconWidth[=pixels] (<EM>Apache 1.3 and later</EM>)
  + <dd>
  + <!--%plaintext &lt;?INDEX {\tt IconWidth} index option&gt; -->
  + Presence of this option, when used with IconHeight, will cause the server
  + to include <SAMP>HEIGHT</SAMP> and <SAMP>WIDTH</SAMP> attributes in the
  + <SAMP>IMG</SAMP> tag for the file icon.  This allows browser to
  + precalculate the page layout without having to wait until all the
  + images have been loaded.  If no value is given for the option, it
  + defaults to the standard width of the icons supplied with the Apache
  + software.
    </dl>
    This default is that no options are enabled. If multiple IndexOptions
    could apply to a directory, then the most specific one is taken complete;
  
  
  
  1.13.2.1  +6 -6      apache/htdocs/manual/mod/mod_include.html
  
  Index: mod_include.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_include.html,v
  retrieving revision 1.13
  retrieving revision 1.13.2.1
  diff -C3 -r1.13 -r1.13.2.1
  *** mod_include.html	1997/06/04 16:14:21	1.13
  --- mod_include.html	1997/06/27 03:02:13	1.13.2.1
  ***************
  *** 309,323 ****
        Unix egrep command.
    
    <DT>( <I>test_condition</I> )
  ! 	<DD>true if <I>test_condition</I> is true 
    <DT>! <I>test_condition</I>
  ! 	<DD>true if <I>test_condition</I> is false
    <DT><I>test_condition1</I> && <I>test_condition2</I>
  ! 	<DD>true if both <I>test_condition1</I> and
  ! 	<I>test_condition2</I> are true 
    <DT><I>test_condition1</I> || <I>test_condition2</I>
  ! 	<DD>true if either <I>test_condition1</I> or
  ! 	<I>test_condition2</I> is true 
    </DL>
    
    <P> "<I>=</I>" and "<I>!=</I>" bind more tightly than "<I>&&</I>" and
  --- 309,323 ----
        Unix egrep command.
    
    <DT>( <I>test_condition</I> )
  !         <DD>true if <I>test_condition</I> is true 
    <DT>! <I>test_condition</I>
  !         <DD>true if <I>test_condition</I> is false
    <DT><I>test_condition1</I> && <I>test_condition2</I>
  !         <DD>true if both <I>test_condition1</I> and
  !         <I>test_condition2</I> are true 
    <DT><I>test_condition1</I> || <I>test_condition2</I>
  !         <DD>true if either <I>test_condition1</I> or
  !         <I>test_condition2</I> is true 
    </DL>
    
    <P> "<I>=</I>" and "<I>!=</I>" bind more tightly than "<I>&&</I>" and
  
  
  
  1.22.2.1  +2 -2      apache/htdocs/manual/mod/mod_proxy.html
  
  Index: mod_proxy.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_proxy.html,v
  retrieving revision 1.22
  retrieving revision 1.22.2.1
  diff -C3 -r1.22 -r1.22.2.1
  *** mod_proxy.html	1997/06/04 16:14:23	1.22
  --- mod_proxy.html	1997/06/27 03:02:13	1.22.2.1
  ***************
  *** 297,303 ****
    <li><a href="#shortname">Using Netscape hostname shortcuts</a>
    <li><a href="#mimetypes">Why doesn't file type <i>xxx</i> download via FTP?</a>
    <li><a href="#startup">Why does Apache start more slowly when using the
  ! 	proxy module?</a>
    <li><a href="#socks">Can I use the Apache proxy module with my SOCKS proxy?</a>
    </ul>
    
  --- 297,303 ----
    <li><a href="#shortname">Using Netscape hostname shortcuts</a>
    <li><a href="#mimetypes">Why doesn't file type <i>xxx</i> download via FTP?</a>
    <li><a href="#startup">Why does Apache start more slowly when using the
  !         proxy module?</a>
    <li><a href="#socks">Can I use the Apache proxy module with my SOCKS proxy?</a>
    </ul>
    
  ***************
  *** 337,343 ****
    </pre>
    
    <h2><a name="startup">Why does Apache start more slowly when using the
  ! 	proxy module?</a></h2>
    
    If you're using the <code>ProxyBlock</code> or <code>NoCache</code>
    directives, hostnames' IP addresses are looked up and cached during
  --- 337,343 ----
    </pre>
    
    <h2><a name="startup">Why does Apache start more slowly when using the
  !         proxy module?</a></h2>
    
    If you're using the <code>ProxyBlock</code> or <code>NoCache</code>
    directives, hostnames' IP addresses are looked up and cached during
  
  
  
  1.9.2.1   +4 -4      apache/htdocs/manual/mod/mod_rewrite.html
  
  Index: mod_rewrite.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_rewrite.html,v
  retrieving revision 1.9
  retrieving revision 1.9.2.1
  diff -C3 -r1.9 -r1.9.2.1
  *** mod_rewrite.html	1997/06/04 16:14:23	1.9
  --- mod_rewrite.html	1997/06/27 03:02:13	1.9.2.1
  ***************
  *** 988,997 ****
        which will be expanded. You can use this flag more than once to set more
        than one variable. The variables can be later dereferenced at a lot of
        situations, but the usual location will be from within XSSI (via
  ! 	<tt>&lt;!--#echo var="VAR"--&gt;</tt>) or CGI (e.g. <tt>$ENV{'VAR'}</tt>).
  ! 	But additionally you can also dereference it in a following RewriteCond
  ! 	pattern via <tt>%{ENV:VAR}</tt>. Use this to strip but remember
  ! 	information from URLs. 
    </ul>
    
    <p>
  --- 988,997 ----
        which will be expanded. You can use this flag more than once to set more
        than one variable. The variables can be later dereferenced at a lot of
        situations, but the usual location will be from within XSSI (via
  !         <tt>&lt;!--#echo var="VAR"--&gt;</tt>) or CGI (e.g. <tt>$ENV{'VAR'}</tt>).
  !         But additionally you can also dereference it in a following RewriteCond
  !         pattern via <tt>%{ENV:VAR}</tt>. Use this to strip but remember
  !         information from URLs. 
    </ul>
    
    <p>
  
  
  
  1.6.2.1   +1 -1      apache/htdocs/manual/mod/mod_status.html
  
  Index: mod_status.html
  ===================================================================
  RCS file: /export/home/cvs/apache/htdocs/manual/mod/mod_status.html,v
  retrieving revision 1.6
  retrieving revision 1.6.2.1
  diff -C3 -r1.6 -r1.6.2.1
  *** mod_status.html	1997/06/04 16:14:24	1.6
  --- mod_status.html	1997/06/27 03:02:14	1.6.2.1
  ***************
  *** 90,96 ****
    Do this by adding the following to the AUX_CFLAGS line in the
    "Configuration" file and then recompiling as usual.
    <pre>
  ! 	AUX_CFLAGS= (something) -DSTATUS
    </pre>
    
    <BLOCKQUOTE>
  --- 90,96 ----
    Do this by adding the following to the AUX_CFLAGS line in the
    "Configuration" file and then recompiling as usual.
    <pre>
  !         AUX_CFLAGS= (something) -DSTATUS
    </pre>
    
    <BLOCKQUOTE>