Skip to content
CHANGES 530 KiB
Newer Older
4001 4002 4003 4004 4005 4006 4007 4008 4009 4010 4011 4012 4013 4014 4015 4016 4017 4018 4019 4020 4021 4022 4023 4024 4025 4026 4027 4028 4029 4030 4031 4032 4033 4034 4035 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 4059 4060 4061 4062 4063 4064 4065 4066 4067 4068 4069 4070 4071 4072 4073 4074 4075 4076 4077 4078 4079 4080 4081 4082 4083 4084 4085 4086 4087 4088 4089 4090 4091 4092 4093 4094 4095 4096 4097 4098 4099 4100 4101 4102 4103 4104 4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115 4116 4117 4118 4119 4120 4121 4122 4123 4124 4125 4126 4127 4128 4129 4130 4131 4132 4133 4134 4135 4136 4137 4138 4139 4140 4141 4142 4143 4144 4145 4146 4147 4148 4149 4150 4151 4152 4153 4154 4155 4156 4157 4158 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 4170 4171 4172 4173 4174 4175 4176 4177 4178 4179 4180 4181 4182 4183 4184 4185 4186 4187 4188 4189 4190 4191 4192 4193 4194 4195 4196 4197 4198 4199 4200 4201 4202 4203 4204 4205 4206 4207 4208 4209 4210 4211 4212 4213 4214 4215 4216 4217 4218 4219 4220 4221 4222 4223 4224 4225 4226 4227 4228 4229 4230 4231 4232 4233 4234 4235 4236 4237 4238 4239 4240 4241 4242 4243 4244 4245 4246 4247 4248 4249 4250 4251 4252 4253 4254 4255 4256 4257 4258 4259 4260 4261 4262 4263 4264 4265 4266 4267 4268 4269 4270 4271 4272 4273 4274 4275 4276 4277 4278 4279 4280 4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291 4292 4293 4294 4295 4296 4297 4298 4299 4300 4301 4302 4303 4304 4305 4306 4307 4308 4309 4310 4311 4312 4313 4314 4315 4316
  *) Modify mod_include to be a filter.  Currently, it has only been tested
     on actual files, but it should work for CGI scripts too.
     [Ryan Bloom]

  *) apr_putc(), apr_puts() for Unix: handle buffered files and interrupted
     writes.  apr_flush() for Unix: handle interrupted writes.
     [Jeff Trawick]

  *) NameVirtualHost can now take "*" as an argument instead of
     an IP address. This allows you to create a purely name-based
     virtual hosting server that does not have any IP addresses in
     the configuration file and which ignores the local address
     of any connections. PR #5595, PR #4455 [Tony Finch]

  *) Fix some compile warnings in mod_mmap_static.c
     [Mike Abbott <mja@sgi.com>]

  *) Fix chunking problem with CGI scripts.  The general problem was that
     the CGI modules were adding an EOS bucket and then the core added an
     EOS bucket.  The chunking filter finalizes the chunked response when it
     encounters an EOS bucket.  Because two EOS buckets were sent, we
     finalized the response twice.  The fix is to make sure we only send one
     EOS, by utilizing a flag in the request_rec.
     [Ryan Bloom]

  *) apr_put_os_file() now sets up the unget byte appropriately on Unix
     and Win32.  Previously, the first read from an apr_file_t set up via
     apr_put_os_file() would return a '\0'.  [Jeff Trawick]

  *) Mod_cgid now creates a single element bucket brigade, with a pipe
     bucket, instead of using BUFF's and ap_r*.
     [Ryan Bloom]

  *) APRVARS.in no longer overwrites the EXTRA_LIBS variable.
     [Mike Abbott <mja@sgi.com>]

  *) Remove ap_bopenf from buff code.  This required modifying the file_cache
     code to use APR file's directly instead of going through BUFFs.
     [Ryan Bloom]

  *) Fix compile break on some platforms for mod_mime_magic.c
     [John K. Sterling <sterling@covalent.net>]

  *) Fix merging of AddDefaultCharset directive.
     PR #5872 (1.3) [Jun Kuriyama <kuriyama@imgsrc.co.jp>]

  *) Minor revamp of the rlimit sections of code. We now test
     explicitly for setrlimit and getrlimit. Also, unixd_set_rlimit()
     is now "available" even if the platform doesn't support
     the rlimit family (it's just a noop though). [Jim Jagielski]

  *) Migrate the pre-selection of which MPM to use for specific
     platforms to hints.m4, which contains (or should contain)
     all platform specific "hints". [Jim Jagielski]

  *) Remove IOLs from Apache.  With filtering, IOLs are no longer necessary
     [Ryan Bloom]

  *) Add tables with non-string/binary values to APR.
     [Ken Coar]

  *) Fix some bad calls to ap_log_rerror() in mod_rewrite. 
     [Jeff Trawick]

  *) Update PCRE to version 3.2.  [Ryan Bloom]

  *) Change the way buckets' destroy functions are called so that
     they can be more directly used when changing the type of a
     bucket in place. [Tony Finch]

  *) Add generic support for reference-counting the resources used by
     buckets, and alter the HEAP and MMAP buckets to use it. Change
     the way buckets are initialised to support changing the type of
     buckets in place, and use it when setting aside TRANSIENT buckets.
     Change the implementation of TRANSIENT buckets so that it can be
     mostly shared with IMMORTAL buckets, which are now implemented.
     [Tony Finch]

Changes with Apache 2.0a6

  *) Add support to Apache and APR for dsos on OS/390.  [Greg Ames]

  *) Add a chunking filter to Apache.  This brings us one step closer
     to removing BUFF. [Ryan Bloom]

  *) ap_add_filter now adds filters in a LIFO fashion.  The first filter
     added to the stack is the last filter to be called.  [Ryan Bloom]

  *) Apache 2.0 has been completely documented using Scandoc.  The
     docs can be generated by running 'make docs'.  [Ryan Bloom]

  *) Add filtered I/O to Apache.  This is based on bucket brigades,
     Currently the buckets still use BUFF under the covers, but that
     should change quickly.  The only currently written filter is the
     core filter which just calls ap_bwrite.  [The Apache Group]

  *) APR locks on Unix: Let APR_LOCKALL locks work when APR isn't
     built with thread support.  [Jeff Trawick]

  *) Abort configuration if --with-layout was specified and there's
     no layout definition file.  [Ken Coar]

  *) Add support for '--with-port=n' option to configure.  [Ken Coar]

  *) Add support for extension methods for the Allow response header
     field, and an API routine for accessing r->allowed and the
     list of extension methods in a unified manner.  [Ken Coar]

  *) mod_cern_meta: fix broken file reading loop in scan_meta_file().
     [Rob Simonson <simo@us.ibm.com>]

  *) Get xlate builds working again.  The apr renaming in 2.0a5 broke
     APACHE_XLATE builds.  [Jeff Trawick]

  *) A configuration file parsing problem was fixed.  When the 
     configuration file started with an IfModule/IfDefine container, 
     only the last statement in the container would be retained.  
     [Jeff Trawick]

Changes with Apache 2.0a5

  *) Perchild is serving pages after passing them to different child
     processes.  There are still a lot of bugs, but this does work.  I
     have made requests against the same installation of Apache, and had
     different servers use different user IDs to serve the responses.
     This change moves to using socketpair instead of an AF_UNIX socket.
     [Ryan Bloom]

  *) Perchild MPM still doesn't work perfectly, but it is serving pages.
     It can't seem to pass between child processes yet, but I think we
     are closer now than before.  This moves us back to using Unix
     Domain Sockets.  [Ryan Bloom]

  *) libapr functions and types renamed with apr_ prefix.
     #include "apr_compat.h" for 1.3.x backwards compat
     [Perl]

  *) Fix problems with APR sockaddr handling on Win32.  It didn't always
     return the right information on the local socket address.
     [Gregory Nicholls <gnicholls@level8.com>]

  *) ap_recv() on Win32: Set bytes-read to 0 on error.  
     [Gregory Nicholls <gnicholls@level8.com>]

  *) Add an option to not detach from the controlling terminal without
     going into single process mode.  This allows for much easier
     debugging of the process startup code. [Ryan Bloom]

  *) ab: don't use perror() to report the failure of an APR function.
     [Jeff Trawick]

  *) Make dexter, mpmt_pthread, and perchild MPMs not destroy the
     scoreboard on graceful restarts.
     [Ryan Bloom]

  *) Fix segfault/SIGSEGV when running gzip from mod_mime_magic.c.
     An invalid ap_proc_t was passed to ap_create_process().
     [Jeff Trawick]

  *) Allow modules to register filters.  Those filters are still
     never called, but this is a step in the right direction.
     [Ryan Bloom and Greg Stein]

  *) Register the mod_cgid daemon process for cleanup so that it is
     killed at termination if it does not die when the parent gets
     SIGTERM.  This change is to fix occasional problems where the
     process stays around.  Bugs in similar logic in mod_rewrite and
     mod_include were also fixed.  [Jeff Trawick]

  *) Fix a bug in the time handling.  Basically, we were imploding a time
     in ap_parseHTTPdate, but it had bogus data in the exploded time format.
     Namely, tm_usec and tm_gmtoff were not filled out.  ap_implode_time
     uses those two fields to adjust the time value.  Because of the HTTP
     spec, both of those values can be zero'ed out safely.  This fixes
     the bug correctly.  [Ryan Bloom]

  *) Fix a couple of place in the Windows code where the wrong error
     code was being returned. [Gregory Nicholls <gnicholls@level8.com>]

  *) Fix POOL_DEBUG (at least for prefork mpm). [Dean Gaudet]

  *) Added the APR_EOL_STR macro for platform dependent differences in 
     logfiles and other raw text (such as all APR files).  Fixes logfiles
     not terminated with cr/lf sequences in Win32.  [William Rowe]

  *) Move all strings functions in APR to src/lib/apr/strings and create
     apr_strings.h for the prototypes. [Ryan Bloom]

  *) APR lock fixes: when using SysV sems, flock(), or fcntl(), be sure
     to repeat the syscall until we stop getting EINTR.  I noticed a
     related problem at termination (SIGTERM) on FreeBSD when using
     fcntl().  Apache 1.3 had these new loops too.  Also, make the flock() 
     implementation work properly with child init.  Previously, ap_lock()
     was essentially a no-op because all children were using different
     locks and thus nobody ever blocked.  [Jeff Trawick]

  *) The htdocs/ tree has been moved out of the CVS source tree into
     a separate area for easier development.  This has NO EFFECT on
     end-users or Apache installations.  [Ken Coar]

  *) Integrate the mod_dav module for WebDAV protocol handling. This
     adds the dav and dav_fs modules, the SDBM library, and additional
     XML handling utilities. [Greg Stein]

  *) Clean out obsolete names (from httpd.h) for the HTTP Status Codes
     [Greg Stein]

  *) Update the lib/expat-lite/ library (bring forward changes from
     the Apache 1.3 repository). [Greg Stein]

  *) If sizeof(long long) == sizeof(long), then prefer long in APR
     configure.in.  [Dave Hill <ddhill@zk3.dec.com>]

  *) Add ap_sendfile for Tru64 Unix.  Also, add an error message for
     machines where sendfile is detected, but nobody has written ap_sendfile.
     [Dave Hill <ddhill@zk3.dec.com>]

  *) Compile fixes in mod_mmap_static.  [Victor J. Orlikowski]

  *) ab would start up more connections than needed, then quit when the
     desired number were finished. Also fixed a logic error involving
     ab keepalives.  [Victor J. Orlikowski]

  *) WinNT: Implement non-blocking pipes with timeouts to communicate
     with CGIs. Apache 2.0a4 had non-blocking pipes but without 
     timeouts (i.e, if a timeout was specified, the pipe reverted to
     a full blocking pipe). Now the behaviour is more in line with
     Unix non-blocking pipes.
     [Bill Stoddard]

  *) WinNT: Implement accept socket reuse. Using mod_file_cache to
     cache open file handles along with accept socket reuse enables
     Apache 2.0 to serve non-keepalive requests for static files at
     3x the rate of Apache 1.3.(e.g, Apache 1.3 will serve 400 rps
     and Apache 2.0 will serve almost 1200 rps on my system).
     [Bill Stoddard]

  *) Merge mod_mmap_static function into mod_file_cache. mod_file_cache
     supports two config directives, mmapfile (same behavious as
     mod_mmap_static) and cachefile. Use the cachefile directive
     to cache open file handles. This directive only works on systems
     that have implemented the ap_sendfile API. cachefile works today
     on Windows NT, but has not been tested on any flavors of Unix.
     [Bill Stoddard]

  *) Cleanup the configuration.  With the last few changes the
     configuration process automatically:
         inherits information about how to build from APR.  Allowing
         APR to inform Apache that it should or should not use -ldl
        
         Detects which mod_cgi should be used mod_cgi or mod_cgid,
         based on the threading model

         Apache calls APR's configure process before finishing it's
         configuration processing, allowing for more information flow
         between the two.
     [Ryan Bloom]
         

  *) Change Unix and Win32 ap_setsockopt() so that APR_SO_NONBLOCK
     with non-zero argument makes the socket non-blocking.  BeOS and
     OS/2 already worked this way.  [Jeff Trawick]

  *) ap_close() now calls ap_flush() for buffered files, so write
     operations work a whole lot better on buffered files.
     [Jeff Trawick]

  *) Fix error messages issued from MPMs which explain where to change
     compiled-in limits (e.g., ThreadsPerChild, MaxClients, StartTreads).
     [Greg Ames]

  *) ap_create_pipe() now leaves pipes in blocking state.  (This helps 
     reduce the number of syscalls on Unix.)  ap_set_pipe_timeout() is
     now the way that the blocking state of a pipe is manipulated.
     ap_block_pipe() is gone.  [Jeff Trawick]

  *) Correct the problem where the only local host name that the IP stack
     can discover are 'undotted' private names.  If no fully qualified
     domain name can be identified, the default ServerName will be set to
     the machine's IP address string. A warning is always provided if the
     ServerName not specified, but assumed.  Solves PR6215 [William Rowe]

  *) Repair problems with config file processing which caused segfault
     at init when virtual hosts were defined and which caused ServerName to
     be ignored when there was no valid DNS setup.  [Jeff Trawick]

  *) Removed pointless ap_is_aborted macro function. [Roy Fielding]

  *) Add ap_sendfile implementation for AIX
     [Victor J. Orlikowski]

  *) Repair C++ compatibility in ap_config.h, apr_file_io.h, 
     apr_network_io.h, and apr_thread_proc.h.  
     [Tyler J. Brooks <tylerjbrooks@home.com>, Jeff Trawick]

  *) Bring the allocation and pool debugging code back into a working
     state.  This will need to be tested as so far it's only been used on
     BeOS. [David Reid]

  *) Change configuration command setup to be properly typesafe when in
     maintainer mode. Note that this requires a compiler that can initialise
     unions. [Ben Laurie]

  *) Turn on buffering for config file reads.  Part of this was to
     repair buffered I/O support in Unix and implement buffered
     ap_fgets() for all platforms.  [Brian Havard, Jeff Trawick]

  *) Win32: Fix problem where UTC offset was not being set correctly
     in the access log. Problem reported on news group by Jerry Baker.
     [Bill Stoddard]

  *) Fix segfault when reporting this type of syntax error:
     "</container> without matching <container> section", where
     container is VirtualHost or Directory or whatever.
     [Jeff Trawick]

  *) SECURITY: CAN-2000-1204 (cve.mitre.org)
     Prevent the source code for CGIs from being revealed when 
     using mod_vhost_alias and the CGI directory is under the document root
4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 4346 4347 4348 4349 4350 4351 4352 4353 4354 4355 4356 4357 4358 4359 4360 4361 4362 4363 4364 4365 4366 4367 4368 4369 4370 4371 4372 4373 4374 4375 4376 4377 4378 4379 4380 4381 4382 4383 4384 4385 4386 4387 4388 4389 4390 4391 4392 4393 4394 4395 4396 4397 4398 4399 4400 4401 4402 4403 4404 4405 4406 4407 4408 4409 4410 4411 4412 4413 4414 4415 4416 4417 4418 4419 4420 4421 4422 4423 4424 4425 4426 4427 4428 4429 4430 4431 4432 4433 4434 4435 4436 4437 4438 4439 4440 4441 4442 4443 4444 4445 4446 4447 4448 4449 4450 4451 4452 4453 4454 4455 4456 4457 4458 4459 4460 4461 4462 4463 4464 4465 4466 4467 4468 4469 4470 4471 4472 4473 4474 4475 4476 4477 4478 4479 4480 4481 4482 4483 4484 4485 4486 4487 4488 4489 4490 4491 4492 4493 4494 4495 4496 4497 4498 4499 4500 4501 4502 4503 4504 4505 4506 4507 4508 4509 4510 4511 4512 4513 4514 4515 4516 4517 4518 4519 4520 4521 4522 4523 4524 4525 4526 4527 4528 4529 4530 4531 4532 4533 4534 4535 4536 4537 4538 4539 4540 4541 4542 4543 4544 4545 4546 4547 4548 4549 4550 4551 4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569 4570 4571 4572 4573 4574 4575 4576 4577 4578 4579 4580 4581 4582 4583 4584 4585 4586 4587 4588 4589 4590 4591 4592 4593 4594 4595 4596 4597 4598 4599 4600 4601 4602 4603 4604 4605 4606 4607 4608 4609 4610 4611 4612 4613 4614 4615 4616 4617 4618 4619 4620 4621 4622 4623 4624
     and a user makes a request like http://www.example.com//cgi-bin/cgi
     as reported in <news:960999105.344321@ernani.logica.co.uk>
     [Tony Finch]

  *) Add support for the new Beos NetwOrking Environment (BONE)
     [David Reid]

  *) xlate: ap_xlate_conv_buffer() now tells the caller when the
     final input char is incomplete; ap_bwrite_xlate() now handles
     incomplete final input chars.  [Jeff Trawick]

  *) Yet another update to saferead/halfduplex stuff -- need to ensure
     that a bhalfduplex call occurs before logging or else DNS and
     such can delay the last packet of the response.  [Dean Gaudet]

  *) Some syscall reduction in APR on unix -- don't seek when setting
     up an mmap; and don't fcntl() more than once per socket.
     [Dean Gaudet]

  *) When mod_cgid is started as root, the cgi daemon now switches 
     to the configured User/Group (like other httpd processes) 
     instead of continuing as root.  [Jeff Trawick]

  *) The prefork MPM now uses an APR lock for the accept() mutex.
     It has not been getting a lock at all recently.  httpd -V now 
     displays APR's selection of the lock mechanism instead of the 
     symbols previously respected by prefork.  [Jeff Trawick]

  *) Change the mmap() feature test to check only for existence.
     The previous check required features not used by Apache.
     [Greg Ames]

  *) Fix a couple of bugs in mod_cgid:  The cgi arguments were
     sometimes mangled.  The len parm to accept() was not 
     initialized, leading sometimes to an endless loop of failed
     accept() calls on OS/390 and anywhere else that failed the call
     if the len was negative.  Use <sys/un.h> for struct sockaddr_un
     instead of declaring it ourselves to fix a compilation problem
     on Solaris.  [Jeff Trawick]

  *) Add Resource limiting code back into Apache 2.0. [Ryan Bloom]

  *) Fix zombie process problem with mod_cgi.  [Jeff Trawick]

  *) Port mod_mmap_static to 2.0.  Make it go faster.  [Greg Ames]

  *) Fix storage overlay when loading dsos.  Symptom: Apache dies at
     initialization if ALLOC_DEBUG is defined; no known symptom 
     otherwise.  [Jeff Trawick]

  *) Fix typo in configure script when checking for mod_so.  bash
     doesn't seem to have a problem but /bin/sh on Solaris does.
     Symptom: "./configure: test: unknown operator =="
     [Jeff Trawick]
   
  *) Rebind the Win32 NT and 9x services control into the MPM.  
     All console, WinNT SCM and Win9x pseudo-service control code is
     now wrapped within the WinNT MPM.
     [William Rowe]

  *) Make a copy of getenv("PATH") before storing for later use.  Some
     getenv() implementations use the same storage for successive calls.
     CGIs on OS/390 had a bad PATH due to this.  [Jeff Trawick]

  *) Server Tokens work in 2.0 again.  This also propogates the change
     to allow just the product name in the server string using
     PRODUCT_ONLY.
     [Ryan Bloom]

Changes with Apache 2.0a4

  *) EBCDIC: Rearrange calls to ap_checkconv() so that most handlers
     won't need to call it.  [Greg Ames, Jeff Trawick]

  *) Move pre_config hook call to between configuration read and config
     tree walk.  This allows all modules to implement pre_config hooks
     and know that they will be called at an appropriate time.
     [Ryan Bloom] 

  *) mod_cgi, mod_cgid: Make ScriptLog directive work again.  
     [Jeff Trawick]

  *) Add pre-config hooks back to all modules.
     [Ryan Bloom]

  *) Fix a SIGSEGV in ap_md5digest(), which is used when you have
     ContentDigest enabled and we can't/don't mmap the file. 
     [Jeff Trawick]

  *) We now report the correct line number for syntax errors in config
     files.  [Ryan Bloom, Greg Stein, Jeff Trawick]

  *) Brought mod_auth_digest up to synch with 1.3, fixed ap_time_t-
     related bugs, and changed shmem/locking to use apr API. Shared-mem
     is currently disabled, however, because of problems with graceful
     restarts. [Ronald Tschalär]

  *) Fix corruption of IFS variable in --with-module= handling.  
     Depending on the user's shell or customization thereof, there 
     would be errors generating ap_config_auto.h later in the configure
     procedure.  [Jeff Trawick]

  *) mod_cgi: Restore logging of stderr from child process when ScriptLog 
     isn't used (as in 1.3), except that on Unix it is now logged via 
     ap_log_rerror() instead of by the child having STDERR_FILENO refer
     to the error log.  [Greg Ames, Jeff Trawick]

  *) Add '-D' argument processing for run time configuration defines.
     [William Rowe]

  *) Organize http_main.c as independent code, such that no code or
     global data is exported from it.  WIN32 will dynamically link it
     to the server core, so this will prevent mutual dependency.
     [William Rowe]

  *) Add separate dynamic linkage tags APR_EXPORT(), APR_EXPORT_NONSTD()
     and APR_VAR_EXPORT to correctly resolve apr functions and globals.
     [William Rowe]

  *) Add Win9x service execution and Ctrl+C/Ctrl+Break/Shutdown handlers.
     [William Rowe, Jan Just Keijser <KEIJSERJJ@logica.com>]

  *) Add mod_charset_lite for configuring character set translation.
     [Jeff Trawick]

  *) Add '-n' option to htpasswd to make it print its user:pw record
     on stdout rather than having to frob a text file.  [Ken Coar]

  *) Fix saferead.  Basically, we flush the output buffer if a read on the
     input will block.
     [Ryan Bloom]
 
  *) APR: Add ap_xlate_get_sb() so that an app can find out whether or not
     a conversion is single-byte only. [Jeff Trawick]

  *) BEOS: ap_shutdown should return APR_SUCCESS or errno. Note that
     the BeOS 5.0 documentation says that shutdown doesn't work yet.
     [Roy Fielding]

  *) Fix some minor errors where pid was being manipulated as an int
     instead of the portable pid_t.  [Roy Fielding]

  *) Fix some error log prints that were printing the pointer to a
     structure rather than the pid within the structure.
     [Jeff Trawick, Roy Fielding]

  *) ab: Fix a command-line processing bug; track bad headers in 
     err_response; support reading headers up to 2K. 
     [Ask Bjoern Hansen <ask@valueclick.com>]

  *) Fix ap_resolve_env() so that it handles new function added in a prior
     alpha (see "Added the capability to do ${ENVVAR} constructs in the
     config file.") as well as the constructs used by mod_rewrite.
     [Paul Reder <rederpj@raleigh.ibm.com>]

  *) Apache 2.0 builds and runs on OS/390. [Jeff Trawick, Greg Ames]

  *) Change the EBCDIC support in functions for MD5, SHA1, and base 64 to use
     APR to perform translation, instead of accessing the hard-coded tables
     in 1.3's ebcdic.c. [Jeff Trawick]

  *) Fix some bugs (mostly lost 1.3 code) in ab's command-line processing. 
     [Jeff Trawick]

  *) Add the ability to hook into the config file reading phase.  Basically
     if a directive is specified EXEC_ON_READ, then when that directive is
     read from the config file, the assocaited function is executed.  This
     should only be used for those directives that must muck with HOW the
     server INTERPRETS the config.  This should not be used for directives
     that re-order or replace items in the config tree.  Those changes should
     be made in the pre-config step.
     [Ryan Bloom]

  *) Add mod_example to the build system.
     [Tony Finch]

  *) APR: Add ap_xlate_conv_byte() to convert one char between single-
     byte character sets. [Jeff Trawick]

  *) Pick up various EBCDIC fixes from 1.3 (from Martin
     Kraemer and Oliver Reh originally according to the change log).
     [Jeff Trawick]

  *) Fix a couple of problems in RFC1413 support (controlled by the
     IdentityCheck directive).  Apache did not build the request string
     properly and more importantly Apache would loop forever if the 
     would-be ident server dropped the connection before sending a
     properly terminated response. [Jeff Trawick]

  *) apxs works in 2.0.
     [Ryan Bloom]

  *) Reliable piped logs work in 2.0.
     [Ryan Bloom]

  *) Introduce a hash table implementation into APR to be used for
     replacing tables and other random data structures in Apache.
     [Tony Finch]

  *) Add some more error reporting to htpasswd in the case of problems
     generating or accessing the temporary file.  Also, pass in a
     buffer if the implementation knows how to use it (i.e., if L_tmpnam
     is defined).  [Ken Coar]

  *) Configure creates config.nice now containing your configure
     options. Syntax: ./config.nice [--more-options]
     [Sascha Schumann]

  *) Fix various return code problems in APR on Win32.  For most of
     these, APR was returning APR_EEXIST instead of GetLastError()/
     WSAGetLastError().  [Jeff Trawick]

  *) Make piped logs work again in version 2.0
     [Ryan Bloom]

  *) Add VPATH support to UNIX build system of Apache and APR.
     [Sascha Schumann]

  *) Fix ap_tokenize_to_argv to respect the const arguments that are
     passed to it.
     [Ryan Bloom]

  *) Fix mm's memcpy/memset macros, pointer arithmetic was broken.
     Patch submitted to author.
     [Sascha Schumann]

  *) Fix mm configuration on Solaris 8 x86 and OS/390.  Don't require
     /sbin in PATH on FreeBSD (all submitted to rse previously) 
     [Jeff Trawick]

  *) Fix building Pthread-based MPMs on OpenBSD
     [Sascha Schumann] PR#26

  *) Fix ap_readdir() problem on systems where d_name[] field in
     struct dirent is declared with only one byte.  (This problem only 
     affected multithreaded builds.)  This caused a segfault during
     pool cleanup with mod_autoindex on Solaris (Solaris 8 x86, at 
     least). [Jeff Trawick]

  *) Fix some make-portability problems on at least Tru64, Irix
     and UnixWare.
     [Sascha Schumann] PR#18, PR#39

  *) Add ap_sigwait() to support old-style sigwait() on systems
     like OS/390 and UnixWare.
     [Sascha Schumann] 

  *) Add POSIX-thread flags for more platforms.
     [Sascha Schumann]

  *) Fix some minor bugs in ap_strerror().  Teach ap_strerror()
     (on Unix, at least) to handle resolver errors.  Fix a bug in
     the definition of APR_ENOMEM so that ap_strerror() can spit
     out the correct error message for it.
     [Jeff Trawick]

Changes with Apache 2.0a3

  *) mod_so reports ap_os_dso_error() if ap_dso_load() fails
     [Doug MacEachern]

  *) API: *HOOK* macros now have an AP_ prefix
     [Doug MacEachern]

  *) Win32: Eliminate redundant calls to initialize winsock.
     [Tim Costello <timcostello@ozemail.com.au>]

  *) Fix bugs initializing ungetchar for pipes. 
     [Chia-liang Kao <clkao@CirX.ORG>]

  *) The ab program in the src/support directory is now portable using
     APR.
     [Ryan Bloom]

  *) Support directory is being compiled when the server is built
     [Ryan Bloom]

  *) The configure option --with-program-name has been added to allow
     developers to rename the executable at configure time.  This also
     changes the name of the config files to match the executable's name.
     [Ryan Bloom]

  *) mod_autoindex: Add `IndexOptions +VersionSort', to nicely sort filenames
     containing version numbers. [Martin Pool]

  *) ap_open(..,APR_OS_DEFAULT,..) uses perms 0666 instead of 0777 on
     Unix; access_log and error_log now created with these perms; non-
     Unix is unaffected [Jeff Trawick]
     
  *) Finished move of ap_md5 routines to apr_md5.  Removed ap_md5.h.
     Replaced more magic numbers with MD5_DIGESTSIZE.
     [William Rowe, Roy Fielding]

  *) Win32: Get mod_auth_digest compiling and added to the Windows
     build environment. Not tested and I'd be suprised if it 
     actually works. [Bill Stoddard]

  *) Revamp the Win32 make environment. Makefiles have been removed and
     Apache.dsw created to bring together all the pieces. Create new file
     os/win32/BaseAddr.ref to define module base addresses (to prevent
     dll relocation at start-up).
     [William Rowe, Greg Marr, Tim Costello, Bill Stoddard]

  *) [EBCDIC] Port Paul Gilmartin's CRLF patch from 1.3.  This replaces most
     of the \015, \012, and \015\012 constants with macros.
     
  *) Add ap_xlate_open() et al for translation of text between different 
     character sets.  The initial implementation requires iconv().
     [Jeff Trawick]

  *) More FAQs and answers from comp.infosystems.www.servers.unix.
     [Joshua Slive <slive@finance.commerce.ubc.ca>]

  *) CGI output is being timed out now.
     [Ryan Bloom]

  *) Fix the problem with dieing quietly.  dupfile now takes a pool which
     is used by the new apr file.  There is no reason to create a new file
     with the same lifetime as the original file.
     [Ryan Bloom] 

  *) Win32: Attempt to eliminate dll relocation at start-up by specifying
     module base addresses. This will help shooting seg faults
     in the field. [William Rowe <wrowe@lnd.com>]

  *) Update Apache on Windows documentation. Add new document
     describing how to compile Apache on Windows.
     [William Rowe <wrowe@lnd.com>]

  *) ap_set_pipe_timeout(), ap_poll(), and APR_SO_TIMEOUT now take 
     microseconds instead of seconds.  Some storage leaks and other
     minor bugs in related code were fixed.  [Jeff Trawick]

  *) Win32: First cut at getting mod_isapi working under 2.0
     [William Rowe <wrowe@lnd.com>]

  *) First stab at getting mod_auth_digest working under 2.0
     quick change summary:
     - moved the random byte generation (ap_generate_random_bytes) into APR
     - now uses ap_time_t
     - compiles and runs on linux
     - tested with amaya
     [Brian Martin <bmartin@penguincomputing.com>]

  *) Win32: Move the space stripping of physical service names
     fix up from Apache 1.3. #include'ing "ap_mpm.h" fixes up an
     unresolved symbol. Add dependency checking to the
     CreateService call to ensure TCPIP and AFP (winsock) is started
     before Apache.
     [William Rowe <wrowe@lnd.com>]

  *) Win32: Add code to perform latebinding on functions that may
     not exist on all levels of Windows where Apache runs. This
     is needed to allow Apache to start-up on Win95/98. All calls
     to non portable functions should be protected with
     ap_oslevel checks to prevent runtime segfaults. 
     [William Rowe <wrowe@lnd.com>]

  *) Fix fallback default values for SHM_R and SHM_W [Martin Kraemer]

  *) Get lingering_close() working again. [Dean Gaudet, Jeff Trawick]

  *) Win32: Get non-blocking CGI pipe reads working under Windows NT.
     This addresses PR 1623. Still need to address timing out runaway
     CGI scripts. [Bill Stoddard]
 
  *) Win32: Make ap_stat Windows 95/98 friendly
     [William Rowe <wrowe@lnd.com>]                                            

  *) Win32: Fix a bug in ap_get_oslevel which causes GetVersionEx() to 
     always fail. Need to initialise the dwOSVersionInfoSize member of the 
     OSVERSIONINFO struct before calling GetVersionEx, so GetVersionEx 
     always fails. 

     The patch also enhances ap_get_oslevel (and the associated enum) to 
     handle selected service packs for NT4, and adds recognition for 
     Windows 2000. This is useful, eg. if we can recognise NT4 SP2 then 
     we can use ReadFileScatter and WriteFileGather in readwrite.c. 
     [Tim Costello <Tim.Costello@BTFinancialgroup.com>]

  *) Get mod_rewrite building and running, and mod_status building for Win NT
     [Allan Edwards <ake@raleigh.ibm.com>]

  *) Patch to port mod_auth_db to the 2.0 api and also to support 
     Berlekey DB 3.0. It works for me with both Berkeley DB 3.0.55 and 
     2.7.7.  It should work with version 1 as well but I haven't tested it.  
     [Brian Martin <bmartin@penguincomputing.com>]

  *) Get APR DSO code working under Windows. Includes cross platform
     fixes to mod_so.c.
     [Tim.Costello@BTFinancialgroup.com]

  *) Fix some of the Windows APR time functions.
     [William Rowe]

  *) FAQ changes related to tidying up historical documents on the web site.
     [Joshua Slive <slive@finance.commerce.ubc.ca>]

  *) Move Windows DSO code into APR.
     [Bill Stoddard]

  *) Eliminate apr_win.h and apr_winconfig.h (and the ugly #ifdefs they cause).
     Now, apr.h and apr_config.h are generated from apr.hw and apr_config.hw
     at build time. At this point, the server will not compile on Windows because
     of the recent DSO commits. Fixing those next.
     [Bill Rowe & Bill Stoddard]

  *) Added error checking for file I/O APR routines.
     [Jon Travis <jtravis@covalent.net>]

  *) APR: Don't use the values of resolver error codes for the 
     corresponding APR error codes.  On Unix and Win32, return the 
     proper APR error code after a resolver error. [Jeff Trawick]

Changes with Apache 2.0a2

  *) Renamed the executable back to httpd on all platforms other 
     than Win32
     [Ryan Bloom]

  *) Allow BeOS to survive restarts, log properly and a few
     small things it had problems with due to the way it setup
     users and groups. [David Reid]

  *) Get mod_rewrite working with APR locks
     [Paul Reder <rederpj@raleigh.ibm.com>]

  *) Actually remove the sempahore when the lock cleanup routine
     is called on BeOS. [David Reid]

  *) Clear hook registrations between reads of the config file.
     When DSOs are unloaded and re-loaded the old hook pointers may
     no longer be valid. This fix eliminates potential segfaults.
     [Allan Edwards <ake@raleigh.ibm.com>]

  *) Fix a problem with Sigfunc not being defined or bypassed
     if sigaction() wasn't found. [Jim Jagielski]

  *) Fix the locking mechanism on BSD variants.  They now use fcntl
     locks.  This allows the server to start and serve pages.
     [Ryan Bloom]

  *) First cut at getting the Win32 installer to work
     [William Rowe <wrowe@lnd.com>]

  *) Get htpasswd compiling under Windows
     [William Rowe <wrowe@lnd.com>]

  *) Change the log message for a bind() failure to show the
     interface and port number. [Jeff Trawick]

  *) Import the documentation from 1.3.12 and bring parts of it
     up-to-date with respect to the changes that have occurred
     in 2.0.
     [Tony Finch]

  *) BeOS MPM updated.  CGI bug on BeOS fixed.  IP addresses
     now logged correctly on BeOS.
     [David Reid]

  *) Create one makefile for all Win32 distributions (NT/2000/95/98).
     Makefile.win includes the same user interface as the old 
     Makefile.nt 
     [William Rowe <wrowe@lnd.com>, Jeff Trawick <trawick@us.ibm.com>]

  *) Win32 exec now uses COMSPEC environment string for command 
     shell path resolution.
     [William Rowe <wrowe@lnd.com>] PR#3715

  *) Win32: ap_connect() was not returning correct error condition
     PR5866
     [Allen Prescott <allen@clanprescott.com>]

  *) Win32: ap_open() was broken on Win9x because an NT-specific
     flag was passed to CreateFile.  ap_puts() added an unnecessary
     '\n'.
     [Jeff Trawick <trawick@us.ibm.com>]

  *) Put in Korean and Norwegian index.html pages (2.0 and 1.3)
     which where donated by Lee Kuk Hyun and Lorant Czaran. 'Fixed'
     confusing ee/et name and made all extensions language/dialect
     rather than country reflecting. Changed example files to
     explicit reflect the ISO charset and added a few common 
     ones to the example config [dirkx]

  *) Extend external module capability.  To use this, you call
     configure with --with-module=path/to/mod1,path/to/mod2,etc.
     [Ryan Bloom]

  *) Backported the various "default charset" fixes from 1.3.12,
     including the AddDefaultCharset directive. [Jim Jagielski]

  *) Added the capability to do ${ENVVAR} constructs in the
     config file. E.g. 'ServerAdmin ${POSTMASTER}'. As commited
     it does this on a line by line basis; i.e. if the envvar
     expands to something with spaces you have to protect it
     by adding quotes around it (Unless of course you expect it
     to contains more than one argument. Alternatively you
     can compile it on a per token basis; which is what people
     usually expect by setting RESOLVE_ENV_PER_TOKEN. But this
     hampers fancier hacks.
     [Dirk-Willem van Gulik]

  *) Changed the 'ErrorDocument' syntax in that it NO longer
     supports the asymetric

                ErrorDocument 301 "Some message

     Note the opening " quote, without a closing quote. It now
     has either the following syntaxes

                ErrorDocument XXX /local/uri
                ErrorDocument XXX http://valid/url
                ErrorDocument XXX "Some Message"

     The recognition heuristic is: if it has a space it
     is a message. If it has no spaces and starts with a /
     or is a valid URL then treat it that way. Otherwise it
     is assumed to be a message.

     This breaks backward compatibility but makes live a hell
     of a lot easier for GUI's and config file parsers.
     [Dirk-Willem van Gulik]

  *) Changed 'CacheNegotiatedDocs' from its present/not-present
     syntax into a 'on' or 'off' syntax. As it currently is the
     only non nesting token which uses NO_ARGS and thus is an
     absolute pain for any config interface automation. This
     breaks backward compatibility. [Dirk-Willem van Gulik]

  *) Add ability to add external modules to the build process.  This is
     done with --with-module=/path/to/module.  Modules can only be added
     as static modules at this point.
     [Ryan Bloom]

Changes with Apache 2.0a1

  *) Fix FreeBSD 3.3 core dump.
     Basically, ap_initialize() needs to get called before 
     create_process(), since create_process() passes op_on structure
     to semop() to get a lock, but op_on isn't initialized until 
     ap_initialize() calls setup_lock().  Here is a slight
     rearrangement to main() which calls ap_initialize() earlier...
     [Jeff Trawick <trawick@us.ibm.com>]

  *) Enable Apache to use sendfile/TransmitFile API
     [Bill Stoddard, David Reid, Paul Reder]

  *) Re-Implement Win32 APR network I/O APIs and most of the file I/O
     APIs.
     [Bill Stoddard]

  *) Make file I/O and network I/O writev/sendv APIs consistent.
     Eliminate use of ap_iovec_t and use Posix struct iovec.
     Use seperate variable on ap_writev to set the number of iovecs
     passed in and number of bytes written.
     [Bill Stoddard]

  *) Adapt file iol to use APR functions. Replaced ap_open_file() 
     with ap_create_file_iol(). ap_create_file_iol() requires that 
     the file be opened prior to the call using ap_open().
     [Bill Stoddard]

  *) Port mod_include and mod_cgi to 2.0
     [Paul Reder, Bill Stoddard]

  *) ap_send{,v}, ap_recv, ap_sendfile API clarification --
     bytes_read/bytes_written is always valid (never -1).  Plus
     some fixes to buff.c to correct problems introduced by the
     errno => ap_status_t changes a while back.  Plus a fix to
     chunked encoding introduced right at the beginning of 2.0.
     [Dean Gaudet]

  *) Revamped UNIX build system to use autoconf and libtool.
     [Manoj Kasichainula, Sascha Schumann]

  *) port mod_rewrite to 2.0. [Paul J. Reder <rederpj@raleigh.ibm.com>]

  *) SECURITY: More rigorous checking of Host: headers to fix security 
     problems with mass name-based virtual hosting (whether using mod_rewrite
     or mod_vhost_alias).
     [Ben Hyde, Tony Finch]
  
  *) Add back support for UseCanonicalName in <Directory> containers.
     [Manoj Kasichainula]

  *) Added APLOG_STARTUP log type.  This allows us to write an error
     message without any of the date and time information.  As a part
     of this change, I also removed all of the calls to fprintf(stderr
     and replaced them with calls to ap_log_error using APLOG_STARTUP
     writing to stderr is no longer portable, because we don't direct 
     stderr to the error log on all platforms.
     [Ryan Bloom] 
 
  *) Convert error logging functions to take errno as an argument.
     This makes our error logs more portable, because some Windows API's 
     don't set errno.  This change allows us to still output a valid
     message on all of our platforms.
     [Ryan Bloom]

  *) mod_mime_magic runs in 2.0-dev now.
     [Paul Reder <rederpj@raleigh.ibm.com>]

  *) sendfile has been added to APR.
     [John Zedlewski <zedlwski@Princeton.EDU>]

  *) buff.c has been converted to no longer use errno.
     [Manoj Kasichainula]

  *) mod_speling runs in 2.0-dev now: a bug in readdir_r handling and
     interface adaption to APR functions did it. [Martin Kraemer]

  *) Support DSOs properly on 32-bit HP-UX 11.0
     [Dilip Khandekar <dilip@cup.hp.com>]

  *) Updated MM in APR source tree from version 1.0.8 to 1.0.11
     [Ralf S. Engelschall]

  *) Cleaned APR build environment integration and bootstrap APR 
     automatically for developers from src/Configure.
     [Ralf S. Engelschall]

  *) Fixed building of src/support/htpasswd.c
     [Ralf S. Engelschall]

  *) When generating the Location: header, mod_speling forgot
     to escape the spelling-fixed uri. (Forw-Port from 1.3)
     [Martin Kraemer]

  *) Moved mod_auth_digest.c from experimental to standard. [Roy Fielding]

  *) Change all pools to APR contexts.  This is the first step to
     incorporating APR into Apache. [Ryan Bloom]

  *) Move "handler not found" warning message to below the check
     for a wildcard handler.  [Dirk <dirkm@teleport.com>, Roy Fielding]
     PR#2584, PR#2751, PR#3349, PR#3436, PR#3548, PR#4384, PR#4795, PR#4807

  *) Support line-continuation feature in config.option file and
     allow the loading of multiple option sections at once via
     ``--with-option=<section1>,<section2>,...''
     [Ralf S. Engelschall]

  *) Rebuilt CVS repository with Apache 1.3.9 as basis.  [Roy Fielding]

Changes with Apache MPM

  *) Use asynchronous AcceptEx() and a completion port to accept and
     dispatch connections to threads in Windows NT/2000. 
     [Bill Stoddard]

  *) Implement WINNT Win32 MPM from original Win32 code in http_main.c
     [Bill Stoddard]  

  *) Implement the APACI --with-option facility 
     (per default used the config.option file).
     [Ralf S. Engelschall]

  *) MPM BEOS port.  [David Reid <abb37@dial.pipex.com>]

  *) Start to implement module-defined hooks that are a) fast and b) typesafe.
     Replace pre_connection module call with a register_hook call and
     implement pre_connection as a hook. The intent is that these hooks will
     be extended to allow Apache to be multi-protocol, and also to allow the
     calling order to be specified on a per-hook/per-module basis.
     [Ben Laurie]

  *) Implement mpm_* methods as "modules". Each method gets its own
     subdir in src/modules (eg: src/modules/prefork). Selection
     of method uses Rule MPM_METHOD.  [Jim Jagielski]

  *) Port the hybrid server from the apache-apr repository as
     mpm_mpmt_pthread.  [Manoj Kasichainula]

  *) os/unix/unixd.[ch]: detach, setuid, setgid, stuff which will be common
     amongst the unix MPMs.

  *) mpm_prefork: throw away all the alarm/timeout crud; and clean up the
     signal handling for the new world order.  [Dean Gaudet]