Skip to content
CHANGES 544 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

  *) 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]

  *) asis files supported (new module).  [Robert Thau]

  *) IdentityCheck code is compiled in, but has not been tested.  (I
     don't know anyone who runs identd). [Robert Thau]

  *) PATH_INFO and PATH_TRANSLATED are not set unless some real PATH_INFO
     came in with the request, for NCSA bug-compatibility. [Robert Thau]

  *) Don't leak the DIR * on HEAD request for a directory. [Robert Thau]

  *) Deleted the block_alarms() stuff from dbm_auth; no longer necessary,
     as timeouts are not in scope. [Robert Thau]

  *) quoted-string args in config files now handled correctly (doesn't drop
     the last character). [Robert Thau; reported by Randy Terbush]

  *) Fixed silly typo in http_main.c which was suddenly fatal in HP-UX.
     How the hell did it ever work? [Robert Thau; reported by Rob Hartill]

  *) mod_core.c --- default_type returns DEFAULT_TYPE (the compile-time
     default default type); the former default default behavior when all
     type-checkers defaulted had been a core dump.  [Paul Sutton]

  *) Copy filenames out of the struct dirent when indexing
     directories.  (On Linux, readdir() returns a pointer to the same
     memory area every time).  Fix is in mod_dir.c.  [Paul Sutton]

Changes with Shambhala 0.5.3 [not released]

  *) Default response handler notes "file not found" in the error log,
     if the file was not found.  [Cliff Skolnick].

  *) Another Cliff bug --- "GET /~user" now properly redirects (the userdir
     code no longer sets up bogus PATH_INFO which fakes out the directory
     handler). [Cliff Skolnick]

Changes with Shambhala 0.5.2                                     06 Jul 1995

  *) Changes to http_main.c --- root server no longer plays silly
     games with SIGCHLD, and so now detects and replaces dying
     children.  Child processes just die on SIGTERM, without taking
     the whole process group with them.  Potential problem --- if any
     child process refuses to die, we hang in restart.
     MaxRequestsPerChild may still not work, but it certainly works
     better than it did before this!  [Robert Thau]

  *) mod_dir.c bug fixes: ReadmeName and HeaderName
     work (or work better, at least); over-long description lines
     properly terminated. [Mark Cox]

  *) http_request.c now calls unescape_url() more places where it
     should [Paul Sutton].

  *) More directory handling bugs (reported by Cox)
     Parent Directory link is now set correctly. [Robert Thau]

Changes with Shambhala 0.5.1                                     04 Jul 1995

  *) Generalized cleanup interface in alloc.c --- any function can be
     registered with alloc.c as a cleanup for a resource pool;
     tracking of files and file descriptors has been reimplemented in
     terms of this interface, so I can give it some sort of a test.
     [Robert Thau]

  *) More changes in alloc.c --- new cleanup_for_exec() function,
     which tracks down and closes all file descriptors which have been
     registered with the alloc.c machinery before the server exec()s a
     child process for CGI or <!--#exec-->.  CGI children now get
     started with exactly three file descriptors open.  Hopefully,
     this cures the problem Rob H. was having with overly persistent
     CGI connections. [Robert Thau]

  *) Mutual exclusion around the accept() in child_main() --- this is
     required on at least SGI, Solaris and Linux, and is #ifdef'ed in
     by default on those systems only (-DFCNTL_SERIALIZED_ACCEPT).
     This uses fcntl(F_SETLK,...) on the error log descriptor because
     flock() on that descriptor won't work on systems which have BSD
     flock() semantics, including (I think) Linux 1.3 and Solaris.

     This does work on SunOS (when the server is idle, only one
     process in the pool is waiting on accept()); it *ought* to work
     on the other systems. [Robert Thau]

  *) FreeBSD and BSDI portability tweaks [Chuck Murcko]

  *) sizeof(*sa_client) bugfix from [Rob Hartill]

  *) pstrdup(..., NULL) returns NULL, [Randy Terbush]

  *) block_alarms() to avoid leaking the DBM* in dbm auth (this should
     be unnecessary if I go to the revised timeout-handling scheme).
     [Robert Thau]

  *) For NCSA bug-compatibility, set QUERY_STRING env var (to a null
     string) even if none came in with the request.  [Robert Thau]

  *) CHANGES file added to distribution ;-).

Changes with Shambhala 0.4.5

  *) mod_dld --- early dynamic loading support [rst]
  *) Add wildcard content handlers for XBITHACK; default_hander now
     invoked with that mechanism (as a handler hanging off mod_core) [rst]
  *) XBITHACK supported as a wildcard content-handler, and 
     configurable at run-time (not just at compile time, as in the
     "patchy server" releases) [rst]

Changes with Shambhala 0.4.4                                     30 Jun 1995

  *) Fixed basic thinkos in mod_dbm_auth.c [rst, reported by Mark Cox]
  *) Handle Addtype x/y .z [rst, reported by Cox]

Changes with Shambhala 0.4.3

  *) Fixed very dumb bug in mod_alias; "Alias" and "Redirect" are not
     synonymous [rst, terbush]

Changes with Shambhala 0.4.1                                     28 Jun 1995

  *) First-cut virtual host implementation; some refit in the config
     reading code, and log management, was necessary to support this [rst]
  *) Sub-pool machinery, originally added to avoid excessive storage
     allocation on listings of large directories (which turned out to
     be the problem that the 0.3 storage accounting was added to
     find).  Subrequests and mod_dir changed to use subpools.  [rst]
  *) More memory debugging --- free list consistency checks. [rst]
  *) Added err_headers to request_rec, with support elsewhere [rst]
  *) Other fixes to minor bugs in mod_dir and mod_includes [rst, terbush]

Changes with Shambhala 0.3                                       19 Jun 1995

  *) Switch ONE_PROCESS to a runtime command-line option (-X)
  *) Don't compile in mod_ai_backcompat by default
  *) Switch name of server from Apache to Shambhala in Makefile
  *) Add some accounting routines to track memory usage in the pools,
     for debugging

Changes with Shambhala 0.2

  *) Set DOCUMENT_ROOT CGI variable
  *) Add single-process debugging, as a compile-time option (ONE_PROCESS)
  *) Add critical section protection to handling of cleanup structures 
     in alloc.c [rst]
  *) Significant code reorg within the server core to group related
     functions together [rst]
  *) Correctly handle clients that hang up before sending any request
     [rst]
  *) Replace dying child processes. [rst]

Changes with Shambhala 0.1                                       12 Jun 1995

   Major rewrite of the pre-existing "patchy server" codebase, by
   Robert Thau (rst).  Significant portions of the server code, such
   as configuration-file handling and HTTP authentication support,
   were ripped out and rewritten from scratch.  Code that was not
   completely rewritten was significantly altered.

   Major changes with this release include:

   *) Introduction of the module API; in request handling, the central 
      machinery just dispatches to various modules, which actually do
      most of the work.  Configuration handling is similar --- modules
      declare their own commands, and the central machinery just
      dispatches to them.  

      API features from shambhala/0.1 were substantially unchanged in
      Apache 1.0 and 1.1.  (1.0 API features not yet present in this
      release, such as wildcard handlers and subpools, were added in
      subsequent Shambhala releases, and were also generally rst's
      work). 

   *) This release included the following modules:

      mod_access      (access control --- allow and deny directives),
      mod_alias       (Alias and Redirect commands),
      mod_auth        (straight HTTP authentication, based on flat-files)
      mod_auth_dbm    (same, with dbm files)
      mod_cgi         (CGI scripts and, in this release, ScriptAlias)
      mod_common_log  (CLF access logs; later renamed mod_log_common)
      mod_dir         (directory indexing)
      mod_include     (server-side includes)
      mod_mime        (AddType directives)
      mod_negotiation (content negotiation)
      mod_userdir     (support for users' public_html directories)

      It also included a mod_ai_backcompat, which was a private hack
      for back-compatibility with rst's own AI-lab servers.

      All of these modules were substantially complete, and functional 
      or nearly so (a few, which implemented features not in use at
      Thau's site, required patches of a few lines).

   *) sub-request machinery, to allow modules to determine how other
      modules would assign MIME types to a given file, or optionally
      serve its content (this is heavily used by mod_dir, mod_include
      and mod_negotiation).

   *) Resource pool system for keeping track of memory allocated and
      files opened in service of a particular request.  Much of the
      code in the modules (when they weren't rewrites) was adjusted to 
      replace a pervasive convention of using fixed-size buffers on
      the stack with an equally pervasive convention of using memory
      allocated with palloc().

   *) Reorganization of data structures associated with a given
      request to eliminate use of global variables and the troublesome 
      unmunge_name function (used in NCSA and early Apache releases to 
      attempt to determine the URI which mapped to a given filename
      --- a difficult proposition, given that it is easy to produce
      setups in which multiple URIs map to the same file).

   *) Source files renamed and rearranged

   *) Very simple pre-forking behavior --- parent process forked off a 
      fixed number of children, and then just waited for SIGHUP.

   *) Other more minor changes too numerous to list.

   This release included modified versions of a lot of code from the
   Apache 0.6.4 public release, plus an early pre-forking patch
   codeveloped by Robert Thau and Rob Hartill.

Changes with Apache 0.7.3                                        20 Jun 1995

   *) There were a bunch of changes between Apache 0.6.4 and 0.7.3 that
      were incorporated by Rob Hartill on the main branch while Robert Thau
      worked on the Shambhala rewrite above.  Most were merged into the
      Shambala architecture after Apache 0.8.0.

Changes with Apache 0.6.4                                        13 May 1995

   *) Patches by Rob Hartill, Cliff Skolnick, Randy Terbush, Robert Thau,
      and others.

Changes with Apache 0.5.1                                        10 Apr 1995

Changes with Apache 0.4                                          02 Apr 1995

  *) Patches by Brian Behlendorf, Andrew Wilson, Robert Thau,
     and Rob Hartill.

Changes with Apache 0.3                                          24 Mar 1995

  *) Patches by Robert Thau, David Robinson, Rob Hartill, and
     Carlos Varela.

Changes with Apache 0.2                                          18 Mar 1995

  *) Based on NCSA httpd 1.3 by Rob McCool and patches by CERT,
     Roy Fielding, Robert Thau, Nicolas Pioch, David Robinson,
     Brian Behlendorf, Rob Hartill, and Cliff Skolnick.