CHANGES 589 KB
Newer Older
13001 13002 13003 13004 13005 13006 13007 13008 13009 13010 13011 13012 13013 13014 13015 13016 13017 13018 13019 13020 13021 13022 13023 13024 13025 13026 13027 13028 13029 13030 13031 13032 13033 13034 13035 13036 13037 13038 13039 13040 13041 13042 13043 13044 13045 13046 13047 13048 13049 13050 13051 13052 13053 13054 13055 13056 13057 13058 13059 13060 13061 13062 13063 13064 13065 13066 13067 13068 13069 13070 13071 13072 13073 13074 13075 13076 13077 13078 13079 13080 13081 13082 13083 13084 13085 13086 13087 13088 13089 13090 13091 13092 13093 13094 13095 13096 13097 13098 13099 13100 13101 13102 13103 13104 13105 13106 13107 13108 13109 13110 13111 13112 13113 13114 13115 13116 13117 13118 13119 13120 13121 13122 13123 13124 13125 13126 13127 13128 13129 13130 13131 13132 13133 13134 13135 13136 13137 13138 13139 13140 13141 13142 13143 13144 13145 13146 13147 13148 13149 13150 13151 13152 13153 13154 13155 13156 13157 13158 13159 13160 13161 13162 13163 13164 13165 13166 13167 13168 13169 13170 13171 13172 13173 13174 13175 13176 13177 13178 13179 13180 13181 13182 13183 13184 13185 13186 13187 13188 13189 13190 13191 13192 13193 13194 13195 13196 13197 13198 13199 13200 13201 13202 13203 13204 13205 13206 13207 13208 13209 13210 13211 13212 13213 13214 13215 13216 13217 13218 13219 13220 13221 13222 13223 13224 13225 13226 13227 13228 13229 13230 13231 13232 13233 13234 13235 13236 13237 13238 13239 13240 13241 13242 13243 13244 13245 13246 13247 13248 13249 13250 13251 13252 13253 13254 13255 13256 13257 13258 13259 13260 13261 13262 13263 13264 13265 13266 13267 13268 13269 13270 13271 13272 13273 13274 13275 13276 13277 13278 13279 13280 13281 13282 13283 13284 13285 13286 13287 13288 13289 13290 13291 13292 13293 13294 13295 13296 13297 13298 13299 13300 13301 13302 13303 13304 13305 13306 13307 13308 13309 13310 13311 13312 13313 13314 13315 13316 13317 13318 13319 13320 13321 13322 13323 13324 13325 13326 13327 13328 13329 13330 13331 13332 13333 13334 13335 13336 13337 13338 13339 13340 13341 13342 13343 13344 13345 13346 13347 13348 13349 13350 13351 13352 13353 13354 13355 13356 13357 13358 13359 13360 13361 13362 13363 13364 13365 13366 13367 13368 13369 13370 13371 13372 13373 13374 13375 13376 13377 13378 13379 13380 13381 13382 13383 13384 13385 13386 13387 13388 13389 13390 13391 13392 13393 13394 13395 13396 13397 13398 13399 13400 13401 13402 13403 13404 13405 13406 13407 13408 13409 13410 13411 13412 13413 13414 13415 13416 13417 13418 13419 13420 13421 13422 13423 13424 13425 13426 13427 13428 13429 13430 13431 13432 13433 13434 13435
  *) 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]

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