home *** CD-ROM | disk | FTP | other *** search
/ Big Green CD 8 / BGCD_8_Dev.iso / NEXTSTEP / UNIX / Web / Servers / apache-1.2.4-MIHS / original-source / src / CHANGES < prev    next >
Encoding:
Text File  |  1997-08-21  |  81.9 KB  |  2,011 lines

  1.  
  2. Changes with Apache 1.2.4
  3.  
  4.   *) The ProxyRemote change in 1.2.3 introduced a bug resulting in the proxy
  5.      always making requests with the full-URI instead of just the URI path.
  6.      [Marc Slemko, Roy Fielding]
  7.  
  8.   *) Add -lm for AIX versions >= 4.2 to allow Apache to link properly
  9.      on this platform.  [Marc Slemko]
  10.  
  11. Changes with Apache 1.2.3
  12.  
  13.   *) The request to a remote proxy was mangled if it was generated as the
  14.      result of a ProxyPass directive. URL schemes other than http:// were not
  15.      supported when ProxyRemote was used. PR#260, PR#656, PR#699, PR#713,
  16.      PR#812 [Lars Eilebrecht]
  17.  
  18.   *) Fixed proxy-pass-through feature of mod_rewrite; Added error logging
  19.      information for case where proxy module is not available. [Marc Slemko]
  20.  
  21.   *) Force proxy to always respond as HTTP/1.0, which it was failing to
  22.      do for errors and cached responses.  [Roy Fielding]
  23.  
  24.   *) PORT: Improved support for ConvexOS 11.  [Jeff Venters]
  25.  
  26. Changes with Apache 1.2.2 [not released]
  27.  
  28.   *) Fixed another long-standing bug in sub_req_lookup_file where it would
  29.      happily skip past access checks on subdirectories looked up with relative
  30.      paths.  (It's used by mod_dir, mod_negotiation, and mod_include.)
  31.      [Dean Gaudet]
  32.  
  33.   *) Add lockfile name to error message printed out when
  34.      USE_FLOCK_SERIALIZED_ACCEPT is defined.
  35.      [Marc Slemko]
  36.  
  37.   *) Enhanced the chunking and error handling inside the buffer functions.
  38.      [Dean Gaudet, Roy Fielding]
  39.  
  40.   *) When merging the main server's <Directory> and <Location> sections into
  41.      a vhost, put the main server's first and the vhost's second.  Otherwise
  42.      the vhost can't override the main server.  [Dean Gaudet] PR#717
  43.  
  44.   *) The <Directory> code would merge and re-merge the same section after
  45.      a match was found, possibly causing problems with some modules.
  46.      [Dean Gaudet]
  47.  
  48.   *) Fixed an infinite loop in mod_imap for references above the server root.
  49.      [Dean Gaudet] PR#748
  50.  
  51.   *) mod_include cleanup showed that handle_else was being used to handle
  52.      endif.  It didn't cause problems, but it was cleaned up too.
  53.      [Howard Fear]
  54.  
  55.   *) Last official synchonisation of mod_rewrite with author version (because
  56.      mod_rewrite is now directly developed by the author at the Apache Group):
  57.      o added diff between mod_rewrite 3.0.6+ and 3.0.9
  58.        minus WIN32/NT stuff, but plus copyright removement.
  59.        In detail:
  60.        - workaround for detecting infinite rewriting loops
  61.        - fixed setting of env vars when "-" is used as subst string
  62.        - fixed forced response code on redirects (PR#777)
  63.        - fixed cases where r->args is ""
  64.        - kludge to disable locking on pipes under braindead SunOS
  65.        - fix for rewritelog in cases where remote hostname is unknown
  66.        - fixed totally damaged request_rec walk-back loop
  67.      o remove static from local data and add static to global ones.
  68.      o replaced ugly proxy finding stuff by simple
  69.        find_linked_module("mod_proxy") call.
  70.      o added missing negation char on rewritelog()
  71.      o fixed a few comment typos
  72.      [Ralf S. Engelschall]
  73.  
  74.   *) Anonymous_LogEmail was logging on each subrequest.
  75.      [Dean Gaudet] PR#421, PR#868
  76.  
  77.   *) "force-response-1.0" now only applies to requests which are HTTP/1.0 to
  78.      begin with.  "nokeepalive" now works for HTTP/1.1 clients.  Added
  79.      "downgrade-1.0" which causes Apache to pretend it received a 1.0.
  80.      Additionally mod_browser now triggers during translate_name to workaround
  81.      a deficiency in the header_parse phase.
  82.      [Dean Gaudet] PR#875
  83.  
  84.   *) get_client_block() returns wrong length if policy is 
  85.      REQUEST_CHUNKED_DECHUNK.
  86.      [Kenichi Hori <ken@d2.bs1.fc.nec.co.jp>] PR#815
  87.  
  88.   *) Properly treat <files> container like other containers in mod_info.
  89.      [Marc Slemko] PR#848
  90.  
  91.   *) The proxy didn't treat the "Host:" keyword of the host header as case-
  92.      insensitive.  The proxy would corrupt the first line of a response from
  93.      an HTTP/0.9 server.  [Kenichi Hori <ken@d2.bs1.fc.nec.co.jp>] PR#813,814
  94.  
  95.   *) mod_include would log some bogus values occasionally.
  96.      [Skip Montanaro <skip@calendar.com>, Marc Slemko] PR#797
  97.  
  98.   *) PORT: The slack fd changes in 1.2.1 introduced a problem with SIGHUP
  99.      under Solaris 2.x (up through 2.5.1).  It has been fixed.
  100.      [Dean Gaudet] PR#832
  101.  
  102.   *) API: In HTTP/1.1, whether or not a request message contains a body
  103.      is independent of the request method and based solely on the presence
  104.      of a Content-Length or Transfer-Encoding.  Therefore, our default
  105.      handlers need to be prepared to read a body even if they don't know
  106.      what to do with it; otherwise, the body would be mistaken for the
  107.      next request on a persistent connection.  discard_request_body()
  108.      has been added to take care of that.  [Roy Fielding] PR#378
  109.  
  110.   *) API: Symbol APACHE_RELEASE provides a numeric form of the Apache
  111.      release version number, such that it always increases along the
  112.      same lines as our source code branching.  [Roy Fielding]
  113.  
  114.   *) Minor oversight on multiple variants fixed.  [Paul Sutton] PR#94
  115.  
  116. Changes with Apache 1.2.1
  117.  
  118.   *) SECURITY: Don't serve file system objects unless they are plain files,
  119.      symlinks, or directories.  This prevents local users from using pipes
  120.      or named sockets to invoke programs for an extremely crude form of
  121.      CGI.  [Dean Gaudet]
  122.  
  123.   *) SECURITY: HeaderName and ReadmeName were settable in .htaccess and
  124.      could contain "../" allowing a local user to "publish" any file on
  125.      the system.  No slashes are allowed now.  [Dean Gaudet]
  126.  
  127.   *) SECURITY: It was possible to violate the symlink Options using mod_dir
  128.      (headers, readmes, titles), mod_negotiation (type maps), or
  129.      mod_cern_meta (meta files).  [Dean Gaudet]
  130.  
  131.   *) SECURITY: Apache will refuse to run as "User root" unless
  132.      BIG_SECURITY_HOLE is defined at compile time.  [Dean Gaudet]
  133.  
  134.   *) CONFIG: If a symlink pointed to a directory then it would be disallowed
  135.      if it contained a .htaccess disallowing symlinks.  This is contrary
  136.      to the rule that symlink permissions are tested with the symlink
  137.      options of the parent directory.  [Dean Gaudet] PR#353
  138.  
  139.   *) CONFIG: The LockFile directive can be used to place the serializing
  140.      lockfile in any location.  It previously defaulted to /usr/tmp/htlock.
  141.      [Somehow it took four of us: Randy Terbush, Jim Jagielski, Dean Gaudet,
  142.      Marc Slemko]
  143.  
  144.   *) Request processing now retains state of whether or not the request
  145.      body has been read, so that internal redirects and subrequests will
  146.      not try to read it twice (and block). [Roy Fielding]
  147.  
  148.   *) Add a placeholder in modules/Makefile to avoid errors with certain
  149.      makes. [Marc Slemko]
  150.  
  151.   *) QUERY_STRING was unescaped in mod_include, it shouldn't be.
  152.      [Dean Gaudet] PR#644
  153.  
  154.   *) mod_include was not properly changing the current directory.
  155.      [Marc Slemko] PR#742
  156.  
  157.   *) Attempt to work around problems with third party libraries that do not
  158.      handle high numbered descriptors (examples include bind, and
  159.      solaris libc).  On all systems apache attempts to keep all permanent
  160.      descriptors above 15 (called the low slack line).  Solaris users
  161.      can also benefit from adding -DHIGH_SLACK_LINE=256 to EXTRA_CFLAGS
  162.      which keeps all non-FILE * descriptors above 255.  On all systems
  163.      this should make supporting large numbers of vhosts with many open
  164.      log files more feasible.  If this causes trouble please report it,
  165.      you can disable this workaround by adding -DNO_SLACK to EXTRA_CFLAGS.
  166.      [Dean Gaudet] various PRs
  167.  
  168.   *) Related to the last entry, network sockets are now opened before
  169.      log files are opened.  The only known case where this can cause
  170.      problems is under Solaris with many virtualhosts and many Listen
  171.      directives.  But using -DHIGH_SLACK_LINE=256 described above will
  172.      work around this problem.  [Dean Gaudet]
  173.  
  174.   *) USE_FLOCK_SERIALIZED_ACCEPT is now default for FreeBSD, A/UX, and
  175.      SunOS 4.
  176.  
  177.   *) Improved unix error response logging.  [Marc Slemko]
  178.  
  179.   *) Update mod_rewrite from 3.0.5 to 3.0.6.  New ruleflag
  180.      QSA=query_string_append.  Also fixed a nasty bug in per-dir context:
  181.      when a URL http://... was used in concunction with a special
  182.      redirect flag, e.g. R=permanent, the permanent status was lost.
  183.      [Ronald Tschalaer <Ronald.Tschalaer@psi.ch>, Ralf S. Engelschall]
  184.  
  185.   *) If an object has multiple variants that are otherwise equal Apache
  186.      would prefer the last listed variant rather than the first.
  187.      [Paul Sutton] PR#94
  188.  
  189.   *) "make clean" at the top level now removes *.o.  [Dean Gaudet] PR#752
  190.  
  191.   *) mod_status dumps core in inetd mode.  [Marc Slemko and Roy Fielding]
  192.      PR#566
  193.  
  194.   *) pregsub had an off-by-1 in its error checking code. [Alexei Kosut]
  195.  
  196.   *) PORT: fix rlim_t problems with AIX 4.2. [Marc Slemko] PR#333
  197.  
  198.   *) PORT: Update Unixware support for 2.1.2.
  199.      [Lawrence Rosenman <ler@lerctr.org>] PR#511
  200.  
  201.   *) PORT: NonStop-UX [Joachim Schmitz <schmitz_joachim@tandem.com>] PR#327
  202.  
  203.   *) PORT: Update ConvexOS support for 11.5.
  204.      [David DeSimone <fox@convex.com>] PR#399
  205.  
  206.   *) PORT: Support for dec cc compiler under ultrix.
  207.      ["P. Alejandro Lopez-Valencia" <alejolo@ideam.gov.co>] PR#388
  208.  
  209.   *) PORT: Support for Maxion/OS SVR4.2 Real Time Unix. [no name given] PR#383
  210.  
  211.   *) PORT: Workaround for AIX 3.x compiler bug in http_bprintf.c.  
  212.      [Marc Slemko] PR#725
  213.   
  214.   *) PORT: fix problem compiling http_bprintf.c with gcc under SCO
  215.      [Marc Slemko] PR#695
  216.  
  217. Changes with Apache 1.2
  218.  
  219. Changes with Apache 1.2b11
  220.  
  221.   *) Fixed open timestamp fd in proxy_cache.c [Chuck Murcko]
  222.  
  223.   *) Added undocumented perl SSI mechanism for -DUSE_PERL_SSI and mod_perl.
  224.      [Rob Hartill]
  225.  
  226.   *) Proxy needs to use hard_timeout instead of soft_timeout when it is
  227.      reading from one buffer and writing to another, at least until it has
  228.      a custom timeout handler.  [Roy Fielding and Petr Lampa]
  229.  
  230.   *) Fixed problem on Irix with servers hanging in IdentityCheck,
  231.      apparently due to a mismatch between sigaction and setjmp.
  232.      [Roy Fielding] PR#502
  233.  
  234.   *) Log correct status code if we timeout before receiving a request (408)
  235.      or if we received a request-line that was too long to process (414).
  236.      [Ed Korthof and Roy Fielding] PR#601
  237.  
  238.   *) Virtual hosts with the same ServerName, but on different ports, were
  239.      not being selected properly.  [Ed Korthof]
  240.  
  241.   *) Added code to return the requested IP address from proxy_host2addr()
  242.      if gethostbyaddr() fails due to reverse DNS lookup problems. Original
  243.      change submitted by Jozsef Hollosi <hollosi@sbcm.com>.
  244.      [Chuck Murcko] PR#614
  245.  
  246.   *) If multiple requests on a single connection are used to retrieve
  247.      data from different virtual hosts, the virtual host list would be
  248.      scanned starting with the most recently used VH instead of the first,
  249.      causing most virtual hosts to be ignored.
  250.      [Paul Sutton and Martin Mares] PR#610
  251.  
  252.   *) The OS/2 handling of process group was broken by a porting patch for
  253.      MPE, so restored prior code for OS/2.  [Roy Fielding and Garey Smiley]
  254.  
  255.   *) Inherit virtual server port from main server if none (or "*") is
  256.      given for VirtualHost.  [Dean Gaudet] PR#576
  257.  
  258.   *) If the lookup for a DirectoryIndex name with content negotiation
  259.      has found matching variants, but none are acceptable, return the
  260.      negotiation result if there are no more DirectoryIndex names to lookup.
  261.      [Petr Lampa and Roy Fielding]
  262.  
  263.   *) If a soft_timeout occurs after keepalive is set, then the main child
  264.      loop would try to read another request even though the connection
  265.      has been aborted.  [Roy Fielding]
  266.  
  267.   *) Configure changes: Allow for whitespace at the start of a
  268.      Module declaration. Also, be more understanding about the
  269.      CC=/OPTIM= format in Configuration. Finally, fix compiler
  270.      flags if using HP-UX's cc compiler. [Jim Jagielski]
  271.  
  272.   *) Subrequests and internal redirects now inherit the_request from the
  273.      original request-line. [Roy Fielding]
  274.  
  275.   *) Test for error conditions before creating output header fields, since
  276.      we don't want the error message to include those fields.  Likewise,
  277.      reset the content_language(s) and content_encoding of the response
  278.      before generating or redirecting to an error message, since the new
  279.      message will have its own Content-* definitions. [Dean Gaudet]
  280.  
  281.   *) Restored the semantics of headers_out (headers sent only with 200..299
  282.      and 304 responses) and err_headers_out (headers sent with all responses).
  283.      Avoid the overhead of copying tables if err_headers_out is empty
  284.      (the usual case).  [Roy Fielding]
  285.  
  286.   *) Fixed a couple places where a check for the default Content-Type was
  287.      not properly checking both the value configured by the DefaultType
  288.      directive and the DEFAULT_TYPE symbol in httpd.h.  Changed the value
  289.      of DEFAULT_TYPE to match the documented default (text/plain).
  290.      [Dean Gaudet] PR#506
  291.  
  292.   *) Escape the HTML-sensitive characters in the Request-URI that is
  293.      output for each child by mod_status. [Dean Gaudet and Ken Coar] PR#501
  294.  
  295.   *) Properly initialize the flock structures used by the mutex locking
  296.      around accept() when USE_FCNTL_SERIALIZED_ACCEPT is defined.
  297.      [Marc Slemko]
  298.  
  299.   *) The method for determining PATH_INFO has been restored to the pre-1.2b
  300.      (and NCSA httpd) definition wherein it was the extra path info beyond
  301.      the CGI script filename.  The environment variable FILEPATH_INFO has
  302.      been removed, and instead we supply the original REQUEST_URI to any
  303.      script that wants to be Apache-specific and needs the real URI path.
  304.      This solves a problem with existing scripts that use extra path info
  305.      in the ScriptAlias directive to pass options to the CGI script.
  306.      [Roy Fielding]
  307.  
  308.   *) The _default_ change in 1.2b10 will change the behaviour on configs
  309.      that use multiple Listen statements for listening on multiple ports.
  310.      But that change is necessary to make _default_ consistent with other
  311.      forms of <VirtualHost>.  It requires such configs to be modified
  312.      to use <VirtualHost _default_:*>.  The documentation has been
  313.      updated.  [Dean Gaudet] PR#530
  314.  
  315.   *) If an ErrorDocument CGI script is used to respond to an error
  316.      generated by another CGI script which has already read the message
  317.      body of the request, the server would block trying to read the
  318.      message body again.  [Rob Hartill]
  319.  
  320.   *) signal() replacement conflicted with a define on QNX (and potentially
  321.      other platforms). Fixed. [Ben Laurie] PR#512
  322.  
  323. Changes with Apache 1.2b10
  324.  
  325.   *) Allow HTTPD_ROOT, SERVER_CONFIG_FILE, DEFAULT_PATH, and SHELL_PATH
  326.      to be configured via -D in Configuration.  [Dean Gaudet] PR#449
  327.  
  328.   *) <VirtualHost _default_:portnum> didn't work properly.  [Dean Gaudet]
  329.  
  330.   *) Added prototype for mktemp() for SUNOS4 [Marc Slemko]
  331.  
  332.   *) In mod_proxy.c, check return values for proxy_host2addr() when reading
  333.      config, in case the hostent struct returned is trash.
  334.      [Chuck Murcko] PR #491
  335.  
  336.   *) Fixed the fix in 1.2b9 for parsing URL query info into args for CGI
  337.      scripts.  [Dean Gaudet, Roy Fielding, Marc Slemko]
  338.  
  339. Changes with Apache 1.2b9  [never announced]
  340.  
  341.   *) Reset the MODULE_MAGIC_NUMBER to account for the unsigned port
  342.      changes and in anticipation of 1.2 final release.  [Roy Fielding]
  343.  
  344.   *) Fix problem with scripts not receiving a SIGPIPE when client drops
  345.      the connection (e.g., when user presses Stop).  Apache will now stop
  346.      trying to send a message body immediately after an error from write.
  347.      [Roy Fielding and Nathan Kurz] PR#335
  348.  
  349.   *) Rearrange Configuration.tmpl so that mod_rewrite has higher priority
  350.      than mod_alias, and mod_alias has higher priority than mod_proxy;
  351.      rearranged other modules to enhance understanding of their purpose
  352.      and relative order (and maybe even reduce some overhead).
  353.      [Roy Fielding and Sameer Parekh]
  354.  
  355.   *) Fix graceful restart.  Eliminate many signal-related race
  356.      conditions in both forms of restart, and in SIGTERM.  See
  357.      htdocs/manual/stopping.html for details on stopping and
  358.      restarting the parent.  [Dean Gaudet]
  359.  
  360.   *) Fix memory leaks in mod_rewrite, mod_browser, mod_include.  Tune
  361.      memory allocator to avoid a behaviour that required extra blocks to
  362.      be allocated.  [Dean Gaudet]
  363.  
  364.   *) Allow suexec to access files relative to current directory but not
  365.      above.  (Excluding leading / or any .. directory.)  [Ken Coar]
  366.      PR#269, 319, 395
  367.  
  368.   *) Fix suexec segfault when group doesn't exist. [Gregory Neil Shapiro]
  369.      PR#367, 368, 354, 453
  370.  
  371.   *) Fix the above fix: if suexec is enabled, avoid destroying r->url
  372.      while obtaining the /~user and save the username in a separate data
  373.      area so that it won't be overwritten by the call to getgrgid(), and
  374.      fix some misuse of the pool string allocation functions.  Also fixes
  375.      a general problem with parsing URL query info into args for CGI scripts.
  376.      [Roy Fielding] PR#339, 367, 354, 453
  377.  
  378.   *) Fix IRIX warning about bzero undefined. [Marc Slemko]
  379.  
  380.   *) Fix problem with <Directory proxy:...>. [Martin Kraemer] PR#271
  381.  
  382.   *) Corrected spelling of "authoritative".  AuthDBAuthoratative became
  383.      AuthDBAuthoritative. [Marc Slemko] PR#420
  384.  
  385.   *) MaxClients should be at least 1. [Lars Eilebrecht] PR#375
  386.  
  387.   *) The default handler now logs invalid methods or URIs (i.e. PUT on an
  388.      object that can't be PUT, or FOOBAR for some method FOOBAR that
  389.      apache doesn't know about at all).  Log 404s that occur in mod_include.
  390.      [Paul Sutton, John Van Essen]
  391.  
  392.   *) If a soft timeout (or lingerout) occurs while trying to flush a
  393.      buffer or write inside buff.c or fread'ing from a CGI's output,
  394.      then the timeout would be ignored. [Roy Fielding] PR#373
  395.  
  396.   *) Work around a bug in Netscape Navigator versions 2.x, 3.x and 4.0b2's
  397.      parsing of headers.  If the terminating empty-line CRLF occurs starting
  398.      at the 256th or 257th byte of output, then Navigator will think a normal
  399.      image is invalid.  We are guessing that this is because their initial
  400.      read of a new request uses a 256 byte buffer. We check the bytes written
  401.      so far and, if we are about to tickle the bug, we instead insert a
  402.      padding header of eminent bogosity. [Roy Fielding and Dean Gaudet] PR#232
  403.  
  404.   *) Fixed SIGSEGV problem when a DirectoryIndex file is also the source
  405.      of an external redirection.  [Roy Fielding and Paul Sutton]
  406.  
  407.   *) Configure would create a broken Makefile if the configuration file
  408.      contained a commented-out Rule.  [Roy Fielding]
  409.  
  410.   *) Promote per_dir_config and subprocess_env from the subrequest to the
  411.      main request in mod_negotiation.  In particular this fixes a bug
  412.      where <Files> sections wouldn't properly apply to negotiated content.
  413.      [Dean Gaudet]
  414.  
  415.   *) Fix a potential deadlock in mod_cgi script_err handling.
  416.      [Ralf S. Engelschall]
  417.  
  418.   *) rotatelogs zero-pads the logfile names to improve alphabetic sorting.
  419.      [Mitchell Blank Jr]
  420.  
  421.   *) Updated mod_rewrite to 3.0.4: Fixes HTTP redirects from within
  422.      .htaccess files because the RewriteBase was not replaced correctly.
  423.      Updated mod_rewrite to 3.0.5: Fixes problem with rewriting inside
  424.      <Directory> sections missing a trailing /.  [Ralf S. Engelschall]
  425.  
  426.   *) Clean up Linux settings in conf.h by detecting 2.x versus 1.x.  For
  427.      1.x the settings are those of pre-1.2b8.  For 2.x we include
  428.      HAVE_SHMGET (scoreboard in shared memory rather than file) and
  429.      HAVE_SYS_RESOURCE_H (enable the RLimit commands).
  430.      [Dean Gaudet] PR#336, PR#340
  431.  
  432.   *) Redirect did not preserve ?query_strings when present in the client's
  433.      request.  [Dean Gaudet]
  434.  
  435.   *) Configure was finding non-modules on EXTRA_LIBS. [Frank Cringle] PR#380
  436.  
  437.   *) Use /bin/sh5 on ultrix.  [P. Alejandro Lopez-Valencia] PR#369
  438.  
  439.   *) Add UnixWare compile/install instructions.  [Chuck Murcko]
  440.  
  441.   *) Add mod_example (illustration of API techniques).  [Ken Coar]
  442.  
  443.   *) Add macro for memmove to conf.h for SUNOS4. [Marc Slemko]
  444.  
  445.   *) Improve handling of directories when filenames have spaces in them.
  446.      [Chuck Murcko]
  447.  
  448.   *) For hosts with multiple IP addresses, try all additional addresses if
  449.      necessary to get a connect. Fail only if hostent address list is
  450.      exhausted. [Chuck Murcko]
  451.  
  452.   *) More signed/unsigned port fixes.  [Dean Gaudet]
  453.  
  454.   *) HARD_SERVER_LIMIT can be defined in the Configuration file now.
  455.      [Dean Gaudet]
  456.  
  457. Changes with Apache 1.2b8
  458.  
  459.   *) suexec.c doesn't close the log file, allowing CGIs to continue writing
  460.      to it.  [Marc Slemko]
  461.  
  462.   *) The addition of <Location> and <File> directives made the
  463.      sub_req_lookup_simple() function bogus, so we now handle
  464.      the special cases directly.  [Dean Gaudet]
  465.  
  466.   *) We now try to log where the server is dumping core when a fatal
  467.      signal is received.  [Ken Coar]
  468.  
  469.   *) Improved lingering_close by adding a special timeout, removing the
  470.      spurious log messages, removing the nonblocking settings (they
  471.      are not needed with the better timeout), and adding commentary
  472.      about the NO_LINGCLOSE and USE_SO_LINGER issues.  NO_LINGCLOSE is
  473.      now the default for SunOS4, Unixware, NeXT, and Irix.  [Roy Fielding]
  474.  
  475.   *) Send error messages about setsockopt failures to the server error
  476.      log instead of stderr.  [Roy Fielding]
  477.  
  478.   *) Fix loopholes in proxy cache expiry vis a vis alarms. [Brian Moore]
  479.  
  480.   *) Stopgap solution for CGI 3-second delay with server-side includes: if
  481.      processing a subrequest, allocate memory from r->main->pool instead
  482.      of r->pool so that we can avoid waiting for free_proc_chain to cleanup
  483.      in the middle of an SSI request.  [Dean Gaudet] PR #122
  484.  
  485.   *) Fixed status of response when POST is received for a nonexistant URL
  486.      (was sending 405, now 404) and when any method is sent with a
  487.      full-URI that doesn't match the server and the server is not acting
  488.      as a proxy (was sending 501, now 403).  [Roy Fielding]
  489.  
  490.   *) Host port changed to unsigned short. [Ken Coar] PR #276
  491.  
  492.   *) Fix typo in command definition of AuthAuthoritative. [Ken Coar] PR #246
  493.  
  494.   *) Defined HAVE_SHMGET for shared memory on Linux.  [Dean Gaudet]
  495.  
  496.   *) Report extra info from errno with many errors that cause httpd to exit.
  497.      spawn_child, popenf, and pclosef now have valid errno returns in the
  498.      event of an error.  Correct problems where errno was stomped on
  499.      before being reported.  [Dean Gaudet]
  500.  
  501.   *) In the proxy, if the cache filesystem was full, garbage_coll() was
  502.      never called, and thus the filesystem would remain full indefinitely.
  503.      We now also remove incomplete cache files left if the origin server
  504.      didn't send a Content-Length header and either the client has aborted
  505.      transfer or bwrite() to client has failed. [Petr Lampa]
  506.  
  507.   *) Fixed the handling of module and script-added header fields.
  508.      Improved the interface for sending header fields and reduced
  509.      the duplication of code between sending okay responses and errors.
  510.      We now always send both headers_out and err_headers_out, and
  511.      ensure that the server-reserved fields are not being overridden,
  512.      while not overriding those that are not reserved.  [Roy Fielding]
  513.  
  514.   *) Moved transparent content negotiation fields to err_headers_out
  515.      to reflect above changes.  [Petr Lampa]
  516.  
  517.   *) Fixed the determination of whether or not we should make the
  518.      connection persistent for all of the cases where some other part
  519.      of the server has already indicated that we should not.  Also
  520.      improved the ordering of the test so that chunked encoding will
  521.      be set whenever it is desired instead of only when KeepAlive
  522.      is enabled. Added persistent connection capability for most error
  523.      responses (those that do not indicate a bad input stream) when
  524.      accessed by an HTTP/1.1 client. [Roy Fielding]
  525.  
  526.   *) Added missing timeouts for sending header fields, error responses,
  527.      and the last chunk of chunked encoding, each of which could have
  528.      resulted in a process being stuck in write forever.  Using soft_timeout
  529.      requires that the sender check for an aborted connection rather than
  530.      continuing after an EINTR.  Timeouts that used to be initiated before
  531.      send_http_header (and never killed) are now initiated only within or
  532.      around the routines that actually do the sending, and not allowed to
  533.      propagate above the caller.  [Roy Fielding]
  534.  
  535.   *) mod_auth_anon required an @ or a . in the email address, not both.
  536.      [Dirk vanGulik]
  537.  
  538.   *) per_dir_defaults weren't set correctly until directory_walk for
  539.      name-based vhosts.  This fixes an obscure bug with the wrong config
  540.      info being used for vhosts that share the same ip as the server.
  541.      [Dean Gaudet]
  542.  
  543.   *) Improved generation of modules/Makefile to be more generic for
  544.      new module directories. [Ken Coar, Chuck Murcko, Roy Fielding]
  545.  
  546.   *) Generate makefile dependency for Configuration based on the actual
  547.      name given when running the Configure process.  [Dean Gaudet]
  548.  
  549.   *) Fixed problem with vhost error log not being set prior to
  550.      initializing virtual hosts. [Dean Gaudet]
  551.  
  552.   *) Fixed infinite loop when a trailing slash is included after a type map
  553.      file URL (extra path info). [Petr Lampa]
  554.  
  555.   *) Fixed server status updating of per-connection counters. [Roy Fielding]
  556.  
  557.   *) Add documentation for DNS issues (reliability and security), and try
  558.      to explain the virtual host matching process.  [Dean Gaudet]
  559.  
  560.   *) Try to continue gracefully by disabling the vhost if a DNS lookup
  561.      fails while parsing the configuration file.  [Dean Gaudet]
  562.  
  563.   *) Improved calls to setsockopt.  [Roy Fielding]
  564.  
  565.   *) Negotiation changes: Don't output empty content-type in variant list;
  566.      Output charset in variant list; Return sooner from handle_multi() if
  567.      no variants found; Add handling of '*' wildcard in Accept-Charset.
  568.      [Petr Lampa and Paul Sutton]
  569.  
  570.   *) Fixed overlaying of request/sub-request notes and headers in
  571.      mod_negotiation.  [Dean Gaudet]
  572.  
  573.   *) If two variants' charset quality are equal and one is the default
  574.      charset (iso-8859-1), then prefer the variant that was specifically
  575.      listed in Accept-Charset instead of the default.  [Petr Lampa]
  576.  
  577.   *) Memory allocation problem in push_array() -- it would corrupt memory
  578.      when nalloc==0.  [Kai Risku <krisku@tf.hut.fi> and Roy Fielding]
  579.  
  580.   *) invoke_handler() doesn't handle mime arguments in content-type
  581.      [Petr Lampa] PR#160
  582.  
  583.   *) Reduced IdentityCheck timeout to 30 seconds, as per RFC 1413 minimum.
  584.      [Ken Coar]
  585.  
  586.   *) Fixed problem with ErrorDocument not working for virtual hosts
  587.      due to one of the performance changes in 1.2b7. [Dean Gaudet]
  588.  
  589.   *) Log an error message if we get a request header that is too long,
  590.      since it may indicate a buffer overflow attack. [Marc Slemko]
  591.  
  592.   *) Made is_url() allow "[-.+a-zA-Z0-9]+:" as a valid scheme and
  593.      not reject URLs without a double-slash, as per RFC2068 section 3.2.
  594.      [Ken Coar] PR #146, #187
  595.  
  596.   *) Added table entry placeholder for new header_parser callback
  597.      in all of the distributed modules. [Ken Coar] PR #191
  598.  
  599.   *) Allow for cgi files without the .EXE extension on them under OS/2.
  600.      [Garey Smiley] PR #59
  601.  
  602.   *) Fixed error message when resource is not found and URL contains
  603.      path info. [Petr Lampa and Dean Gaudet] PR #40
  604.  
  605.   *) Fixed user and server confusion over what should be a virtual host
  606.      and what is the main server, resulting in access to something
  607.      other than the name defined in the virtualhost directive (but
  608.      with the same IP address) failing. [Dean Gaudet]
  609.  
  610.   *) Updated mod_rewrite to version 3.0.2, which: fixes compile error on
  611.      AIX; improves the redirection stuff to enable the users to generally
  612.      redirect to http, https, gopher and ftp; added TIME variable for
  613.      RewriteCond which expands to YYYYMMDDHHMMSS strings and added the
  614.      special patterns >STRING, <STRING and =STRING to RewriteCond, which
  615.      can be used in conjunction with %{TIME} or other variables to create
  616.      time-dependent rewriting rules. [Ralf S. Engelschall]
  617.  
  618.   *) bpushfd() no longer notes cleanups for the file descriptors it is handed.
  619.      Module authors may need to adjust their code for proper cleanup to take
  620.      place (that is, call note_cleanups_for_fd()). This change fixes problems
  621.      with file descriptors being erroneously closed when the proxy module was
  622.      in use. [Ben Laurie]
  623.  
  624.   *) Fix bug in suexec reintroduced by changes in 1.2b7 which allows
  625.      initgroups() to hose the group information needed for later
  626.      comparisons. [Randy Terbush]
  627.  
  628.   *) Remove unnecessary call to va_end() in create_argv() which
  629.      caused a SEGV on some systems.
  630.  
  631.   *) Use proper MAXHOSTNAMELEN symbol for limiting length of server name.
  632.      [Dean Gaudet]
  633.  
  634.   *) Clear memory allocated for listeners. [Randy Terbush]
  635.  
  636.   *) Improved handling of IP address as a virtualhost address and
  637.      introduced "_default_" as a synonym for the default vhost config.
  638.      [Dean Gaudet] PR #212
  639.  
  640. Changes with Apache 1.2b7
  641.  
  642.   *) Port to  UXP/DS(V20) [Toshiaki Nomura <nom@yk.fujitsu.co.jp>]
  643.  
  644.   *) unset Content-Length if chunked (RFC-2068) [Petr Lampa]
  645.  
  646.   *) mod_negotiation fixes [Petr Lampa] PR#157, PR#158, PR#159
  647.      - replace protocol response numbers with symbols
  648.      - save variant-list into main request notes
  649.      - free allocated memory from subrequests
  650.      - merge notes, headers_out and err_headers_out
  651.  
  652.   *) changed status check mask in proxy_http.c from "HTTP/#.# ### *" to
  653.      "HTTP/#.# ###*" to be more lenient about what we accept.
  654.      [Chuck Murcko]
  655.  
  656.   *) more proxy FTP bug fixes:
  657.      - Changed send_dir() to remove user/passwd from displayed URL.
  658.      - Changed login error messages to be more descriptive.
  659.      - remove setting of SO_DEBUG socket option
  660.      - Make ftp_getrc() more lenient about multiline responses,
  661.        specifically, 230 responses which don't have continuation 230-
  662.        on each line). These seem to be all NT FTP servers, and while
  663.        perhaps questionable, they appear to be legal by RFC 959.
  664.      - Add missing kill_timeout() after transfer to user completes.
  665.      [Chuck Murcko]
  666.  
  667.   *) Fixed problem where a busy server could hang when restarting
  668.      after being sent a SIGHUP due to child processes not exiting.
  669.      [Marc Slemko]
  670.  
  671.   *) Modify mod_include escaping so a '\' only signifies an escaped
  672.      character if the next character is one that needs
  673.      escaping.  [Ben Laurie]
  674.  
  675.   *) Eliminated possible infinite loop in mod_imap when relative URLs are
  676.      used with a 'base' directive that does not have a '/' in it.
  677.      [Marc Slemko, reported by Onno Witvliet <onno@tc.hsa.nl>]
  678.  
  679.   *) Reduced the default timeout from 1200 seconds to 300, and the
  680.      one in the sample configfile from 400 to 300.  [Marc Slemko]
  681.  
  682.   *) Stop vbprintf from crashing if given a NULL string pointer;
  683.      print (null) instead.  [Ken Coar]
  684.  
  685.   *) Don't disable Nagle algorithm if system doesn't have TCP_NODELAY.
  686.      [Marc Slemko and Roy Fielding]
  687.  
  688.   *) Fixed problem with mod_cgi-generated internal redirects trying to
  689.      read the request message-body twice. [Archie Cobbs and Roy Fielding]
  690.  
  691.   *) Reduced timeout on lingering close, removed possibility of a blocked
  692.      read causing the child to hang, and stopped logging of errors if
  693.      the socket is not connected (reset by client).  [Roy Fielding]
  694.  
  695.   *) Rearranged main child loop to remove duplication of code in
  696.      select/accept and keep-alive requests, fixed several bugs regarding
  697.      checking scoreboard_image for exit indication and failure to
  698.      account for all success conditions and trap all error conditions,
  699.      prevented multiple flushes before closing the socket; close the entire
  700.      socket buffer instead of just one descriptor, prevent logging of
  701.      EPROTO and ECONNABORTED on platforms where supported, and generally
  702.      improved readability.  [Roy Fielding]
  703.  
  704.   *) Extensive performance improvements. Cleaned up inefficient use of
  705.      auto initializers, multiple is_matchexp calls on a static string,
  706.      and excessive merging of response_code_strings. [Dean Gaudet]
  707.  
  708.   *) Added double-buffering to mod_include to improve performance on
  709.      server-side includes. [Marc Slemko]
  710.  
  711.   *) Several fixes for suexec wrapper. [Randy Terbush]
  712.      - Make wrapper work for files on NFS filesystem.
  713.      - Fix portability problem of MAXPATHLEN.
  714.      - Fix array overrun problem in clean_env().
  715.      - Fix allocation of PATH environment variable
  716.  
  717.   *) Removed extraneous blank line is description of mod_status chars.
  718.      [Kurt Kohler]
  719.  
  720.   *) Logging of errors from the call_exec routine simply went nowhere,
  721.      since the logfile fd has been closed, so now we send them to stderr.
  722.      [Harald T. Alvestrand]
  723.  
  724.   *) Fixed core dump when DocumentRoot is a CGI.
  725.      [Ben Laurie, reported by geddis@tesserae.com]
  726.  
  727.   *) Fixed potential file descriptor leak in mod_asis; updated it and
  728.      http_core to use pfopen/pfclose instead of fopen/fclose.
  729.      [Randy Terbush and Roy Fielding]
  730.  
  731.   *) Fixed handling of unsigned ints in ap_snprintf() on some chips such
  732.      as the DEC Alpha which is 64-bit but uses 32-bit ints.
  733.      [Dean Gaudet and Ken Coar]
  734.  
  735.   *) Return a 302 response code to the client when sending a redirect
  736.      due to a missing trailing '/' on a directory instead of a 301; now
  737.      it is cacheable. [Markus Gyger]
  738.  
  739.   *) Fix condition where, if a bad directive occurs in .htaccess, and
  740.      sub_request() goes first to this directory, then log_reason() will
  741.      SIGSEGV because it doesn't have initialized r->per_dir_config.
  742.      [PR#162 from Petr Lampa, fix by Marc Slemko and Dean Gaudet]
  743.  
  744.   *) Fix handling of lang_index in is_variant_better().  This was
  745.      causing problems which resulted in the server sending the
  746.      wrong language document in some cases. [Petr Lampa]
  747.  
  748.   *) Remove free() from clean_env() in suexec wrapper. This was nuking
  749.      the clean environment on some systems.
  750.  
  751.   *) Tweak byteserving code (e.g. serving PDF files) to work around
  752.      bugs in Netscape Navigator and Microsoft Internet Explorer.
  753.      Emit Content-Length header when sending multipart/byteranges.
  754.      [Alexei Kosut]
  755.  
  756.   *) Port to HI-UX/WE2. [Nick Maclaren]
  757.  
  758.   *) Port to HP MPE operating system for HP 3000 machines
  759.      [Mark Bixby <markb@cccd.edu>]
  760.  
  761.   *) Fixed bug which caused a segmentation fault if only one argument
  762.      given to RLimit* directives. [Ed Korthof]
  763.  
  764.   *) Continue persistent connection after 204 or 304 response. [Dean Gaudet]
  765.  
  766.   *) Improved buffered output to the client by delaying the flush decision
  767.      until the BUFF code is actually about to read the next request.
  768.      This fixes a problem introduced in 1.2b5 with clients that send
  769.      an extra CRLF after a POST request. Also improved chunked output
  770.      performance by combining writes using writev() and removing as
  771.      many bflush() calls as possible.  NOTE: Platforms without writev()
  772.      must add -DNO_WRITEV to the compiler CFLAGS, either in Configuration
  773.      or Configure, unless we have already done so.  [Dean Gaudet]
  774.  
  775.   *) Fixed mod_rewrite bug which truncated the rewritten URL [Marc Slemko]
  776.  
  777.   *) Fixed mod_info output corruption bug introduced by buffer overflow
  778.      fixes. [Dean Gaudet]
  779.  
  780.   *) Fixed http_protocol to correctly output all HTTP/1.1 headers, including
  781.      for the special case of a 304 response.  [Paul Sutton]
  782.  
  783.   *) Improved handling of TRACE method by bypassing normal method handling
  784.      and header parsing routines; fixed Allow response to always allow TRACE.
  785.      [Dean Gaudet]
  786.  
  787.   *) Fixed compiler warnings in the regex library. [Dean Gaudet]
  788.  
  789.   *) Cleaned-up some of the generated HTML. [Ken Coar]
  790.  
  791. Changes with Apache 1.2b6
  792.  
  793.   *) Allow whitespace in imagemap mapfile coordinates. [Marc Slemko]
  794.  
  795.   *) Fix typo introduced in fix for potential infinite loop around
  796.      accept() in child_main(). This change caused the rev to 1.2b6.
  797.      1.2b5 was never a public beta.
  798.  
  799. Changes with Apache 1.2b5
  800.  
  801.   *) Change KeepAlive semantics (On|Off instead of a number), add
  802.      MaxKeepAliveRequests directive. [Alexei Kosut]
  803.  
  804.   *) Various NeXT compilation patches, as well as a change in
  805.      regex/regcomp.c since that file also used a NEXT define.
  806.      [Andreas Koenig]
  807.  
  808.   *) Allow * to terminate the end of a directory match in mod_dir.
  809.      Allows /~* to match for both /~joe and /~joe/. [David Bronder]
  810.  
  811.   *) Don't call can_exec() if suexec_enabled. Calling this requires
  812.      scripts executed by the suexec wrapper to be world executable, which
  813.      defeats one of the advantages of running the wrapper. [Randy Terbush]
  814.  
  815.   *) Portability Fix: IRIX complained with 'make clean' about *pure* (removed)
  816.      [Jim Jagielski]
  817.  
  818.   *) Migration from sprintf() to snprintf() to avoid buffer
  819.      overflows. [Marc Slemko]
  820.  
  821.   *) Provide portable snprintf() implementation (ap_snprintf)
  822.      as well as *cvt family. [Jim Jagielski]
  823.  
  824.   *) Portability Fix: NeXT lacks unistd.h so we wrap it's inclusion
  825.      [Jim Jagielski]
  826.  
  827.   *) Remove mod_fastcgi.c from the distribution. This module appears
  828.      to be maintained more through the Open Market channels and should
  829.      continue to be easily available at http://www.fastcgi.com/
  830.  
  831.   *) Fixed bug in modules/Makefile that wouldn't allow building in more
  832.      than one subdirectory (or cleaning, either). [Jeremy Laidman]
  833.  
  834.   *) mod_info assumed that the config files were relative to ServerRoot.
  835.      [Ken the Rodent]
  836.  
  837.   *) CGI scripts called as an error document resulting from failed
  838.      CGI execution would hang waiting for POST'ed data. [Rob Hartill]
  839.  
  840.   *) Log reason when mod_dir returns access HTTP_FORBIDDEN
  841.      [Ken the Rodent]
  842.  
  843.   *) Properly check errno to prevent display of a directory index
  844.      when server receives a long enough URL to confuse stat().
  845.      [Marc Slemko]
  846.  
  847.   *) Several security enhancements to suexec wrapper. It is _highly_
  848.      recommended that previously installed versions of the wrapper
  849.      be replaced with this version.  [Randy Terbush, Jason Dour]
  850.  
  851.     - ~user execution now properly restricted to ~user's home
  852.       directory and below.
  853.     - execution restricted to UID/GID > 100
  854.     - restrict passed environment to known variables
  855.     - call setgid() before initgroups() (portability fix)
  856.     - remove use of setenv() (portability fix)
  857.  
  858.   *) Add HTTP/1.0 response forcing. [Ben Laurie]
  859.  
  860.   *) Add access control via environment variables. [Ben Laurie]
  861.  
  862.   *) Add rflush() function. [Alexei Kosut]
  863.  
  864.   *) remove duplicate pcalloc() call in new_connection().
  865.  
  866.   *) Fix incorrect comparison which could allow number of children =
  867.      MaxClients + 1 if less than HARD_SERVER_LIMIT. Also fix potential
  868.      problem if StartServers > HARD_SERVER_LIMIT. [Ed Korthof]
  869.  
  870.   *) Updated support for OSes (MachTen, ULTRIX, Paragon, ISC, OpenBSD
  871.      AIX PS/2, CONVEXOS. [Jim Jagielski]
  872.  
  873.   *) Replace instances of inet_ntoa() with inet_addr() for ProxyBlock.
  874.      It's more portable. [Martin Kraemer]
  875.  
  876.   *) Replace references to make in Makefile.tmpl with $(MAKE).
  877.      [Chuck Murcko]
  878.  
  879.   *) Add ProxyBlock directive w/IP address caching. Add IP address
  880.      caching to NoCache directive as well. ProxyBlock works with all
  881.      handlers; NoCache now also works with FTP for anonymous logins.
  882.      Still more code cleanup. [Chuck Murcko]
  883.  
  884.   *) Add "header parse" API hook [Ben Laurie]
  885.  
  886.   *) Fix byte ordering problems for REMOTE_PORT [Chuck Murcko]
  887.  
  888.   *) suEXEC wrapper was freeing memory that had not been malloc'ed.
  889.  
  890.   *) Correctly allow access and auth directives in <Files> sections in
  891.      server config files. [Alexei Kosut]
  892.  
  893.   *) Fix bug with ServerPath that could cause certain files to be not
  894.      found by the server. [Alexei Kosut]
  895.  
  896.   *) Fix handling of ErrorDocument so that it doesn't remove a trailing
  897.      double-quote from text and so that it properly checks for unsupported
  898.      status codes using the new index_of_response interface. [Roy Fielding]
  899.  
  900.   *) Multiple fixes to the lingering_close code in order to avoid being
  901.      interrupted by a stray timeout, to avoid lingering on a connection
  902.      that has already been aborted or never really existed, to ensure that
  903.      we stop lingering as soon as any error condition is received, and to
  904.      prevent being stuck indefinitely if the read blocks.  Also improves
  905.      reporting of error conditions.  [Marc Slemko and Roy Fielding]
  906.  
  907.   *) Fixed initialization of parameter structure for sigaction.
  908.      [mgyger@itr.ch, Adrian Filipi-Martin]
  909.  
  910.   *) Fixed reinitializing the parameters before each call to accept and
  911.      select, and removed potential for infinite loop in accept.
  912.      [Roy Fielding, after useful PR from adrian@virginia.edu]
  913.  
  914.   *) Fixed condition where, if a child fails to fork, the scoreboard would
  915.      continue to say SERVER_STARTING forever. Eventually, the main process
  916.      would refuse to start new children because count_idle_servers() will
  917.      count those SERVER_STARTING entries and will always report that there
  918.      are enough idle servers. [Phillip Vandry]
  919.  
  920.   *) Fixed bug in bcwrite regarding failure to account for partial writes.
  921.      Avoided calling bflush() when the client is pipelining requests.
  922.      Removed unnecessary flushes from http_protocol. [Dean Gaudet]
  923.  
  924.   *) Added description of "." mode in server-status [Jim Jagielski]
  925.  
  926.  
  927. Changes with Apache 1.2b4:
  928.  
  929.   *) Fix possible race condition in accept_mutex_init() that
  930.      could leave a small security hole open allowing files to be
  931.      overwritten in cases where the server UID has write permissions.
  932.      [Marc Slemko]
  933.  
  934.   *) Fix awk compatibilty problem in Configure. [Jim Jagielski]
  935.  
  936.   *) Fix portablity problem in util_script where ARG_MAX may not be
  937.      defined for some systems.
  938.  
  939.   *) Add changes to allow compilation on Machten 4.0.3 for PowerPC.
  940.      [Randal Schwartz]
  941.  
  942.   *) OS/2 changes to support an MMAP style scoreboard file and UNIX
  943.      style magic #! token for better script portability. [Garey Smiley]
  944.  
  945.   *) Fix bug in suexec wrapper introduced in b3 that would cause failed
  946.      execution for ~userdir CGI. [Jason Dour]
  947.  
  948.   *) Fix initgroups() business in suexec wrapper. [Jason Dour]
  949.  
  950.   *) Fix month off by one in suexec wrapper logging.
  951.  
  952. Changes with Apache 1.2b3:
  953.  
  954.   *) Fix error in mod_cgi which could cause resources not to be properly
  955.      freed, or worse. [Dean Gaudet]
  956.  
  957.   *) Fix find_string() NULL pointer dereference. [Howard Fear]
  958.  
  959.   *) Add set_flag_slot() at the request of Dirk and others.
  960.      [Dirk vanGulik]
  961.  
  962.   *) Sync mod_rewrite with patch level 10. [Ralf Engelschall]
  963.  
  964.   *) Add changes to improve the error message given for invalid
  965.      ServerName parameters. [Dirk vanGulik]
  966.  
  967.   *) Add "Authoritative" directive for Auth modules that don't
  968.      currently have it. This gives admin control to assign authoritative
  969.      control to an authentication scheme and allow "fall through" for
  970.      those authentication modules that aren't "Authoritative" thereby
  971.      allowing multiple authentication mechanisms to be chained.
  972.      [Dirk vanGulik]
  973.  
  974.   *) Remove requirement for ResourceConfig/AccessConfig if not using
  975.      the three config file layout. [Randy Terbush]
  976.  
  977.   *) Add PASV mode to mod_proxy FTP handler. [Chuck Murcko]
  978.  
  979.   *) Changes to suexec wrapper to fix the following problems:
  980.      1.  symlinked homedirs will kill ~userdirs.
  981.      2.  initgroups() on Linux 2.0.x clobbers gr->grid.
  982.      3.  CGI command lines paramters problems
  983.      4.  pw-pwdir for "docroot check" still the httpd user's pw record.
  984.     [Randy Terbush, Jason Dour]
  985.  
  986.   *) Change create_argv() to accept variable arguments. This fixes
  987.      a problem where arguments were not getting passed to the CGI via
  988.      argv[] when the suexec wrapper was active. [Randy Terbush, Jake Buchholz]
  989.  
  990.   *) Collapse multiple slashes in path URLs to properly apply
  991.      handlers defined by <Location>. [Alexei Kosut]
  992.  
  993.   *) Define a sane set of DEFAULT_USER and DEFAULT_GROUP values for AIX.
  994.  
  995.   *) Improve the accuracy of request duration timings by setting
  996.      r->request_time in read_request_line() instead of read_request().
  997.      [Dean Gaudet]
  998.  
  999.   *) Reset timeout while reading via get_client_block() in mod_cgi.c
  1000.      Fixes problem with timed out transfers of large files. [Rasmus Lerdorf]
  1001.  
  1002.   *) Add the ability to pass different Makefile.tmpl files to Configure
  1003.      using the -make flag. [Rob Hartill]
  1004.  
  1005.   *) Fix coredump triggered when sending a SIGHUP to the server caused
  1006.      by an assertion failure, in turn caused by an uninitialised field in a
  1007.      listen_rec.
  1008.      [Ben Laurie]
  1009.  
  1010.   *) Add FILEPATH_INFO variable to CGI environment, which is equal to
  1011.      PATH_INFO from previous versions of Apache (in certain situations,
  1012.      Apache 1.2's PATH_INFO will be different than 1.1's). [Alexei Kosut]
  1013.      [later removed in 1.2b11]
  1014.  
  1015.   *) Add rwrite() function to API to allow for sending strings of
  1016.      arbitrary length. [Doug MacEachern]
  1017.  
  1018.   *) Remove rlim_t typedef for NetBSD. Do older versions need this?
  1019.  
  1020.   *) Defined rlim_t and WANTHSREGEX=yes and fixed waitpid() substitute for
  1021.      NeXT. [Jim Jagielski]
  1022.  
  1023.   *) Removed recent modification to promote the status code on internal
  1024.      redirects, since the correct fix was to change the default log format
  1025.      in mod_log_config so that it outputs the original status. [Rob Hartill]
  1026.  
  1027. Changes with Apache 1.2b2:
  1028.  
  1029.   *) Update set_signals() to use sigaction() for setting handlers.
  1030.      This appears to fix a re-entrant problem in the seg_fault()
  1031.      bus_error() handlers. [Randy Terbush]
  1032.  
  1033.   *) Changes to allow mod_status compile for OS/2 [Garey Smiley]
  1034.  
  1035.   *) changes for DEC AXP running OSF/1 v3.0. [Marc Evans]
  1036.  
  1037.   *) proxy_http.c bugfixes:  [Chuck Murcko]
  1038.         1) fixes possible NULL pointer reference w/NoCache
  1039.         2) fixes NoCache behavior when using ProxyRemote (ProxyRemote
  1040.            host would cache nothing if it was in the local domain,
  1041.            and the local domain was in the NoCache list)
  1042.         3) Adds Host: header when not available
  1043.         4) Some code cleanup and clarification
  1044.  
  1045.   *) mod_include.c bugfixes:
  1046.     1) Fixed an ommission that caused include variables to not
  1047.        be parsed in config errmsg directives [Howard Fear]
  1048.     2) Remove HAVE_POSIX_REGEX cruft [Alexei Kosut]
  1049.     3) Patch to fix compiler warnings [perrot@lal.in2p3.fr]
  1050.     4) Allow backslash-escaping to all quoted text
  1051.        [Ben Yoshino <ben@wiliki.eng.hawaii.edu>]
  1052.     5) Pass variable to command line if not set in XSSI's env
  1053.        [Howard Fear]
  1054.  
  1055.   *) Fix infinite loop when processing Content-language lines in
  1056.      type-map files. [Alexei Kosut]
  1057.  
  1058.   *) Closed file-globbing hole in test-cgi script. [Brian Behlendorf]
  1059.  
  1060.   *) Fixed problem in set_[user|group] that prevented CGI execution
  1061.      for non-virtualhosts when suEXEC was enabled. [Randy Terbush]
  1062.  
  1063.   *) Added PORTING information file.  [Jim Jagielski]
  1064.  
  1065.   *) Added definitions for S_IWGRP and S_IWOTH to conf.h [Ben Laurie]
  1066.  
  1067.   *) Changed default group to "nogroup" instead of "nobody" [Randy Terbush]
  1068.  
  1069.   *) Fixed define typo of FCNTL_SERIALIZED_ACCEPT where
  1070.      USE_FCNTL_SERIALIZED_ACCEPT was intended.
  1071.  
  1072.   *) Fixed additional uses of 0xffffffff where INADDR_NONE was intended,
  1073.      which caused problems of systems where socket s_addr is >32bits.
  1074.  
  1075.   *) Added comment to explain (r->chunked = 1) side-effect in
  1076.      http_protocol.c [Roy Fielding]
  1077.  
  1078.   *) Replaced use of index() in mod_expires.c with more appropriate
  1079.      and portable isdigit() test.  [Ben Laurie]
  1080.  
  1081.   *) Updated Configure for ...
  1082.     OS/2          (DEF_WANTHSREGEX=yes, other code changes)
  1083.         *-dg-dgux*    (bad pattern match)
  1084.         QNX           (DEF_WANTHSREGEX=yes)
  1085.         *-sunos4*     (DEF_WANTHSREGEX=yes, -DUSEBCOPY)
  1086.         *-ultrix      (new)
  1087.     *-unixware211 (new)
  1088.      and added some user diagnostic info.  [Ben Laurie]
  1089.  
  1090.   *) In helpers/CutRule, replaced "cut" invocation with "awk" invocation
  1091.      for better portability. [Jim Jagielski]
  1092.  
  1093.   *) Updated helpers/GuessOS for ...
  1094.         SCO 5            (recognize minor releases)
  1095.         SCO Unixware     (braindamaged uname, whatever-whatever-unixware2)
  1096.     SCO UnixWare 2.1.1    (requires a separate set of #defines in conf.h)
  1097.         IRIX64           (-sgi-irix64)
  1098.         ULTRIX           (-unknown-ultrix)
  1099.         SINIX            (-whatever-sysv4)
  1100.         NCR Unix         (-ncr-sysv4)
  1101.      and fixed something in helpers/PrintPath  [Ben Laurie]
  1102.  
  1103. Changes with Apache 1.2b1:
  1104.  
  1105.   *) Not listed. See <http://www.apache.org/docs/new_features_1_2.html>
  1106.  
  1107. Changes with Apache 1.1.1:
  1108.  
  1109.   *) Fixed bug where Cookie module would make two entries in the
  1110.      logfile for each access [Mark Cox]
  1111.  
  1112.   *) Fixed bug where Redirect in .htaccess files would cause memory
  1113.      leak. [Nathan Neulinger]
  1114.  
  1115.   *) MultiViews now works correctly with AddHandler [Alexei Kosut]
  1116.  
  1117.   *) Problems with mod_auth_msql fixed [Dirk vanGulik]
  1118.  
  1119.   *) Fix misspelling of "Anonymous_Authorative" directive in mod_auth_anon.
  1120.  
  1121. Changes with Apache 1.1.0:
  1122.  
  1123.   *) Bring NeXT support up to date. [Takaaki Matsumoto]
  1124.  
  1125.   *) Bring QNX support up to date. [Ben Laurie]
  1126.  
  1127.   *) Make virtual hosts default to main server keepalive parameters.
  1128.      [Alexei Kosut, Ben Laurie]
  1129.  
  1130.   *) Allow ScanHTMLTitles to work with lowercase <title> tags. [Alexei Kosut]
  1131.  
  1132.   *) Fix missing address family for connect, also remove unreachable statement
  1133.      in mod_proxy. [Ben Laurie]
  1134.  
  1135.   *) mod_env now turned on by default in Configuration.tmpl.
  1136.  
  1137.   *) Bugs which were fixed:
  1138.         a) yet more mod_proxy bugs [Ben Laurie]
  1139.         b) CGI works again with inetd [Alexei Kosut]
  1140.     c) Leading colons were stripped from passwords [osm@interguide.com]
  1141.     d) Another fix to multi-method Limit problem [jk@tools.de]
  1142.  
  1143. Changes with Apache 1.1b4:
  1144.  
  1145.   *) r->bytes_sent variable restored. [Robert Thau]
  1146.  
  1147.   *) Previously broken multi-method <Limit> parsing fixed. [Robert Thau]
  1148.  
  1149.   *) More possibly unsecure programs removed from the support directory.
  1150.  
  1151.   *) More mod_auth_msql authentication improvements.
  1152.  
  1153.   *) VirtualHosts based on Host: headers no longer conflict with the
  1154.      Listen directive.
  1155.  
  1156.   *) OS/2 compatibility enhancements. [Gary Smiley]
  1157.  
  1158.   *) POST now allowed to directory index CGI scripts.
  1159.  
  1160.   *) Actions now work with files of the default type.
  1161.  
  1162.   *) Bugs which were fixed:
  1163.         a) more mod_proxy bugs
  1164.         b) early termination of inetd requests
  1165.         c) compile warnings on several systems
  1166.         d) problems when scripts stop reading output early
  1167.  
  1168. Changes with Apache 1.1b3:
  1169.  
  1170.   *) Much of cgi-bin and all of cgi-src has been removed, due to
  1171.      various security holes found and that we could no longer support
  1172.      them.
  1173.  
  1174.   *) The "Set-Cookie" header is now special-cased to not merge multiple
  1175.      instances, since certain popular browsers can not handle multiple
  1176.      Set-Cookie instructions in a single header. [Paul Sutton]
  1177.  
  1178.   *) rprintf() added to buffer code, occurrences of sprintf removed.
  1179.      [Ben Laurie]
  1180.  
  1181.   *) CONNECT method for proxy module, which means tunneling SSL should work.
  1182.      (No crypto needed)  Also a NoCache config directive.
  1183.  
  1184.   *) Several API additions: pstrndup(), table_unset() and get_token()
  1185.      functions now available to modules.
  1186.  
  1187.   *) mod_imap fixups, in particular Location: headers are now complete
  1188.      URL's.
  1189.  
  1190.   *) New "info" module which reports on installed module set through a
  1191.      special URL, a la mod_status.
  1192.  
  1193.   *) "ServerPath" directive added - allows for graceful transition
  1194.      for Host:-header-based virtual hosts.
  1195.  
  1196.   *) Anonymous authentication module improvements.
  1197.  
  1198.   *) MSQL authentication module improvements.
  1199.  
  1200.   *) Status module design improved - output now table-based. [Ben Laurie]
  1201.  
  1202.   *) htdigest utility included for use with digest authentication
  1203.      module.
  1204.  
  1205.   *) mod_negotiation: Accept values with wildcards to be treated with
  1206.      less priority than those without wildcards at the same quality
  1207.      value. [Alexei Kosut]
  1208.  
  1209.   *) Bugs which were fixed:
  1210.     a) numerous mod_proxy bugs
  1211.     b) CGI early-termination bug [Ben Laurie]
  1212.     c) Keepalives not working with virtual hosts
  1213.     d) RefererIgnore problems
  1214.     e) closing fd's twice in mod_include (causing core dumps on
  1215.        Linux and elsewhere).
  1216.  
  1217. Changes with Apache 1.1b2:
  1218.  
  1219.   *) Bugfixes:
  1220.         a) core dumps in mod_digest
  1221.         b) truncated hostnames/ip address in the logs
  1222.         c) relative URL's in mod_imap map files
  1223.  
  1224. Changes with Apache 1.1b1:
  1225.  
  1226.   *) Not listed. See <http://www.apache.org/docs/new_features_1_1.html>
  1227.  
  1228. Changes with Apache 1.0.3:
  1229.  
  1230.   *) Internal redirects which occur in mod_dir.c now preserve the
  1231.      query portion of a request (the bit after the question mark).
  1232.      [Adam Sussman]
  1233.  
  1234.   *) Escape active characters '<', '>' and '&' in html output in
  1235.      directory listings, error messages and redirection links.
  1236.      [David Robinson]
  1237.  
  1238.   *) Apache will now work with LynxOS 2.3 and later [Steven Watt]
  1239.  
  1240.   *) Fix for POSIX compliance in waiting for processes in alloc.c.
  1241.      [Nick Williams]
  1242.  
  1243.   *) setsockopt no longer takes a const declared argument [Martijn Koster]
  1244.  
  1245.   *) Reset timeout timer after each successful fwrite() to the network.
  1246.      This patch adds a reset_timeout() procedure that is called by
  1247.      send_fd() to reset the timeout ever time data is written to the net.
  1248.      [Nathan Schrenk]
  1249.  
  1250.   *) timeout() signal handler now checks for SIGPIPE and reports
  1251.      lost connections in a more user friendly way. [Rob Hartill]
  1252.  
  1253.   *) Location of the "scoreboard" file which used to live in /tmp is
  1254.      now configurable (for OSes that can't use mmap) via ScoreBoardFile
  1255.      which works similar to PidFile (in httpd.conf) [Rob Hartill]
  1256.  
  1257.   *) Include sys/resource.h in the correct place for SunOS4 [Sameer Parekh]
  1258.  
  1259.   *) the pstrcat call in mod_cookies.c didn't have an ending NULL,
  1260.      which caused a SEGV with cookies enabled
  1261.  
  1262.   *) Output warning when MinSpareServers is set to <= 0 and change it to 1
  1263.      [Rob Hartill]
  1264.  
  1265.   *) Log the UNIX textual error returned by some system calls, in
  1266.      particular errors from accept() [David Robinson]
  1267.  
  1268.   *) Add strerror function to util.c for SunOS4 [Randy Terbush]
  1269.  
  1270. Changes with Apache 1.0.2
  1271.  
  1272.   *) patch to get Apache compiled on UnixWare 2.x, recommended as
  1273.      a temporary measure, pending rewrite of rfc931.c. [Chuck Murcko]
  1274.  
  1275.   *) Fix get_basic_auth_pw() to set the auth_type of the request.
  1276.      [David Robinson]
  1277.  
  1278.   *) past changes to http_config.c to only use the
  1279.      setrlimit function on systems defining RLIMIT_NOFILE
  1280.      broke the feature on SUNOS4. Now defines HAVE_RESOURCE
  1281.      for SUNOS and prototypes the needed functions.
  1282.  
  1283.   *) Remove uses of MAX_STRING_LEN/HUGE_STRING_LEN from several routines.
  1284.      [David Robinson]
  1285.  
  1286.   *) Fix use of pointer to scratch memory. [Cliff Skolnick]
  1287.  
  1288.   *) Merge multiple headers from CGI scripts instead of taking last
  1289.      one. [David Robinson]
  1290.  
  1291.   *) Add support for SCO 5. [Ben Laurie]
  1292.  
  1293. Changes with Apache 1.0.1
  1294.  
  1295.   *) Silence mod_log_referer and mod_log_agent if not configured
  1296.      [Randy Terbush]
  1297.  
  1298.   *) Recursive includes can occur if the client supplies PATH_INFO data
  1299.      and the server provider uses relative links; as file.html
  1300.      relative to /doc.shtml/pathinfo is /doc.shtml/file.html. [David Robinson]
  1301.  
  1302.   *) The replacement for initgroups() did not call {set,end}grent(). This
  1303.      had two implications: if anything else used getgrent(), then
  1304.      initgroups() would fail, and it was consuming a file descriptor.
  1305.      [Ben Laurie]
  1306.  
  1307.   *) On heavily loaded servers it was possible for the scoreboard to get
  1308.      out of sync with reality, as a result of a race condition.
  1309.      The observed symptoms are far more Apaches running than should
  1310.      be, and heavy system loads, generally followed by catastrophic
  1311.      system failure. [Ben Laurie]
  1312.  
  1313.   *) Fix typo in license. [David Robinson]
  1314.  
  1315. Changes with Apache 1.0.0
  1316.  
  1317.   *) Not listed. See <http://www.apache.org/docs/new_features_1_0.html>
  1318.  
  1319. Changes with Apache 0.8.16
  1320.  
  1321.   *) New man page for 'httpd' added to support directory [David Robinson]
  1322.  
  1323.   *) .htgroup files can have more than one line giving members for a
  1324.      given group (each must have the group name in front), for NCSA
  1325.      back-compatibility [Robert Thau]
  1326.  
  1327.   *) Mutual exclusion around accept() is on by default for SVR4 systems
  1328.      generally, since they generally can't handle multiple processes in
  1329.      accept() on the same socket.  This should cure flaky behavior on
  1330.      a lot of those systems.  [David Robinson]
  1331.  
  1332.   *) AddType, AddEncoding, and AddLanguage directives take multiple
  1333.      extensions on a single command line [David Robinson]
  1334.  
  1335.   *) UserDir can be disabled for a given virtual host by saying
  1336.      "UserDir disabled" in the <VirtualHost> section --- it was a bug
  1337.      that this didn't work.  [David Robinson]
  1338.  
  1339.   *) Compiles on QNX [Ben Laurie]
  1340.  
  1341.   *) Corrected parsing of ctime time format [David Robinson]
  1342.  
  1343.   *) httpd does a perror() before exiting if it can't log its pid
  1344.      to the PidFile, to make diagnosing the error a bit easier.
  1345.      [David Robinson]
  1346.  
  1347.   *) <!--#include file="..."--> can no longer include files in the
  1348.      parent directory, for NCSA back-compatibility.  [David Robinson]
  1349.  
  1350.   *) '~' is *not* escaped in URIs generated for directory listings
  1351.      [Roy Fielding]
  1352.  
  1353.   *) Eliminated compiler warning in the imagemap module [Randy Terbush]
  1354.  
  1355.   *) Fixed bug involving handling URIs with escaped %-characters
  1356.      in redirects [David Robinson]
  1357.  
  1358. Changes with Apache 0.8.15
  1359.  
  1360.   *) Switched to new, simpler license
  1361.  
  1362.   *) Eliminated core dumps with improperly formatted DBM group files [Mark Cox]
  1363.  
  1364.   *) Don't allow requests for ordinary files to have PATH_INFO [Ben Laurie]
  1365.  
  1366.   *) Reject paths containing %-escaped '%' or null characters [David Robinson]
  1367.  
  1368.   *) Correctly handles internal redirects to files with names containing '%'
  1369.      [David Robinson]
  1370.  
  1371.   *) Repunctuated some error messages [Aram Mirzadeh, Andrew Wilson]
  1372.  
  1373.   *) Use geteuid() rather than getuid() to see if we have root privilege,
  1374.      so that server correctly resets privilege if run setuid root.  [Andrew
  1375.      Wilson]
  1376.  
  1377.   *) Handle ftp: and telnet: URLs correctly in imagemaps (built-in module)
  1378.      [Randy Terbush]
  1379.  
  1380.   *) Fix relative URLs in imagemap files [Randy Terbush]
  1381.  
  1382.   *) Somewhat better fix for the old "Alias /foo/ /bar/" business
  1383.      [David Robinson]
  1384.  
  1385.   *) Don't repeatedly open the ErrorLog if a bunch of <VirtualHost>
  1386.      entries all name the same one. [David Robinson]
  1387.  
  1388.   *) Fix directory listings with filenames containing unusual characters
  1389.      [David Robinson]
  1390.  
  1391.   *) Better URI-escaping for generated URIs in directories with filenames
  1392.      containing unusual characters [Ben Laurie]
  1393.  
  1394.   *) Fixed potential FILE* leak in http_main.c [Ben Laurie]
  1395.  
  1396.   *) Unblock alarms on error return from spawn_child() [David Robinson]
  1397.  
  1398.   *) Sample Config files have extra note for SCO users [Ben Laurie]
  1399.  
  1400.   *) Configuration has note for HP-UX users [Rob Hartill]
  1401.  
  1402.   *) Eliminated some bogus Linux-only #defines in conf.h [Aram Mirzadeh]
  1403.  
  1404.   *) Nuked bogus #define in httpd.h [David Robinson]
  1405.  
  1406.   *) Better test for whether a system has setrlimit() [David Robinson]
  1407.  
  1408.   *) Calls update_child_status() after reopen_scoreboard() [David Robinson]
  1409.  
  1410.   *) Doesn't send itself SIGHUP on startup when run in the -X debug-only mode
  1411.      [Ben Laurie]
  1412.  
  1413. Changes with Apache 0.8.14
  1414.  
  1415.   *) Compiles on SCO ODT 3.0 [Ben Laurie]
  1416.  
  1417.   *) AddDescription works (better) [Ben Laurie]
  1418.  
  1419.   *) Leaves an intelligible error diagnostic when it can't set group
  1420.      privileges on standalone startup [Andrew Wilson]
  1421.  
  1422.   *) Compiles on NeXT again --- the 0.8.13 RLIMIT patch was failing on
  1423.      that machine, which claims to be BSD but does not support RLIMIT.
  1424.      [Randy Terbush]
  1425.  
  1426.   *) gcc -Wall no longer complains about an unused variable when util.c
  1427.      is compiled with -DMINIMAL_DNS [Andrew Wilson]
  1428.  
  1429.   *) Nuked another compiler warning for -Wall on Linux [Aram Mirzadeh]
  1430.  
  1431. Changes with Apache 0.8.13
  1432.  
  1433.   *) Make IndexIgnore *work* (ooops) [Jarkko Torppa]
  1434.  
  1435.   *) Have built-in imagemap code recognize & honor Point directive [James
  1436.      Cloos]
  1437.  
  1438.   *) Generate cleaner directory listings in directories with a mix of
  1439.      long and short filenames [Rob Hartill]
  1440.  
  1441.   *) Properly initialize dynamically loaded modules [Royston Shufflebotham]
  1442.  
  1443.   *) Properly default ServerName for virtual servers [Robert Thau]
  1444.  
  1445.   *) Rationalize handling of BSD in conf.h and elsewhere [Randy Terbush,
  1446.      Paul Richards and a cast of thousands...]
  1447.  
  1448.   *) On self-identified BSD systems (we don't try to guess any more),
  1449.      allocate a few extra file descriptors per virtual host with setrlimit,
  1450.      if we can, to avoid running out. [Randy Terbush]
  1451.  
  1452.   *) Write 22-character lock file name into buffer with enough space
  1453.      on startup [Konstantin Olchanski]
  1454.  
  1455.   *) Use archaic setpgrp() interface on NeXT, which requires it [Brian
  1456.      Pinkerton]
  1457.  
  1458.   *) Suppress -Wall warning by casting const away in util.c [Aram Mirzadeh]
  1459.  
  1460.   *) Suppress -Wall warning by initializing variable in negotiation code
  1461.      [Tobias Weingartner]
  1462.  
  1463. Changes with Apache 0.8.12
  1464.  
  1465.   *) Doesn't pause three seconds after including a CGI script which is
  1466.      too slow to die off (this is done by not even trying to kill off
  1467.      subprocesses, including the SIGTERM/pause/SIGKILL routine, until
  1468.      after the entire document has been processed).  [Robert Thau]
  1469.  
  1470.   *) Doesn't do SSI if Options Includes is off.  (Ooops).  [David Robinson]
  1471.  
  1472.   *) Options IncludesNoExec allows inclusion of at least text/* [Roy Fielding]
  1473.  
  1474.   *) Allows .htaccess files to override <Directory> sections naming the
  1475.      same directory [David Robinson]
  1476.  
  1477.   *) Removed an efficiency hack in sub_req_lookup_uri which was
  1478.      causing certain extremely marginal cases (e.g., ScriptAlias of a
  1479.      *particular* index.html file) to fail.  [David Robinson]
  1480.  
  1481.   *) Doesn't log an error when the requested URI requires
  1482.      authentication, but no auth header line was supplied by the
  1483.      client; this is a normal condition (the client doesn't no auth is
  1484.      needed here yet).  [Robert Thau]
  1485.  
  1486.   *) Behaves more sanely when the name server loses its mind [Sean Welch]
  1487.  
  1488.   *) RFC931 code compiles cleanly on old BSDI releases [Randy Terbush]
  1489.  
  1490.   *) RFC931 code no longer passes out name of prior clients on current
  1491.      requests if the current request came from a server that doesn't
  1492.      do RFC931.  [David Robinson]
  1493.  
  1494.   *) Configuration script accepts "Module" lines with trailing whitespace.
  1495.      [Robert Thau]
  1496.  
  1497.   *) Cleaned up compiler warning from mod_access.c [Robert Thau]
  1498.  
  1499.   *) Cleaned up comments in mod_cgi.c [Robert Thau]
  1500.  
  1501. Changes with Apache 0.8.11
  1502.  
  1503.   *) Wildcard <Directory> specifications work.  [Robert Thau]
  1504.  
  1505.   *) Doesn't loop for buggy CGI on Solaris [Cliff Skolnick]
  1506.  
  1507.   *) Symlink checks (FollowSymLinks off, or SymLinkIfOwnerMatch) always check
  1508.      the file being requested itself, in addition to the directories leading
  1509.      up to it. [Robert Thau]
  1510.  
  1511.   *) Logs access failures due to symlink checks or invalid client address
  1512.      in the error log [Roy Fielding, Robert Thau]
  1513.  
  1514.   *) Symlink checks deal correctly with systems where lstat of
  1515.      "/path/to/some/link/" follows the link.  [Thau, Fielding]
  1516.  
  1517.   *) Doesn't reset DirectoryIndex to 'index.html' when
  1518.      other directory options are set in a .htaccess file.  [Robert Thau]
  1519.  
  1520.   *) Clarified init code and nuked bogus warning in mod_access.c
  1521.      [Florent Guillaume]
  1522.  
  1523.   *) Corrected several directives in sample srm.conf
  1524.      --- includes corrections to directory indexing icon-related directives
  1525.      (using unknown.gif rather than unknown.xbm as the DefaultIcon, doing
  1526.      icons for encodings right, and turning on AddEncoding by default).
  1527.      [Roy Fielding]
  1528.  
  1529.   *) Corrected descriptions of args to AddIcon and AddAlt in command table
  1530.      [James Cloos]
  1531.  
  1532.   *) INSTALL & README mention "contributed modules" directory [Brian
  1533.      Behlendorf]
  1534.  
  1535.   *) Fixed English in the license language...  "for for" --> "for".
  1536.      [Roy Fielding]
  1537.  
  1538.   *) Fixed ScriptAlias/Alias interaction by moving ScriptAlias handling to
  1539.      mod_alias.c, merging it almost completely with handling of Alias, and
  1540.      adding a 'notes' field to the request_rec which allows the CGI module
  1541.      to discover whether the Alias module has put this request through
  1542.      ScriptAlias (which it needs to know for back-compatibility, as the old
  1543.      NCSA code did not check Options ExecCGI in ScriptAlias directories).
  1544.      [Robert Thau]
  1545.  
  1546.  
  1547. Changes with Apache 0.8.10
  1548.  
  1549.   *) AllowOverride applies to the named directory, and not just
  1550.      subdirectories.  [David Robinson]
  1551.  
  1552.   *) Do locking for accept() exclusion (on systems that need it)
  1553.      using a special file created for the purpose in /usr/tmp, and
  1554.      not the error log; using the error log causes real problems
  1555.      if it's NFS-mounted; this is known to be the cause of a whole
  1556.      lot of "server hang" problems with Solaris.  [David Robinson;
  1557.      thanks to Merten Schumann for help diagnosing the problem].
  1558.  
  1559. Changes with Apache 0.8.9
  1560.  
  1561.   *) Compiles with -DMAXIMUM_DNS ---- ooops! [Henrik Mortensen]
  1562.  
  1563.   *) Nested includes see environment variables of the including document,
  1564.      for NCSA bug-compatibility (some sites have standard footer includes
  1565.      which try to print out the last-modified date).  [Eric Hagberg/Robert
  1566.      Thau]
  1567.  
  1568.   *) <!--exec cgi="/some/uri/here"--> always treats the item named by the
  1569.      URI as a CGI script, even if it would have been treated as something
  1570.      else if requested directly, for NCSA back-compatibility.  (Note that
  1571.      this means that people who know the name of the script can see the
  1572.      code just by asking for it).  [Robert Thau]
  1573.  
  1574.   *) New version of dbmmanage script included in support directory as
  1575.      dbmmanage.new.
  1576.  
  1577.   *) Check if scoreboard file couldn't be opened, and say so, rather
  1578.      then going insane [David Robinson]
  1579.  
  1580.   *) POST to CGI works on A/UX [Jim Jagielski]
  1581.  
  1582.   *) AddIcon and AddAlt commands work properly [Rob Hartill]
  1583.  
  1584.   *) NCSA server push works properly --- the Arena bug compatibility
  1585.      workaround, which broke it, is gone (use -DARENA_BUG_WORKAROUND
  1586.      if you still want the workaround).  [Rob Hartill]
  1587.  
  1588.   *) If client didn't submit any Accept-encodings, ignore encodings in
  1589.      content negotiation.  (NB this will all have to be reworked anyway
  1590.      for the new HTTP draft).  [Florent Guillaume]
  1591.  
  1592.   *) Don't dump core when trying to log timed-out requests [Jim Jagielski]
  1593.  
  1594.   *) Really honor CacheNegotiatedDocs [Florent Guillaume]
  1595.  
  1596.   *) Give Redirect priority over Alias, for NCSA bug compatibility
  1597.      [David Robinson]
  1598.  
  1599.   *) Correctly set PATH_TRANSLATED in all cases from <!--#exec cmd=""-->,
  1600.      paralleling earlier bug fix for CGI [David Robinson]
  1601.  
  1602.   *) If DBM auth is improperly configured, report a server error and don't
  1603.      dump core.
  1604.  
  1605.   *) Deleted FCNTL_SERIALIZED_ACCEPTS from conf.h entry for A/UX;
  1606.      it seems to work well enough without it (even in a 10 hits/sec
  1607.      workout), and the overhead for the locking under A/UX is
  1608.      alarmingly high (though it is very low on other systems).
  1609.      [Eric Hagberg]
  1610.  
  1611.   *) Fixed portability problems with mod_cookies.c [Cliff Skolnick]
  1612.  
  1613.   *) Further de-Berklize mod_cookies.c; change the bogus #include.  [Brian
  1614.      Behlendorf/Eric Hagberg]
  1615.  
  1616.   *) More improvements to default Configuration for A/UX [Jim Jagielski]
  1617.  
  1618.   *) Compiles clean on NEXT [Rob Hartill]
  1619.  
  1620.   *) Compiles clean on SGI [Robert Thau]
  1621.  
  1622. Changes with Apache 0.8.8
  1623.  
  1624.   *) SunOS library prototypes now never included unless explicitly
  1625.      requested in the configuration (via -DSUNOS_LIB_PROTOTYPES);
  1626.      people using GNU libc on SunOS are screwed by prototypes for the
  1627.      standard library.
  1628.  
  1629.      (Those who wish to compile clean with gcc -Wall on a standard
  1630.      SunOS setup need the prototypes, and may obtain them using
  1631.      -DSUNOS_LIB_PROTOTYPES.  Those wishing to use -Wall on a system
  1632.      with nonstandard libraries are presumably competent to make their
  1633.      own arrangements).
  1634.  
  1635.   *) Strips trailing '/' characters off both args to the Alias command,
  1636.      to make 'Alias /foo/ /bar/' work.
  1637.  
  1638. Changes with Apache 0.8.7
  1639.  
  1640.   *) Don't hang when restarting with a child from 'TransferLog "|..."' running
  1641.      [reported by David Robinson]
  1642.  
  1643.   *) Compiles clean on OSF/1 [David Robinson]
  1644.  
  1645.   *) Added some of the more recent significant changes (AddLanguage stuff,
  1646.      experimental LogFormat support) to CHANGES file in distribution root
  1647.      directory
  1648.  
  1649. Changes with Apache 0.8.6
  1650.  
  1651.   *) Deleted Netscape reload workaround --- it's in violation of HTTP specs.
  1652.      (If you actually wanted a conditional GET which bypassed the cache, you
  1653.      couldn't get it). [Reported by Roy Fielding]
  1654.  
  1655.   *) Properly terminate headers on '304 Not Modified' replies to conditional
  1656.      GETs --- no browser we can find cares much, but the CERN proxy chokes.
  1657.      [Reported by Cliff Skolnick; fix discovered independently by Rob Hartill]
  1658.  
  1659.   *) httpd -v doesn't call itself "Shambhala".  [Reported by Chuck Murcko]
  1660.  
  1661.   *) SunOS lib-function prototypes in conf.h conditionalized on __GNUC__,
  1662.      not __SUNPRO_C (they're needed to quiet gcc -Wall, but acc chokes on 'em,
  1663.      and older versions don't set the __SUNPRO_C preprocessor variable).  On
  1664.      all other systems, these are never used anyway.  [Reported by Mark Cox].
  1665.  
  1666.   *) Scoreboard file (/tmp/htstatus.*) no longer publically writable.
  1667.  
  1668. Changes with Apache 0.8.5
  1669.  
  1670.   *) Added last-minute configurable log experiment, as optional module
  1671.  
  1672.   *) Correctly set r->bytes_sent for HTTP/0.9 requests, so they get logged
  1673.      properly.  (One-line fix to http_protocol.c).
  1674.  
  1675.   *) Work around bogus behavior when reloading from Netscape.
  1676.      It's Netscape's bug --- for some reason they expect a request with
  1677.      If-modified-since: to not function as a conditional GET if it also
  1678.      comes with Pragma: no-cache, which is way out of line with the HTTP
  1679.      spec (according to Roy Fielding, the redactor).
  1680.  
  1681.   *) Added parameter to set maximum number of server processes.
  1682.  
  1683.   *) Added patches to make it work on A/UX.  A/UX is *weird*.  [Eric Hagberg]
  1684.  
  1685.   *) IdentityCheck bugfix [Chuck Murcko].
  1686.  
  1687.   *) Corrected cgi-src/Makefile entry for new imagemap script.  [Alexei Kosut]
  1688.  
  1689.   *) More sample config file corrections; add extension to AddType for
  1690.      *.asis, move AddType generic description to its proper place, and
  1691.      fix miscellaneous typos. [ Alexei Kosut ]
  1692.  
  1693.   *) Deleted the *other* reference to the regents from the Berkeley
  1694.      legal disclaimer (everyplace).
  1695.  
  1696.   *) Nuked Shambhala name from src/README; had already cleaned it out
  1697.      of everywhere else.
  1698.  
  1699. Changes with Apache 0.8.4
  1700.  
  1701.   *) Changes to server-pool management parms --- renamed current
  1702.      StartServers to MinSpareServers, created separate StartServers
  1703.      parameter which means what it says, and renamed MaxServers to
  1704.      MaxSpareServers (though the old name still works, for NCSA 1.4
  1705.      back-compatibility).  The old names were generally regarded as
  1706.      too confusing.  Also altered "docs" in sample config files.
  1707.  
  1708.   *) More improvements to default config files ---
  1709.      sample directives (commented out) for XBitHack, BindAddress,
  1710.      CacheNegotiatedDocs, VirtualHost; decent set of AddLanguage
  1711.      defaults, AddTypes for send-as-is and imagemap magic types, and
  1712.      improvements to samples for DirectoryIndex [Alexei Kosut]
  1713.  
  1714.   *) Yet more improvements to default config files --- changes to
  1715.      Alexei's sample AddLanguage directives, and sample LanguagePriority
  1716.      [ Florent Guillaume ]
  1717.  
  1718.   *) Set config file locations properly if not set in httpd.conf
  1719.      [ David Robinson ]
  1720.  
  1721.   *) Don't escape URIs in internal redirects multiple times; don't
  1722.      do that when translating PATH_INFO to PATH_TRANSLATED either.
  1723.      [ David Robinson ]
  1724.  
  1725.   *) Corrected spelling of "Required" in 401 error reports [Andrew Wilson]
  1726.  
  1727. Changes with Apache 0.8.3
  1728.  
  1729.   *) Edited distribution README to *briefly* summarize installation
  1730.      procedures, and give a pointer to the INSTALL file in the src/
  1731.      directory.
  1732.  
  1733.   *) Upgraded imagemap script in cgi-bin to 1.8 version from more
  1734.      recent NCSA distributions.
  1735.  
  1736.   *) Bug fix to previous bug fix --- if .htaccess file and <Directory>
  1737.      exist for the same directory, use both and don't segfault.  [Reported
  1738.      by David Robinson]
  1739.  
  1740.   *) Proper makefile dependencies [David Robinson]
  1741.  
  1742.   *) Note (re)starts in error log --- reported by Rob Hartill.
  1743.  
  1744.   *) Only call no2slash() after get_path_info() has been done, to
  1745.      preserve multiple slashes in the PATH_INFO [NCSA compatibility,
  1746.      reported by Andrew Wilson, though this one is probably a real bug]
  1747.  
  1748.   *) Fixed mod_imap.c --- relative paths with base_uri referer don't
  1749.      dump core when Referer is not supplied. [Randy Terbush]
  1750.  
  1751.   *) Lightly edited sample config files to refer people to our documentation
  1752.      instead of NCSA's, and to list Rob McCool as *original* author (also
  1753.      deleted his old, and no doubt non-functional email address).  Would be
  1754.      nice to have examples of new features...
  1755.  
  1756. Changes with Apache 0.8.2
  1757.  
  1758.   *) Added AddLanuage code [Florent Guillaume]
  1759.  
  1760.   *) Don't say "access forbidden" when a CGI script is not found.  [Mark Cox]
  1761.  
  1762.   *) All sorts of problems when MultiViews finds a directory.  It would
  1763.      be nice if mod_dir.c was robust enough to handle that, but for now,
  1764.      just punt.  [reported by Brian Behlendorf]
  1765.  
  1766.   *) Wait for all children on restart, to make sure that the old socket
  1767.      is gone and we can reopen it.  [reported by Randy Terbush]
  1768.  
  1769.   *) Imagemap module is enabled in default Configuration
  1770.  
  1771.   *) RefererLog and UserAgentLog modules properly default the logfile
  1772.      [Randy Terbush]
  1773.  
  1774.   *) Mark Cox's mod_cookies added to the distribution as an optional
  1775.      module (commented out in the default Configuration, and noted as
  1776.      an experiment, along with mod_dld). [Mark Cox]
  1777.  
  1778.   *) Compiles on Ultrix (a continuing battle...). [Robert Thau]
  1779.  
  1780.   *) Fixed nasty bug in SIGTERM handling [reported by Randy Terbush]
  1781.  
  1782.   *) Changed "Shambhala" to "Apache" in API docs. [Robert Thau]
  1783.  
  1784.   *) Added new, toothier legal disclaimer. [Robert Thau; copied from BSD
  1785.      license]
  1786.  
  1787. Changes with Apache 0.8.1
  1788.  
  1789.   *) New imagemap module [Randy Terbush]
  1790.  
  1791.   *) Replacement referer log module with NCSA-compatible RefererIgnore
  1792.      [Matthew Gray again]
  1793.  
  1794.   *) Don't mung directory listings with very long filenames.
  1795.      [Florent Guillaume]
  1796.  
  1797. Changes with Apache 0.8.0 (nee Shambhala 0.6.2):
  1798.  
  1799.   *) New config script.  See INSTALL for info.  [Robert Thau]
  1800.  
  1801.   *) Scoreboard mechanism for regulating the number of extant server
  1802.      processes.  MaxServers and StartServers defaults are the same as
  1803.      for NCSA, but the meanings are slightly different.  (Actually,
  1804.      I should probably lower the MaxServers default to 10).
  1805.  
  1806.      Before asking for a new connection, each server process checks
  1807.      the number of other servers which are also waiting for a
  1808.      connection.  If there are more than MaxServers, it quietly dies
  1809.      off.  Conversely, every second, the root, or caretaker, process
  1810.      looks to see how many servers are waiting for a new connection;
  1811.      if there are fewer than StartServers, it starts a new one.  This
  1812.      does not depend on the number of server processes already extant.
  1813.      The accounting is arranged through a "scoreboard" file, named
  1814.      /tmp/htstatus.*, on which each process has an independent file
  1815.      descriptor (they need to seek without interference).
  1816.  
  1817.      The end effect is that MaxServers is the maximum number of
  1818.      servers on an *inactive* server machine, but more will be forked
  1819.      off to handle unusually heavy loads (or unusually slow clients);
  1820.      these will die off when they are no longer needed --- without
  1821.      reverting to the overhead of full forking operation.  There is a
  1822.      hard maximum of 150 server processes compiled in, largely to
  1823.      avoid forking out of control and dragging the machine down.
  1824.      (This is arguably too high).
  1825.  
  1826.      In my server endurance tests, this mechanism did not appear to
  1827.      impose any significant overhead, even after I forced it to put the
  1828.      scoreboard file on a normal filesystem (which might have more
  1829.      overhead than tmpfs).  [Robert Thau]
  1830.  
  1831.   *) Set HTTP_FOO variables for SSI <!--#exec cmd-->s, not just CGI scripts.
  1832.      [Cliff Skolnick]
  1833.  
  1834.   *) Read .htaccess files even in directory with <Directory> section.
  1835.      (Former incompatibility noted on mailing list, now fixed). [Robert
  1836.      Thau]
  1837.  
  1838.   *) "HEAD /" gives the client a "Bad Request" error message, rather
  1839.      than trying to send no body *and* no headers.  [Cliff Skolnick].
  1840.  
  1841.   *) Don't produce double error reports for some very obscure cases
  1842.      mainly involving auth configuration (the "all modules decline to
  1843.      handle" case which is a sure sign of a server bug in most cases,
  1844.      but also happens when authentication is badly misconfigured).
  1845.      [Robert Thau]
  1846.  
  1847.   *) Moved FCNTL_SERIALIZED_ACCEPT defines into conf.h (that's what
  1848.      it's *for*, and this sort of thing really shouldn't be cluttering
  1849.      up the Makefile). [Robert Thau]
  1850.  
  1851.   *) Incidental code cleanups in http_main.c --- stop dragging
  1852.      sa_client around; just declare it where used.  [Robert Thau]
  1853.  
  1854.   *) Another acc-related fix.  (It doesn't like const char
  1855.      in some places...). [Mark Cox]
  1856.  
  1857. Changes with 0.6.1
  1858.  
  1859.   *) Fixed auth_name-related typos in http_core.c [Brian Behlendorf]
  1860.      Also, fixed auth typo in http_protocol.c unmasked by this fix.
  1861.  
  1862.   *) Compiles clean with acc on SunOS [Paul Sutton]
  1863.  
  1864.   *) Reordered modules in modules.c so that Redirect takes priority
  1865.      over ScriptAlias, for NCSA bug-compatibility [Rob Hartill] ---
  1866.      believe it or not, he has an actual site with a ScriptAlias and
  1867.      a Redirect declared for the *exact same directory*.  Even *my*
  1868.      compatibility fetish wouldn't motivate me to fix this if the fix
  1869.      required any effort, but it doesn't, so what the hey.
  1870.  
  1871.   *) Fixed to properly default several server_rec fields for virtual
  1872.      servers from the corresponding fields in the main server_rec.
  1873.      [Cliff Skolnick --- 'port' was a particular irritant].
  1874.  
  1875.   *) No longer kills off nph- child processes before they are
  1876.      finished sending output. [Matthew Gray]
  1877.  
  1878. Changes with 0.6.0
  1879.  
  1880.   *) Two styles of timeout --- hard and soft.  soft_timeout()s just put
  1881.      the connection to the client in an "aborted" state, but otherwise
  1882.      allow whatever handlers are running to clean up.  hard_timeout()s
  1883.      abort the request in progress completely; anything not tied to some
  1884.      resource pool cleanup will leak.  They're still around because I
  1885.      haven't yet come up with a more elegant way of handling
  1886.      timeouts when talking to something that isn't the client.  The
  1887.      default_handler and the dir_handler now use soft timeouts, largely
  1888.      so I can test the feature.  [Robert Thau]
  1889.  
  1890.   *) TransferLog "| my_postprocessor ..." seems to be there.  Note that
  1891.      the case of log handlers dying prematurely is probably handled VERY
  1892.      gracelessly at this point, and if the logger stops reading input,
  1893.      the server will hang.  (It is known to correctly restart the
  1894.      logging process on server restart; this is (should be!) going through
  1895.      the same SIGTERM/pause/SIGKILL routine used to ding an errant CGI
  1896.      script).  [Robert Thau]
  1897.  
  1898.   *) asis files supported (new module).  [Robert Thau]
  1899.  
  1900.   *) IdentityCheck code is compiled in, but has not been tested.  (I
  1901.      don't know anyone who runs identd). [Robert Thau]
  1902.  
  1903.   *) PATH_INFO and PATH_TRANSLATED are not set unless some real PATH_INFO
  1904.      came in with the request, for NCSA bug-compatibility. [Robert Thau]
  1905.  
  1906.   *) Don't leak the DIR * on HEAD request for a directory. [Robert Thau]
  1907.  
  1908.   *) Deleted the block_alarms() stuff from dbm_auth; no longer necessary,
  1909.      as timeouts are not in scope. [Robert Thau]
  1910.  
  1911.   *) quoted-string args in config files now handled correctly (doesn't drop
  1912.      the last character). [Robert Thau; reported by Randy Terbush]
  1913.  
  1914.   *) Fixed silly typo in http_main.c which was suddenly fatal in HP-UX.
  1915.      How the hell did it ever work? [Robert Thau; reported by Rob Hartill]
  1916.  
  1917.   *) mod_core.c --- default_type returns DEFAULT_TYPE (the compile-time
  1918.      default default type); the former default default behavior when all
  1919.      type-checkers defaulted had been a core dump.  [Paul Sutton]
  1920.  
  1921.   *) Copy filenames out of the struct dirent when indexing
  1922.      directories.  (On Linux, readdir() returns a pointer to the same
  1923.      memory area every time).  Fix is in mod_dir.c.  [Paul Sutton]
  1924.  
  1925. Changes with 0.5.3 [not released]
  1926.  
  1927.   *) Default response handler notes "file not found" in the error log,
  1928.      if the file was not found.  [Cliff Skolnick].
  1929.  
  1930.   *) Another Cliff bug --- "GET /~user" now properly redirects (the userdir
  1931.      code no longer sets up bogus PATH_INFO which fakes out the directory
  1932.      handler). [Cliff Skolnick]
  1933.  
  1934. Changes with 0.5.2
  1935.  
  1936.   *) Changes to http_main.c --- root server no longer plays silly
  1937.      games with SIGCHLD, and so now detects and replaces dying
  1938.      children.  Child processes just die on SIGTERM, without taking
  1939.      the whole process group with them.  Potential problem --- if any
  1940.      child process refuses to die, we hang in restart.
  1941.      MaxRequestsPerChild may still not work, but it certainly works
  1942.      better than it did before this!  [Robert Thau]
  1943.  
  1944.   *) mod_dir.c bug fixes: ReadmeName and HeaderName
  1945.      work (or work better, at least); over-long description lines
  1946.      properly terminated. [Mark Cox]
  1947.  
  1948.   *) http_request.c now calls unescape_url() more places where it
  1949.      should [Paul Sutton].
  1950.  
  1951.   *) More directory handling bugs (reported by Cox)
  1952.      Parent Directory link is now set correctly. [Robert Thau]
  1953.  
  1954. Changes with 0.5.1: [Hopefully complete]                  10 Apr 1995
  1955.  
  1956.   *) Generalized cleanup interface in alloc.c --- any function can be
  1957.      registered with alloc.c as a cleanup for a resource pool;
  1958.      tracking of files and file descriptors has been reimplemented in
  1959.      terms of this interface, so I can give it some sort of a test.
  1960.      [Robert Thau]
  1961.  
  1962.   *) More changes in alloc.c --- new cleanup_for_exec() function,
  1963.      which tracks down and closes all file descriptors which have been
  1964.      registered with the alloc.c machinery before the server exec()s a
  1965.      child process for CGI or <!--#exec-->.  CGI children now get
  1966.      started with exactly three file descriptors open.  Hopefully,
  1967.      this cures the problem Rob H. was having with overly persistent
  1968.      CGI connections. [Robert Thau]
  1969.  
  1970.   *) Mutual exclusion around the accept() in child_main() --- this is
  1971.      required on at least SGI, Solaris and Linux, and is #ifdef'ed in
  1972.      by default on those systems only (-DFCNTL_SERIALIZED_ACCEPT).
  1973.      This uses fcntl(F_SETLK,...) on the error log descriptor because
  1974.      flock() on that descriptor won't work on systems which have BSD
  1975.      flock() semantics, including (I think) Linux 1.3 and Solaris.
  1976.  
  1977.      This does work on SunOS (when the server is idle, only one
  1978.      process in the pool is waiting on accept()); it *ought* to work
  1979.      on the other systems. [Robert Thau]
  1980.  
  1981.   *) FreeBSD and BSDI portability tweaks [Chuck Murcko]
  1982.  
  1983.   *) sizeof(*sa_client) bugfix from [Rob Hartill]
  1984.  
  1985.   *) pstrdup(..., NULL) returns NULL, [Randy Terbush]
  1986.  
  1987.   *) block_alarms() to avoid leaking the DBM* in dbm auth (this should
  1988.      be unnecessary if I go to the revised timeout-handling scheme).
  1989.      [Robert Thau]
  1990.  
  1991.   *) For NCSA bug-compatibility, set QUERY_STRING env var (to a null
  1992.      string) even if none came in with the request.  [Robert Thau]
  1993.  
  1994.   *) CHANGES file added to distribution ;-).
  1995.  
  1996. Changes with 0.4                                          02 Apr 1995
  1997.  
  1998.   *) Patches by Brian Behlendorf, Andrew Wilson, Robert Thau,
  1999.      and Rob Hartill.
  2000.  
  2001. Changes with 0.3                                          24 Mar 1995
  2002.  
  2003.   *) Patches by Robert Thau, David Robinson, Rob Hartill, and
  2004.      Carlos Varela
  2005.  
  2006. Changes with 0.2                                          18 Mar 1995
  2007.  
  2008.   *) Based on NCSA httpd 1.3 by Rob McCool and patches by CERT,
  2009.      Roy Fielding, Robert Thau, Nicolas Pioch, David Robinson,
  2010.      Brian Behlendorf, Rob Hartill, and Cliff Skolnick
  2011.