Skip to content
CHANGES 584 KiB
Newer Older
12001 12002 12003 12004 12005 12006 12007 12008 12009 12010 12011 12012 12013 12014 12015 12016 12017 12018 12019 12020 12021 12022 12023 12024 12025 12026 12027 12028 12029 12030 12031 12032 12033 12034 12035 12036 12037 12038 12039 12040 12041 12042 12043 12044 12045 12046 12047 12048 12049 12050 12051 12052 12053 12054 12055 12056 12057 12058 12059 12060 12061 12062 12063 12064 12065 12066 12067 12068 12069 12070 12071 12072 12073 12074 12075 12076 12077 12078 12079 12080 12081 12082 12083 12084 12085 12086 12087 12088 12089 12090 12091 12092 12093 12094 12095 12096 12097 12098 12099 12100 12101 12102 12103 12104 12105 12106 12107 12108 12109 12110 12111 12112 12113 12114 12115 12116 12117 12118 12119 12120 12121 12122 12123 12124 12125 12126 12127 12128 12129 12130 12131 12132 12133 12134 12135 12136 12137 12138 12139 12140 12141 12142 12143 12144 12145 12146 12147 12148 12149 12150 12151 12152 12153 12154 12155 12156 12157 12158 12159 12160 12161 12162 12163 12164 12165 12166 12167 12168 12169 12170 12171 12172 12173 12174 12175 12176 12177 12178 12179 12180 12181 12182 12183 12184 12185 12186 12187 12188 12189 12190 12191 12192 12193 12194 12195 12196 12197 12198 12199 12200 12201 12202 12203 12204 12205 12206 12207 12208 12209 12210 12211 12212 12213 12214 12215 12216 12217 12218 12219 12220 12221 12222 12223 12224 12225 12226 12227 12228 12229 12230 12231 12232 12233 12234 12235 12236 12237 12238 12239 12240 12241 12242 12243 12244 12245 12246 12247 12248 12249 12250 12251 12252 12253 12254 12255 12256 12257 12258 12259 12260 12261 12262 12263 12264 12265 12266 12267 12268 12269 12270 12271 12272 12273 12274 12275 12276 12277 12278 12279 12280 12281 12282 12283 12284 12285 12286 12287 12288 12289 12290 12291 12292 12293 12294 12295 12296 12297 12298 12299 12300 12301 12302 12303 12304 12305 12306 12307 12308 12309 12310 12311 12312 12313 12314 12315 12316 12317 12318 12319 12320 12321 12322 12323 12324 12325 12326 12327 12328 12329 12330 12331 12332 12333 12334 12335 12336 12337 12338 12339 12340 12341 12342 12343 12344 12345 12346 12347 12348 12349 12350 12351 12352 12353 12354 12355 12356 12357 12358 12359 12360 12361 12362 12363 12364 12365 12366 12367 12368 12369 12370 12371 12372 12373 12374 12375 12376 12377 12378 12379 12380 12381 12382 12383 12384 12385 12386 12387 12388 12389 12390 12391 12392 12393 12394 12395 12396 12397 12398 12399 12400 12401 12402 12403 12404 12405 12406 12407 12408 12409 12410 12411 12412 12413 12414 12415 12416 12417 12418 12419 12420 12421 12422 12423 12424 12425 12426 12427 12428 12429 12430 12431 12432 12433 12434 12435 12436 12437 12438 12439 12440 12441 12442 12443 12444 12445 12446 12447 12448 12449 12450 12451 12452 12453 12454 12455 12456 12457 12458 12459 12460 12461 12462 12463 12464 12465 12466 12467 12468 12469 12470 12471 12472 12473 12474 12475 12476 12477 12478 12479 12480 12481 12482 12483 12484 12485 12486 12487 12488 12489 12490 12491 12492 12493 12494 12495 12496 12497 12498 12499 12500 12501 12502 12503 12504 12505 12506 12507 12508 12509 12510 12511 12512 12513 12514 12515 12516 12517 12518 12519 12520 12521 12522 12523 12524 12525 12526 12527 12528 12529 12530 12531 12532 12533 12534 12535 12536 12537 12538 12539 12540 12541 12542 12543 12544 12545 12546 12547 12548 12549 12550 12551 12552 12553 12554 12555 12556 12557 12558 12559 12560 12561 12562 12563 12564 12565 12566 12567 12568 12569 12570 12571 12572 12573 12574 12575 12576 12577 12578 12579 12580 12581 12582 12583 12584 12585 12586 12587 12588 12589 12590 12591 12592 12593 12594 12595 12596 12597 12598 12599 12600 12601 12602 12603 12604 12605 12606 12607 12608 12609 12610 12611 12612 12613 12614 12615 12616 12617 12618 12619 12620 12621 12622 12623 12624 12625 12626 12627 12628 12629 12630 12631 12632 12633 12634 12635 12636 12637 12638 12639 12640 12641 12642 12643 12644 12645 12646 12647 12648 12649 12650 12651 12652 12653 12654 12655 12656 12657 12658 12659 12660 12661 12662 12663 12664 12665 12666 12667 12668 12669 12670 12671 12672 12673 12674 12675 12676 12677 12678 12679 12680 12681 12682 12683 12684 12685 12686 12687 12688 12689 12690 12691 12692 12693 12694 12695 12696 12697 12698 12699 12700 12701 12702 12703 12704 12705 12706 12707 12708 12709 12710 12711 12712 12713 12714 12715 12716 12717 12718 12719 12720 12721 12722 12723 12724 12725 12726 12727 12728 12729 12730 12731 12732 12733 12734 12735 12736 12737 12738 12739 12740 12741 12742 12743 12744 12745 12746 12747 12748 12749 12750 12751 12752 12753 12754 12755 12756 12757 12758 12759 12760 12761 12762 12763 12764 12765 12766 12767 12768 12769 12770 12771 12772 12773 12774 12775 12776 12777 12778 12779 12780 12781 12782 12783 12784 12785 12786 12787 12788 12789 12790 12791 12792 12793 12794 12795 12796 12797 12798 12799 12800 12801 12802 12803 12804 12805 12806 12807 12808 12809 12810 12811 12812 12813 12814 12815 12816 12817 12818 12819 12820 12821 12822 12823 12824 12825 12826 12827 12828 12829 12830 12831 12832 12833 12834 12835 12836 12837 12838 12839 12840 12841 12842 12843 12844 12845 12846 12847 12848 12849 12850 12851 12852 12853 12854 12855 12856 12857 12858 12859 12860 12861 12862 12863 12864 12865 12866 12867 12868 12869 12870 12871 12872 12873 12874 12875 12876 12877 12878 12879 12880 12881 12882 12883 12884 12885 12886 12887 12888 12889 12890 12891 12892 12893 12894 12895 12896 12897 12898 12899 12900 12901 12902 12903 12904 12905 12906 12907 12908 12909 12910 12911 12912 12913 12914 12915 12916 12917 12918 12919 12920 12921 12922 12923 12924 12925 12926 12927 12928 12929 12930 12931 12932 12933 12934 12935 12936 12937 12938 12939 12940 12941 12942 12943 12944 12945 12946 12947 12948 12949 12950 12951 12952 12953 12954 12955 12956 12957 12958 12959 12960 12961 12962 12963 12964 12965 12966 12967 12968 12969 12970 12971 12972 12973 12974 12975 12976 12977 12978 12979 12980 12981 12982 12983 12984 12985 12986 12987 12988 12989 12990 12991 12992 12993 12994 12995 12996 12997 12998 12999 13000
     overflows. [Marc Slemko]

  *) Provide portable snprintf() implementation (ap_snprintf)
     as well as *cvt family. [Jim Jagielski]

  *) Portability Fix: NeXT lacks unistd.h so we wrap it's inclusion
     [Jim Jagielski]

  *) Remove mod_fastcgi.c from the distribution. This module appears
     to be maintained more through the Open Market channels and should
     continue to be easily available at http://www.fastcgi.com/

  *) Fixed bug in modules/Makefile that wouldn't allow building in more
     than one subdirectory (or cleaning, either). [Jeremy Laidman]

  *) mod_info assumed that the config files were relative to ServerRoot.
     [Ken the Rodent]

  *) CGI scripts called as an error document resulting from failed
     CGI execution would hang waiting for POST'ed data. [Rob Hartill]

  *) Log reason when mod_dir returns access HTTP_FORBIDDEN
     [Ken the Rodent]

  *) Properly check errno to prevent display of a directory index
     when server receives a long enough URL to confuse stat().
     [Marc Slemko]

  *) Several security enhancements to suexec wrapper. It is _highly_
     recommended that previously installed versions of the wrapper
     be replaced with this version.  [Randy Terbush, Jason Dour]

        - ~user execution now properly restricted to ~user's home
          directory and below.
        - execution restricted to UID/GID > 100
        - restrict passed environment to known variables
        - call setgid() before initgroups() (portability fix)
        - remove use of setenv() (portability fix)

  *) Add HTTP/1.0 response forcing. [Ben Laurie]

  *) Add access control via environment variables. [Ben Laurie]

  *) Add rflush() function. [Alexei Kosut]

  *) remove duplicate pcalloc() call in new_connection().

  *) Fix incorrect comparison which could allow number of children =
     MaxClients + 1 if less than HARD_SERVER_LIMIT. Also fix potential
     problem if StartServers > HARD_SERVER_LIMIT. [Ed Korthof]

  *) Updated support for OSes (MachTen, ULTRIX, Paragon, ISC, OpenBSD
     AIX PS/2, CONVEXOS. [Jim Jagielski]

  *) Replace instances of inet_ntoa() with inet_addr() for ProxyBlock.
     It's more portable. [Martin Kraemer]

  *) Replace references to make in Makefile.tmpl with $(MAKE).
     [Chuck Murcko]

  *) Add ProxyBlock directive w/IP address caching. Add IP address
     caching to NoCache directive as well. ProxyBlock works with all
     handlers; NoCache now also works with FTP for anonymous logins.
     Still more code cleanup. [Chuck Murcko]

  *) Add "header parse" API hook [Ben Laurie]

  *) Fix byte ordering problems for REMOTE_PORT [Chuck Murcko]

  *) suEXEC wrapper was freeing memory that had not been malloc'ed.

  *) Correctly allow access and auth directives in <Files> sections in
     server config files. [Alexei Kosut]

  *) Fix bug with ServerPath that could cause certain files to be not
     found by the server. [Alexei Kosut]

  *) Fix handling of ErrorDocument so that it doesn't remove a trailing
     double-quote from text and so that it properly checks for unsupported
     status codes using the new index_of_response interface. [Roy Fielding]

  *) Multiple fixes to the lingering_close code in order to avoid being
     interrupted by a stray timeout, to avoid lingering on a connection
     that has already been aborted or never really existed, to ensure that
     we stop lingering as soon as any error condition is received, and to
     prevent being stuck indefinitely if the read blocks.  Also improves
     reporting of error conditions.  [Marc Slemko and Roy Fielding]

  *) Fixed initialization of parameter structure for sigaction.
     [mgyger@itr.ch, Adrian Filipi-Martin]

  *) Fixed reinitializing the parameters before each call to accept and
     select, and removed potential for infinite loop in accept.
     [Roy Fielding, after useful PR from adrian@virginia.edu]

  *) Fixed condition where, if a child fails to fork, the scoreboard would
     continue to say SERVER_STARTING forever. Eventually, the main process
     would refuse to start new children because count_idle_servers() will
     count those SERVER_STARTING entries and will always report that there
     are enough idle servers. [Phillip Vandry]

  *) Fixed bug in bcwrite regarding failure to account for partial writes.
     Avoided calling bflush() when the client is pipelining requests.
     Removed unnecessary flushes from http_protocol. [Dean Gaudet]

  *) Added description of "." mode in server-status [Jim Jagielski]

Changes with Apache 1.2b4

  *) Fix possible race condition in accept_mutex_init() that
     could leave a small security hole open allowing files to be
     overwritten in cases where the server UID has write permissions.
     [Marc Slemko]

  *) Fix awk compatibilty problem in Configure. [Jim Jagielski]

  *) Fix portablity problem in util_script where ARG_MAX may not be
     defined for some systems.

  *) Add changes to allow compilation on Machten 4.0.3 for PowerPC.
     [Randal Schwartz]

  *) OS/2 changes to support an MMAP style scoreboard file and UNIX
     style magic #! token for better script portability. [Garey Smiley]

  *) Fix bug in suexec wrapper introduced in b3 that would cause failed
     execution for ~userdir CGI. [Jason Dour]

  *) Fix initgroups() business in suexec wrapper. [Jason Dour]

  *) Fix month off by one in suexec wrapper logging.

Changes with Apache 1.2b3:

  *) Fix error in mod_cgi which could cause resources not to be properly
     freed, or worse. [Dean Gaudet]

  *) Fix find_string() NULL pointer dereference. [Howard Fear]

  *) Add set_flag_slot() at the request of Dirk and others.
     [Dirk vanGulik]

  *) Sync mod_rewrite with patch level 10. [Ralf Engelschall]

  *) Add changes to improve the error message given for invalid
     ServerName parameters. [Dirk vanGulik]

  *) Add "Authoritative" directive for Auth modules that don't
     currently have it. This gives admin control to assign authoritative
     control to an authentication scheme and allow "fall through" for
     those authentication modules that aren't "Authoritative" thereby
     allowing multiple authentication mechanisms to be chained.
     [Dirk vanGulik]

  *) Remove requirement for ResourceConfig/AccessConfig if not using
     the three config file layout. [Randy Terbush]

  *) Add PASV mode to mod_proxy FTP handler. [Chuck Murcko]

  *) Changes to suexec wrapper to fix the following problems:
     1.  symlinked homedirs will kill ~userdirs.
     2.  initgroups() on Linux 2.0.x clobbers gr->grid.
     3.  CGI command lines paramters problems
     4.  pw-pwdir for "docroot check" still the httpd user's pw record.
    [Randy Terbush, Jason Dour]

  *) Change create_argv() to accept variable arguments. This fixes
     a problem where arguments were not getting passed to the CGI via
     argv[] when the suexec wrapper was active. [Randy Terbush, Jake Buchholz]

  *) Collapse multiple slashes in path URLs to properly apply
     handlers defined by <Location>. [Alexei Kosut]

  *) Define a sane set of DEFAULT_USER and DEFAULT_GROUP values for AIX.

  *) Improve the accuracy of request duration timings by setting
     r->request_time in read_request_line() instead of read_request().
     [Dean Gaudet]

  *) Reset timeout while reading via get_client_block() in mod_cgi.c
     Fixes problem with timed out transfers of large files. [Rasmus Lerdorf]

  *) Add the ability to pass different Makefile.tmpl files to Configure
     using the -make flag. [Rob Hartill]

  *) Fix coredump triggered when sending a SIGHUP to the server caused
     by an assertion failure, in turn caused by an uninitialised field in a
     listen_rec.
     [Ben Laurie]

  *) Add FILEPATH_INFO variable to CGI environment, which is equal to
     PATH_INFO from previous versions of Apache (in certain situations,
     Apache 1.2's PATH_INFO will be different than 1.1's). [Alexei Kosut]
     [later removed in 1.2b11]

  *) Add rwrite() function to API to allow for sending strings of
     arbitrary length. [Doug MacEachern]

  *) Remove rlim_t typedef for NetBSD. Do older versions need this?

  *) Defined rlim_t and WANTHSREGEX=yes and fixed waitpid() substitute for
     NeXT. [Jim Jagielski]

  *) Removed recent modification to promote the status code on internal
     redirects, since the correct fix was to change the default log format
     in mod_log_config so that it outputs the original status. [Rob Hartill]

Changes with Apache 1.2b2:

  *) Update set_signals() to use sigaction() for setting handlers.
     This appears to fix a re-entrant problem in the seg_fault()
     bus_error() handlers. [Randy Terbush]

  *) Changes to allow mod_status compile for OS/2 [Garey Smiley]

  *) changes for DEC AXP running OSF/1 v3.0. [Marc Evans]

  *) proxy_http.c bugfixes:  [Chuck Murcko]
        1) fixes possible NULL pointer reference w/NoCache
        2) fixes NoCache behavior when using ProxyRemote (ProxyRemote
           host would cache nothing if it was in the local domain,
           and the local domain was in the NoCache list)
        3) Adds Host: header when not available
        4) Some code cleanup and clarification

  *) mod_include.c bugfixes:
        1) Fixed an ommission that caused include variables to not
           be parsed in config errmsg directives [Howard Fear]
        2) Remove HAVE_POSIX_REGEX cruft [Alexei Kosut]
        3) Patch to fix compiler warnings [perrot@lal.in2p3.fr]
        4) Allow backslash-escaping to all quoted text
           [Ben Yoshino <ben@wiliki.eng.hawaii.edu>]
        5) Pass variable to command line if not set in XSSI's env
           [Howard Fear]

  *) Fix infinite loop when processing Content-language lines in
     type-map files. [Alexei Kosut]

  *) Closed file-globbing hole in test-cgi script. [Brian Behlendorf]

  *) Fixed problem in set_[user|group] that prevented CGI execution
     for non-virtualhosts when suEXEC was enabled. [Randy Terbush]

  *) Added PORTING information file.  [Jim Jagielski]

  *) Added definitions for S_IWGRP and S_IWOTH to conf.h [Ben Laurie]

  *) Changed default group to "nogroup" instead of "nobody" [Randy Terbush]

  *) Fixed define typo of FCNTL_SERIALIZED_ACCEPT where
     USE_FCNTL_SERIALIZED_ACCEPT was intended.

  *) Fixed additional uses of 0xffffffff where INADDR_NONE was intended,
     which caused problems of systems where socket s_addr is >32bits.

  *) Added comment to explain (r->chunked = 1) side-effect in
     http_protocol.c [Roy Fielding]

  *) Replaced use of index() in mod_expires.c with more appropriate
     and portable isdigit() test.  [Ben Laurie]

  *) Updated Configure for ...
        OS/2          (DEF_WANTHSREGEX=yes, other code changes)
        *-dg-dgux*    (bad pattern match)
        QNX           (DEF_WANTHSREGEX=yes)
        *-sunos4*     (DEF_WANTHSREGEX=yes, -DUSEBCOPY)
        *-ultrix      (new)
        *-unixware211 (new)
     and added some user diagnostic info.  [Ben Laurie]

  *) In helpers/CutRule, replaced "cut" invocation with "awk" invocation
     for better portability. [Jim Jagielski]

  *) Updated helpers/GuessOS for ...
        SCO 5            (recognize minor releases)
        SCO UnixWare     (braindamaged uname, whatever-whatever-unixware2)
        SCO UnixWare 2.1.1      (requires a separate set of #defines in conf.h)
        IRIX64           (-sgi-irix64)
        ULTRIX           (-unknown-ultrix)
        SINIX            (-whatever-sysv4)
        NCR Unix         (-ncr-sysv4)
     and fixed something in helpers/PrintPath  [Ben Laurie]

Changes with Apache 1.2b1

  *) Not listed. See <http://www.apache.org/docs/new_features_1_2.html>

Changes with Apache 1.1.1

  *) Fixed bug where Cookie module would make two entries in the
     logfile for each access [Mark Cox]

  *) Fixed bug where Redirect in .htaccess files would cause memory
     leak. [Nathan Neulinger]

  *) MultiViews now works correctly with AddHandler [Alexei Kosut]

  *) Problems with mod_auth_msql fixed [Dirk vanGulik]

  *) Fix misspelling of "Anonymous_Authorative" directive in mod_auth_anon.

Changes with Apache 1.1.0

  *) Bring NeXT support up to date. [Takaaki Matsumoto]

  *) Bring QNX support up to date. [Ben Laurie]

  *) Make virtual hosts default to main server keepalive parameters.
     [Alexei Kosut, Ben Laurie]

  *) Allow ScanHTMLTitles to work with lowercase <title> tags. [Alexei Kosut]

  *) Fix missing address family for connect, also remove unreachable statement
     in mod_proxy. [Ben Laurie]

  *) mod_env now turned on by default in Configuration.tmpl.

  *) Bugs which were fixed:
        a) yet more mod_proxy bugs [Ben Laurie]
        b) CGI works again with inetd [Alexei Kosut]
        c) Leading colons were stripped from passwords [osm@interguide.com]
        d) Another fix to multi-method Limit problem [jk@tools.de]

Changes with Apache 1.1b4

  *) r->bytes_sent variable restored. [Robert Thau]

  *) Previously broken multi-method <Limit> parsing fixed. [Robert Thau]

  *) More possibly unsecure programs removed from the support directory.

  *) More mod_auth_msql authentication improvements.

  *) VirtualHosts based on Host: headers no longer conflict with the
     Listen directive.

  *) OS/2 compatibility enhancements. [Gary Smiley]

  *) POST now allowed to directory index CGI scripts.

  *) Actions now work with files of the default type.

  *) Bugs which were fixed:
        a) more mod_proxy bugs
        b) early termination of inetd requests
        c) compile warnings on several systems
        d) problems when scripts stop reading output early

Changes with Apache 1.1b3

  *) Much of cgi-bin and all of cgi-src has been removed, due to
     various security holes found and that we could no longer support
     them.

  *) The "Set-Cookie" header is now special-cased to not merge multiple
     instances, since certain popular browsers can not handle multiple
     Set-Cookie instructions in a single header. [Paul Sutton]

  *) rprintf() added to buffer code, occurrences of sprintf removed.
     [Ben Laurie]

  *) CONNECT method for proxy module, which means tunneling SSL should work.
     (No crypto needed)  Also a NoCache config directive.

  *) Several API additions: pstrndup(), table_unset() and get_token()
     functions now available to modules.

  *) mod_imap fixups, in particular Location: headers are now complete
     URL's.

  *) New "info" module which reports on installed module set through a
     special URL, a la mod_status.

  *) "ServerPath" directive added - allows for graceful transition
     for Host:-header-based virtual hosts.

  *) Anonymous authentication module improvements.

  *) MSQL authentication module improvements.

  *) Status module design improved - output now table-based. [Ben Laurie]

  *) htdigest utility included for use with digest authentication
     module.

  *) mod_negotiation: Accept values with wildcards to be treated with
     less priority than those without wildcards at the same quality
     value. [Alexei Kosut]

  *) Bugs which were fixed:
        a) numerous mod_proxy bugs
        b) CGI early-termination bug [Ben Laurie]
        c) Keepalives not working with virtual hosts
        d) RefererIgnore problems
        e) closing fd's twice in mod_include (causing core dumps on
           Linux and elsewhere).

Changes with Apache 1.1b2

  *) Bugfixes:
        a) core dumps in mod_digest
        b) truncated hostnames/ip address in the logs
        c) relative URL's in mod_imap map files

Changes with Apache 1.1b1

  *) Not listed. See <http://www.apache.org/docs/new_features_1_1.html>

Changes with Apache 1.0.3

  *) Internal redirects which occur in mod_dir.c now preserve the
     query portion of a request (the bit after the question mark).
     [Adam Sussman]

  *) Escape active characters '<', '>' and '&' in html output in
     directory listings, error messages and redirection links.
     [David Robinson]

  *) Apache will now work with LynxOS 2.3 and later [Steven Watt]

  *) Fix for POSIX compliance in waiting for processes in alloc.c.
     [Nick Williams]

  *) setsockopt no longer takes a const declared argument [Martijn Koster]

  *) Reset timeout timer after each successful fwrite() to the network.
     This patch adds a reset_timeout() procedure that is called by
     send_fd() to reset the timeout ever time data is written to the net.
     [Nathan Schrenk]

  *) timeout() signal handler now checks for SIGPIPE and reports
     lost connections in a more user friendly way. [Rob Hartill]

  *) Location of the "scoreboard" file which used to live in /tmp is
     now configurable (for OSes that can't use mmap) via ScoreBoardFile
     which works similar to PidFile (in httpd.conf) [Rob Hartill]

  *) Include sys/resource.h in the correct place for SunOS4 [Sameer Parekh]

  *) the pstrcat call in mod_cookies.c didn't have an ending NULL,
     which caused a SEGV with cookies enabled

  *) Output warning when MinSpareServers is set to <= 0 and change it to 1
     [Rob Hartill]

  *) Log the UNIX textual error returned by some system calls, in
     particular errors from accept() [David Robinson]

  *) Add strerror function to util.c for SunOS4 [Randy Terbush]

Changes with Apache 1.0.2

  *) patch to get Apache compiled on UnixWare 2.x, recommended as
     a temporary measure, pending rewrite of rfc931.c. [Chuck Murcko]

  *) Fix get_basic_auth_pw() to set the auth_type of the request.
     [David Robinson]

  *) past changes to http_config.c to only use the
     setrlimit function on systems defining RLIMIT_NOFILE
     broke the feature on SUNOS4. Now defines HAVE_RESOURCE
     for SUNOS and prototypes the needed functions.

  *) Remove uses of MAX_STRING_LEN/HUGE_STRING_LEN from several routines.
     [David Robinson]

  *) Fix use of pointer to scratch memory. [Cliff Skolnick]

  *) Merge multiple headers from CGI scripts instead of taking last
     one. [David Robinson]

  *) Add support for SCO 5. [Ben Laurie]

Changes with Apache 1.0.1

  *) Silence mod_log_referer and mod_log_agent if not configured
     [Randy Terbush]

  *) Recursive includes can occur if the client supplies PATH_INFO data
     and the server provider uses relative links; as file.html
     relative to /doc.shtml/pathinfo is /doc.shtml/file.html. [David Robinson]

  *) The replacement for initgroups() did not call {set,end}grent(). This
     had two implications: if anything else used getgrent(), then
     initgroups() would fail, and it was consuming a file descriptor.
     [Ben Laurie]

  *) On heavily loaded servers it was possible for the scoreboard to get
     out of sync with reality, as a result of a race condition.
     The observed symptoms are far more Apaches running than should
     be, and heavy system loads, generally followed by catastrophic
     system failure. [Ben Laurie]

  *) Fix typo in license. [David Robinson]

Changes with Apache 1.0.0                                        23 Nov 1995

  *) Not listed. See <http://www.apache.org/docs/new_features_1_0.html>

Changes with Apache 0.8.16                                       05 Nov 1995

  *) New man page for 'httpd' added to support directory [David Robinson]

  *) .htgroup files can have more than one line giving members for a
     given group (each must have the group name in front), for NCSA
     back-compatibility [Robert Thau]

  *) Mutual exclusion around accept() is on by default for SVR4 systems
     generally, since they generally can't handle multiple processes in
     accept() on the same socket.  This should cure flaky behavior on
     a lot of those systems.  [David Robinson]

  *) AddType, AddEncoding, and AddLanguage directives take multiple
     extensions on a single command line [David Robinson]

  *) UserDir can be disabled for a given virtual host by saying
     "UserDir disabled" in the <VirtualHost> section --- it was a bug
     that this didn't work.  [David Robinson]

  *) Compiles on QNX [Ben Laurie]

  *) Corrected parsing of ctime time format [David Robinson]

  *) httpd does a perror() before exiting if it can't log its pid
     to the PidFile, to make diagnosing the error a bit easier.
     [David Robinson]

  *) <!--#include file="..."--> can no longer include files in the
     parent directory, for NCSA back-compatibility.  [David Robinson]

  *) '~' is *not* escaped in URIs generated for directory listings
     [Roy Fielding]

  *) Eliminated compiler warning in the imagemap module [Randy Terbush]

  *) Fixed bug involving handling URIs with escaped %-characters
     in redirects [David Robinson]

Changes with Apache 0.8.15                                       14 Oct 1995

  *) Switched to new, simpler license

  *) Eliminated core dumps with improperly formatted DBM group files [Mark Cox]

  *) Don't allow requests for ordinary files to have PATH_INFO [Ben Laurie]

  *) Reject paths containing %-escaped '%' or null characters [David Robinson]

  *) Correctly handles internal redirects to files with names containing '%'
     [David Robinson]

  *) Repunctuated some error messages [Aram Mirzadeh, Andrew Wilson]

  *) Use geteuid() rather than getuid() to see if we have root privilege,
     so that server correctly resets privilege if run setuid root.  [Andrew
     Wilson]

  *) Handle ftp: and telnet: URLs correctly in imagemaps (built-in module)
     [Randy Terbush]

  *) Fix relative URLs in imagemap files [Randy Terbush]

  *) Somewhat better fix for the old "Alias /foo/ /bar/" business
     [David Robinson]

  *) Don't repeatedly open the ErrorLog if a bunch of <VirtualHost>
     entries all name the same one. [David Robinson]

  *) Fix directory listings with filenames containing unusual characters
     [David Robinson]

  *) Better URI-escaping for generated URIs in directories with filenames
     containing unusual characters [Ben Laurie]

  *) Fixed potential FILE* leak in http_main.c [Ben Laurie]

  *) Unblock alarms on error return from spawn_child() [David Robinson]

  *) Sample Config files have extra note for SCO users [Ben Laurie]

  *) Configuration has note for HP-UX users [Rob Hartill]

  *) Eliminated some bogus Linux-only #defines in conf.h [Aram Mirzadeh]

  *) Nuked bogus #define in httpd.h [David Robinson]

  *) Better test for whether a system has setrlimit() [David Robinson]

  *) Calls update_child_status() after reopen_scoreboard() [David Robinson]

  *) Doesn't send itself SIGHUP on startup when run in the -X debug-only mode
     [Ben Laurie]

Changes with Apache 0.8.14                                       19 Sep 1995

  *) Compiles on SCO ODT 3.0 [Ben Laurie]

  *) AddDescription works (better) [Ben Laurie]

  *) Leaves an intelligible error diagnostic when it can't set group
     privileges on standalone startup [Andrew Wilson]

  *) Compiles on NeXT again --- the 0.8.13 RLIMIT patch was failing on
     that machine, which claims to be BSD but does not support RLIMIT.
     [Randy Terbush]

  *) gcc -Wall no longer complains about an unused variable when util.c
     is compiled with -DMINIMAL_DNS [Andrew Wilson]

  *) Nuked another compiler warning for -Wall on Linux [Aram Mirzadeh]

Changes with Apache 0.8.13                                       07 Sep 1995

  *) Make IndexIgnore *work* (ooops) [Jarkko Torppa]

  *) Have built-in imagemap code recognize & honor Point directive [James
     Cloos]

  *) Generate cleaner directory listings in directories with a mix of
     long and short filenames [Rob Hartill]

  *) Properly initialize dynamically loaded modules [Royston Shufflebotham]

  *) Properly default ServerName for virtual servers [Robert Thau]

  *) Rationalize handling of BSD in conf.h and elsewhere [Randy Terbush,
     Paul Richards and a cast of thousands...]

  *) On self-identified BSD systems (we don't try to guess any more),
     allocate a few extra file descriptors per virtual host with setrlimit,
     if we can, to avoid running out. [Randy Terbush]

  *) Write 22-character lock file name into buffer with enough space
     on startup [Konstantin Olchanski]

  *) Use archaic setpgrp() interface on NeXT, which requires it [Brian
     Pinkerton]

  *) Suppress -Wall warning by casting const away in util.c [Aram Mirzadeh]

  *) Suppress -Wall warning by initializing variable in negotiation code
     [Tobias Weingartner]

Changes with Apache 0.8.12                                       31 Aug 1995

  *) Doesn't pause three seconds after including a CGI script which is
     too slow to die off (this is done by not even trying to kill off
     subprocesses, including the SIGTERM/pause/SIGKILL routine, until
     after the entire document has been processed).  [Robert Thau]

  *) Doesn't do SSI if Options Includes is off.  (Ooops).  [David Robinson]

  *) Options IncludesNoExec allows inclusion of at least text/* [Roy Fielding]

  *) Allows .htaccess files to override <Directory> sections naming the
     same directory [David Robinson]

  *) Removed an efficiency hack in sub_req_lookup_uri which was
     causing certain extremely marginal cases (e.g., ScriptAlias of a
     *particular* index.html file) to fail.  [David Robinson]

  *) Doesn't log an error when the requested URI requires
     authentication, but no auth header line was supplied by the
     client; this is a normal condition (the client doesn't no auth is
     needed here yet).  [Robert Thau]

  *) Behaves more sanely when the name server loses its mind [Sean Welch]

  *) RFC931 code compiles cleanly on old BSDI releases [Randy Terbush]

  *) RFC931 code no longer passes out name of prior clients on current
     requests if the current request came from a server that doesn't
     do RFC931.  [David Robinson]

  *) Configuration script accepts "Module" lines with trailing whitespace.
     [Robert Thau]

  *) Cleaned up compiler warning from mod_access.c [Robert Thau]

  *) Cleaned up comments in mod_cgi.c [Robert Thau]

Changes with Apache 0.8.11                                       24 Aug 1995

  *) Wildcard <Directory> specifications work.  [Robert Thau]

  *) Doesn't loop for buggy CGI on Solaris [Cliff Skolnick]

  *) Symlink checks (FollowSymLinks off, or SymLinkIfOwnerMatch) always check
     the file being requested itself, in addition to the directories leading
     up to it. [Robert Thau]

  *) Logs access failures due to symlink checks or invalid client address
     in the error log [Roy Fielding, Robert Thau]

  *) Symlink checks deal correctly with systems where lstat of
     "/path/to/some/link/" follows the link.  [Thau, Fielding]

  *) Doesn't reset DirectoryIndex to 'index.html' when
     other directory options are set in a .htaccess file.  [Robert Thau]

  *) Clarified init code and nuked bogus warning in mod_access.c
     [Florent Guillaume]

  *) Corrected several directives in sample srm.conf
     --- includes corrections to directory indexing icon-related directives
     (using unknown.gif rather than unknown.xbm as the DefaultIcon, doing
     icons for encodings right, and turning on AddEncoding by default).
     [Roy Fielding]

  *) Corrected descriptions of args to AddIcon and AddAlt in command table
     [James Cloos]

  *) INSTALL & README mention "contributed modules" directory [Brian
     Behlendorf]

  *) Fixed English in the license language...  "for for" --> "for".
     [Roy Fielding]

  *) Fixed ScriptAlias/Alias interaction by moving ScriptAlias handling to
     mod_alias.c, merging it almost completely with handling of Alias, and
     adding a 'notes' field to the request_rec which allows the CGI module
     to discover whether the Alias module has put this request through
     ScriptAlias (which it needs to know for back-compatibility, as the old
     NCSA code did not check Options ExecCGI in ScriptAlias directories).
     [Robert Thau]

Changes with Apache 0.8.10                                       18 Aug 1995

  *) AllowOverride applies to the named directory, and not just
     subdirectories.  [David Robinson]

  *) Do locking for accept() exclusion (on systems that need it)
     using a special file created for the purpose in /usr/tmp, and
     not the error log; using the error log causes real problems
     if it's NFS-mounted; this is known to be the cause of a whole
     lot of "server hang" problems with Solaris.  [David Robinson;
     thanks to Merten Schumann for help diagnosing the problem].

Changes with Apache 0.8.9                                        12 Aug 1995

  *) Compiles with -DMAXIMUM_DNS ---- ooops! [Henrik Mortensen]

  *) Nested includes see environment variables of the including document,
     for NCSA bug-compatibility (some sites have standard footer includes
     which try to print out the last-modified date).  [Eric Hagberg/Robert
     Thau]

  *) <!--exec cgi="/some/uri/here"--> always treats the item named by the
     URI as a CGI script, even if it would have been treated as something
     else if requested directly, for NCSA back-compatibility.  (Note that
     this means that people who know the name of the script can see the
     code just by asking for it).  [Robert Thau]

  *) New version of dbmmanage script included in support directory as
     dbmmanage.new.

  *) Check if scoreboard file couldn't be opened, and say so, rather
     then going insane [David Robinson]

  *) POST to CGI works on A/UX [Jim Jagielski]

  *) AddIcon and AddAlt commands work properly [Rob Hartill]

  *) NCSA server push works properly --- the Arena bug compatibility
     workaround, which broke it, is gone (use -DARENA_BUG_WORKAROUND
     if you still want the workaround).  [Rob Hartill]

  *) If client didn't submit any Accept-encodings, ignore encodings in
     content negotiation.  (NB this will all have to be reworked anyway
     for the new HTTP draft).  [Florent Guillaume]

  *) Don't dump core when trying to log timed-out requests [Jim Jagielski]

  *) Really honor CacheNegotiatedDocs [Florent Guillaume]

  *) Give Redirect priority over Alias, for NCSA bug compatibility
     [David Robinson]

  *) Correctly set PATH_TRANSLATED in all cases from <!--#exec cmd=""-->,
     paralleling earlier bug fix for CGI [David Robinson]

  *) If DBM auth is improperly configured, report a server error and don't
     dump core.

  *) Deleted FCNTL_SERIALIZED_ACCEPTS from conf.h entry for A/UX;
     it seems to work well enough without it (even in a 10 hits/sec
     workout), and the overhead for the locking under A/UX is
     alarmingly high (though it is very low on other systems).
     [Eric Hagberg, Jim Jagielski]

  *) Fixed portability problems with mod_cookies.c [Cliff Skolnick]

  *) Further de-Berklize mod_cookies.c; change the bogus #include.  [Brian
     Behlendorf/Eric Hagberg]

  *) More improvements to default Configuration for A/UX [Jim Jagielski]

  *) Compiles clean on NEXT [Rob Hartill]

  *) Compiles clean on SGI [Robert Thau]

Changes with Apache 0.8.8                                        08 Aug 1995

  *) SunOS library prototypes now never included unless explicitly
     requested in the configuration (via -DSUNOS_LIB_PROTOTYPES);
     people using GNU libc on SunOS are screwed by prototypes for the
     standard library.

     (Those who wish to compile clean with gcc -Wall on a standard
     SunOS setup need the prototypes, and may obtain them using
     -DSUNOS_LIB_PROTOTYPES.  Those wishing to use -Wall on a system
     with nonstandard libraries are presumably competent to make their
     own arrangements).

  *) Strips trailing '/' characters off both args to the Alias command,
     to make 'Alias /foo/ /bar/' work.

Changes with Apache 0.8.7                                        03 Aug 1995

  *) Don't hang when restarting with a child from 'TransferLog "|..."' running
     [reported by David Robinson]

  *) Compiles clean on OSF/1 [David Robinson]

  *) Added some of the more recent significant changes (AddLanguage stuff,
     experimental LogFormat support) to CHANGES file in distribution root
     directory

Changes with Apache 0.8.6                                        02 Aug 1995

  *) Deleted Netscape reload workaround --- it's in violation of HTTP specs.
     (If you actually wanted a conditional GET which bypassed the cache, you
     couldn't get it). [Reported by Roy Fielding]

  *) Properly terminate headers on '304 Not Modified' replies to conditional
     GETs --- no browser we can find cares much, but the CERN proxy chokes.
     [Reported by Cliff Skolnick; fix discovered independently by Rob Hartill]

  *) httpd -v doesn't call itself "Shambhala".  [Reported by Chuck Murcko]

  *) SunOS lib-function prototypes in conf.h conditionalized on __GNUC__,
     not __SUNPRO_C (they're needed to quiet gcc -Wall, but acc chokes on 'em,
     and older versions don't set the __SUNPRO_C preprocessor variable).  On
     all other systems, these are never used anyway.  [Reported by Mark Cox].

  *) Scoreboard file (/tmp/htstatus.*) no longer publically writable.

Changes with Apache 0.8.5                                        01 Aug 1995

  *) Added last-minute configurable log experiment, as optional module

  *) Correctly set r->bytes_sent for HTTP/0.9 requests, so they get logged
     properly.  (One-line fix to http_protocol.c).

  *) Work around bogus behavior when reloading from Netscape.
     It's Netscape's bug --- for some reason they expect a request with
     If-modified-since: to not function as a conditional GET if it also
     comes with Pragma: no-cache, which is way out of line with the HTTP
     spec (according to Roy Fielding, the redactor).

  *) Added parameter to set maximum number of server processes.

  *) Added patches to make it work on A/UX.  A/UX is *weird*.  [Eric Hagberg,
     Jim Jagielski]

  *) IdentityCheck bugfix [Chuck Murcko].

  *) Corrected cgi-src/Makefile entry for new imagemap script.  [Alexei Kosut]

  *) More sample config file corrections; add extension to AddType for
     *.asis, move AddType generic description to its proper place, and
     fix miscellaneous typos. [ Alexei Kosut ]

  *) Deleted the *other* reference to the regents from the Berkeley
     legal disclaimer (everyplace).

  *) Nuked Shambhala name from src/README; had already cleaned it out
     of everywhere else.

Changes with Apache 0.8.4

  *) Changes to server-pool management parms --- renamed current
     StartServers to MinSpareServers, created separate StartServers
     parameter which means what it says, and renamed MaxServers to
     MaxSpareServers (though the old name still works, for NCSA 1.4
     back-compatibility).  The old names were generally regarded as
     too confusing.  Also altered "docs" in sample config files.

  *) More improvements to default config files ---
     sample directives (commented out) for XBitHack, BindAddress,
     CacheNegotiatedDocs, VirtualHost; decent set of AddLanguage
     defaults, AddTypes for send-as-is and imagemap magic types, and
     improvements to samples for DirectoryIndex [Alexei Kosut]

  *) Yet more improvements to default config files --- changes to
     Alexei's sample AddLanguage directives, and sample LanguagePriority
     [ Florent Guillaume ]

  *) Set config file locations properly if not set in httpd.conf
     [ David Robinson ]

  *) Don't escape URIs in internal redirects multiple times; don't
     do that when translating PATH_INFO to PATH_TRANSLATED either.
     [ David Robinson ]

  *) Corrected spelling of "Required" in 401 error reports [Andrew Wilson]

Changes with Apache 0.8.3

  *) Edited distribution README to *briefly* summarize installation
     procedures, and give a pointer to the INSTALL file in the src/
     directory.

  *) Upgraded imagemap script in cgi-bin to 1.8 version from more
     recent NCSA distributions.

  *) Bug fix to previous bug fix --- if .htaccess file and <Directory>
     exist for the same directory, use both and don't segfault.  [Reported
     by David Robinson]

  *) Proper makefile dependencies [David Robinson]

  *) Note (re)starts in error log --- reported by Rob Hartill.

  *) Only call no2slash() after get_path_info() has been done, to
     preserve multiple slashes in the PATH_INFO [NCSA compatibility,
     reported by Andrew Wilson, though this one is probably a real bug]

  *) Fixed mod_imap.c --- relative paths with base_uri referer don't
     dump core when Referer is not supplied. [Randy Terbush]

  *) Lightly edited sample config files to refer people to our documentation
     instead of NCSA's, and to list Rob McCool as *original* author (also
     deleted his old, and no doubt non-functional email address).  Would be
     nice to have examples of new features...

Changes with Apache 0.8.2                                        19 Jul 1995

  *) Added AddLanuage code [Florent Guillaume]

  *) Don't say "access forbidden" when a CGI script is not found.  [Mark Cox]

  *) All sorts of problems when MultiViews finds a directory.  It would
     be nice if mod_dir.c was robust enough to handle that, but for now,
     just punt.  [reported by Brian Behlendorf]

  *) Wait for all children on restart, to make sure that the old socket
     is gone and we can reopen it.  [reported by Randy Terbush]

  *) Imagemap module is enabled in default Configuration

  *) RefererLog and UserAgentLog modules properly default the logfile
     [Randy Terbush]

  *) Mark Cox's mod_cookies added to the distribution as an optional
     module (commented out in the default Configuration, and noted as
     an experiment, along with mod_dld). [Mark Cox]

  *) Compiles on ULTRIX (a continuing battle...). [Robert Thau]

  *) Fixed nasty bug in SIGTERM handling [reported by Randy Terbush]

  *) Changed "Shambhala" to "Apache" in API docs. [Robert Thau]

  *) Added new, toothier legal disclaimer. [Robert Thau; copied from BSD
     license]

Changes with Apache 0.8.1

  *) New imagemap module [Randy Terbush]

  *) Replacement referer log module with NCSA-compatible RefererIgnore
     [Matthew Gray again]

  *) Don't mung directory listings with very long filenames.
     [Florent Guillaume]

Changes with Apache 0.8.0 (nee Shambhala 0.6.2)                  16 Jul 1995

  *) New config script.  See INSTALL for info.  [Robert Thau]

  *) Scoreboard mechanism for regulating the number of extant server
     processes.  MaxServers and StartServers defaults are the same as
     for NCSA, but the meanings are slightly different.  (Actually,
     I should probably lower the MaxServers default to 10).

     Before asking for a new connection, each server process checks
     the number of other servers which are also waiting for a
     connection.  If there are more than MaxServers, it quietly dies
     off.  Conversely, every second, the root, or caretaker, process
     looks to see how many servers are waiting for a new connection;
     if there are fewer than StartServers, it starts a new one.  This
     does not depend on the number of server processes already extant.
     The accounting is arranged through a "scoreboard" file, named
     /tmp/htstatus.*, on which each process has an independent file
     descriptor (they need to seek without interference).

     The end effect is that MaxServers is the maximum number of
     servers on an *inactive* server machine, but more will be forked
     off to handle unusually heavy loads (or unusually slow clients);