CHANGES 409 KB
Newer Older
8001 8002 8003 8004 8005 8006 8007 8008 8009 8010 8011 8012 8013 8014 8015 8016 8017 8018 8019 8020 8021 8022 8023 8024 8025 8026 8027 8028 8029 8030 8031 8032 8033 8034 8035 8036 8037 8038 8039 8040 8041 8042 8043 8044 8045 8046 8047 8048 8049 8050 8051 8052 8053 8054 8055 8056 8057 8058 8059 8060 8061 8062 8063 8064 8065 8066 8067 8068 8069 8070 8071 8072 8073 8074 8075 8076 8077 8078 8079 8080 8081 8082 8083 8084 8085 8086 8087 8088 8089 8090 8091 8092 8093 8094 8095 8096 8097 8098 8099 8100 8101 8102 8103 8104 8105 8106 8107 8108 8109 8110 8111 8112 8113 8114 8115 8116 8117 8118 8119 8120 8121 8122 8123 8124 8125 8126 8127 8128 8129 8130 8131 8132 8133 8134 8135 8136 8137 8138 8139 8140 8141 8142 8143 8144 8145 8146 8147 8148 8149 8150 8151 8152 8153 8154 8155 8156 8157 8158 8159 8160 8161 8162 8163 8164 8165 8166 8167 8168 8169 8170 8171 8172 8173 8174 8175 8176 8177 8178 8179 8180 8181 8182 8183 8184 8185 8186 8187 8188 8189 8190 8191 8192 8193 8194 8195 8196 8197 8198 8199 8200 8201 8202 8203 8204 8205 8206 8207 8208 8209 8210 8211 8212 8213 8214 8215 8216 8217 8218 8219 8220 8221 8222 8223 8224 8225 8226 8227 8228 8229 8230 8231 8232 8233 8234 8235 8236 8237 8238 8239 8240 8241 8242 8243 8244 8245 8246 8247 8248 8249 8250 8251 8252 8253 8254 8255 8256 8257 8258 8259 8260 8261 8262 8263 8264 8265 8266 8267 8268 8269 8270 8271 8272 8273 8274 8275 8276 8277 8278 8279 8280 8281 8282 8283 8284 8285 8286 8287 8288 8289 8290 8291 8292 8293 8294 8295 8296 8297 8298 8299 8300 8301 8302 8303 8304 8305 8306 8307 8308 8309 8310 8311 8312 8313 8314 8315 8316 8317 8318 8319 8320 8321 8322 8323 8324 8325 8326 8327 8328 8329 8330 8331 8332 8333 8334 8335 8336 8337 8338 8339 8340 8341 8342 8343 8344 8345 8346 8347 8348 8349 8350 8351 8352 8353 8354 8355 8356 8357 8358 8359 8360 8361 8362 8363 8364 8365 8366 8367 8368 8369 8370 8371 8372 8373 8374 8375 8376 8377 8378 8379 8380 8381 8382 8383 8384 8385 8386 8387 8388 8389 8390 8391 8392 8393 8394 8395 8396 8397 8398 8399 8400 8401 8402 8403 8404 8405 8406 8407 8408 8409 8410 8411 8412 8413 8414 8415 8416 8417 8418 8419 8420 8421 8422 8423 8424 8425 8426 8427 8428 8429 8430 8431 8432 8433 8434 8435 8436 8437 8438 8439 8440 8441 8442 8443 8444 8445 8446 8447 8448 8449 8450 8451 8452 8453 8454 8455 8456 8457 8458 8459 8460 8461 8462 8463 8464 8465 8466 8467 8468 8469 8470 8471 8472 8473 8474 8475 8476 8477 8478 8479 8480 8481 8482 8483 8484 8485 8486 8487 8488 8489 8490 8491 8492 8493 8494 8495 8496 8497 8498 8499 8500 8501 8502 8503 8504 8505 8506 8507 8508 8509 8510 8511 8512 8513 8514 8515 8516 8517 8518 8519 8520 8521 8522 8523 8524 8525 8526 8527 8528 8529 8530 8531 8532 8533 8534 8535 8536 8537 8538 8539 8540 8541 8542 8543 8544 8545 8546 8547 8548 8549 8550 8551 8552 8553 8554 8555 8556 8557 8558 8559 8560 8561 8562 8563 8564 8565 8566 8567 8568 8569 8570 8571 8572 8573 8574 8575 8576 8577 8578 8579 8580 8581 8582 8583 8584 8585 8586 8587 8588 8589 8590 8591 8592 8593 8594 8595 8596 8597 8598 8599 8600 8601 8602 8603 8604 8605 8606 8607 8608 8609 8610 8611 8612 8613 8614 8615 8616 8617 8618 8619 8620 8621 8622 8623 8624 8625 8626 8627 8628 8629 8630 8631 8632 8633 8634 8635 8636 8637 8638 8639 8640 8641 8642 8643 8644 8645 8646 8647 8648 8649 8650 8651 8652 8653 8654 8655 8656 8657 8658 8659 8660 8661 8662 8663 8664 8665 8666 8667 8668 8669 8670 8671 8672 8673 8674 8675 8676 8677 8678 8679 8680 8681 8682 8683 8684 8685 8686 8687 8688 8689 8690 8691 8692 8693 8694 8695 8696 8697 8698 8699 8700 8701 8702 8703 8704 8705 8706 8707 8708 8709 8710 8711 8712 8713 8714 8715 8716 8717 8718 8719 8720 8721 8722 8723 8724 8725 8726 8727 8728 8729 8730 8731 8732 8733 8734 8735 8736 8737 8738 8739 8740 8741 8742 8743 8744 8745 8746 8747 8748 8749 8750 8751 8752 8753 8754 8755 8756 8757 8758 8759 8760 8761 8762 8763 8764 8765 8766 8767 8768 8769 8770 8771 8772 8773 8774 8775 8776 8777 8778 8779 8780 8781 8782 8783 8784 8785 8786 8787 8788 8789 8790 8791 8792 8793 8794 8795 8796 8797 8798 8799 8800 8801 8802 8803 8804 8805 8806 8807 8808 8809 8810 8811 8812 8813 8814 8815 8816 8817 8818 8819 8820 8821 8822 8823 8824 8825 8826 8827 8828 8829 8830 8831 8832 8833 8834 8835 8836 8837 8838 8839 8840 8841 8842 8843 8844 8845 8846 8847 8848 8849 8850 8851 8852 8853 8854 8855 8856 8857 8858 8859 8860 8861 8862 8863 8864 8865 8866 8867 8868 8869 8870 8871 8872 8873 8874 8875 8876 8877 8878 8879 8880 8881 8882 8883 8884 8885 8886 8887 8888 8889 8890 8891 8892 8893 8894 8895 8896 8897 8898 8899 8900 8901 8902 8903 8904 8905 8906 8907 8908 8909 8910 8911 8912 8913 8914 8915 8916 8917 8918 8919 8920 8921 8922 8923 8924 8925 8926 8927 8928 8929 8930 8931 8932 8933 8934 8935 8936 8937 8938 8939 8940 8941 8942 8943 8944 8945 8946 8947 8948 8949 8950 8951 8952 8953 8954 8955 8956 8957 8958 8959 8960 8961 8962 8963 8964 8965 8966 8967 8968 8969 8970 8971 8972 8973 8974 8975 8976 8977 8978 8979 8980 8981 8982 8983 8984 8985 8986 8987 8988 8989 8990 8991 8992 8993 8994 8995 8996 8997 8998 8999 9000
     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);
     these will die off when they are no longer needed --- without
     reverting to the overhead of full forking operation.  There is a
     hard maximum of 150 server processes compiled in, largely to
     avoid forking out of control and dragging the machine down.
     (This is arguably too high).

     In my server endurance tests, this mechanism did not appear to
     impose any significant overhead, even after I forced it to put the
     scoreboard file on a normal filesystem (which might have more
     overhead than tmpfs).  [Robert Thau]

  *) Set HTTP_FOO variables for SSI <!--#exec cmd-->s, not just CGI scripts.
     [Cliff Skolnick]

  *) Read .htaccess files even in directory with <Directory> section.
     (Former incompatibility noted on mailing list, now fixed). [Robert
     Thau]

  *) "HEAD /" gives the client a "Bad Request" error message, rather
     than trying to send no body *and* no headers.  [Cliff Skolnick].

  *) Don't produce double error reports for some very obscure cases
     mainly involving auth configuration (the "all modules decline to
     handle" case which is a sure sign of a server bug in most cases,
     but also happens when authentication is badly misconfigured).
     [Robert Thau]

  *) Moved FCNTL_SERIALIZED_ACCEPT defines into conf.h (that's what
     it's *for*, and this sort of thing really shouldn't be cluttering
     up the Makefile). [Robert Thau]

  *) Incidental code cleanups in http_main.c --- stop dragging
     sa_client around; just declare it where used.  [Robert Thau]

  *) Another acc-related fix.  (It doesn't like const char
     in some places...). [Mark Cox]

Changes with Shambhala 0.6.1                                     13 Jul 1995

  *) Fixed auth_name-related typos in http_core.c [Brian Behlendorf]
     Also, fixed auth typo in http_protocol.c unmasked by this fix.

  *) Compiles clean with acc on SunOS [Paul Sutton]

  *) Reordered modules in modules.c so that Redirect takes priority
     over ScriptAlias, for NCSA bug-compatibility [Rob Hartill] ---
     believe it or not, he has an actual site with a ScriptAlias and
     a Redirect declared for the *exact same directory*.  Even *my*
     compatibility fetish wouldn't motivate me to fix this if the fix
     required any effort, but it doesn't, so what the hey.

  *) Fixed to properly default several server_rec fields for virtual
     servers from the corresponding fields in the main server_rec.
     [Cliff Skolnick --- 'port' was a particular irritant].

  *) No longer kills off nph- child processes before they are
     finished sending output. [Matthew Gray]

Changes with Shambhala 0.6.0                                     10 Jul 1995

  *) Two styles of timeout --- hard and soft.  soft_timeout()s just put
     the connection to the client in an "aborted" state, but otherwise
     allow whatever handlers are running to clean up.  hard_timeout()s
     abort the request in progress completely; anything not tied to some
     resource pool cleanup will leak.  They're still around because I
     haven't yet come up with a more elegant way of handling
     timeouts when talking to something that isn't the client.  The
     default_handler and the dir_handler now use soft timeouts, largely
     so I can test the feature.  [Robert Thau]

  *) TransferLog "| my_postprocessor ..." seems to be there.  Note that
     the case of log handlers dying prematurely is probably handled VERY
     gracelessly at this point, and if the logger stops reading input,
     the server will hang.  (It is known to correctly restart the
     logging process on server restart; this is (should be!) going through
     the same SIGTERM/pause/SIGKILL routine used to ding an errant CGI
     script).  [Robert Thau]