]> granicus.if.org Git - apache/blob - CHANGES
Win32: The async AcceptEx() event should be autoreset upon
[apache] / CHANGES
1 Changes with Apache 2.0.30-dev
2   *) Win32: The async AcceptEx() event should be autoreset upon
3      successful completion of a wait (WaitForSingleObject). This
4      eliminates a number of spurious
5      setsockopt(SO_UPDATE_ACCEPT_CONTEXT) failed." messages.
6      [Bill Stoddard]
7
8   *) Move any load library path environment variables out of 
9      apachectl and into a separate environment variable file which
10      can be more easily tailored by the admin.  The environment
11      variable file as built by Apache may have additional system-
12      specific settings.  For example, on OS/390 we tailor the heap
13      settings to allow lots of threads.  [Jeff Trawick]
14     
15   *) Use the new APR pool code to reduce pool-related lock
16      contention in the worker MPM.  [Sander Striker]
17
18   *) The POD no longer assumes the child is listening on 127.0.0.1
19      and now pulls the first hostname in the list of listeners to
20      perform the dummy connect on. This fixes a bug when the user
21      had configured the Listen directive for an IP other than
22      127.0.0.1. This would result in undead children and error
23      messages such as "Connection refused: connect to listener".
24      [Aaron Bannert]
25
26   *) The worker MPM now respects the LockFile setting, needed to
27      avoid locking problems with NFS.  [Jeff Trawick]
28
29   *) Fix segfault when worker MPM receives SIGHUP.
30      [Ian Holsman, Aaron Bannert, Justin Erenkrantz]
31
32   *) Fix bug that could potentially prevent the perchild MPM from
33      working with more than one vhost/uid.  [Aaron Bannert]
34
35   *) Change make install and apxs -i processing of DSO modules to 
36      perform special handling on platforms where libtool doesn't install 
37      mod_foo.so.  This fixes some wonkiness on HP-UX, Tru64, and AIX 
38      which prevented standard LoadModule statements from working.
39      [Jeff Trawick]
40
41   *) Whenever mod_so is enabled (not just when there are DSOs for
42      our modules), do whatever special magic is required for compiling/
43      loading third-party modules.  This allows third-party DSOs to
44      be used on an AIX build when there were no built-in modules
45      built as DSOs.  (This should help on OS/390 and BeOS as well.)
46      [Jeff Trawick]
47
48   *) Allow apxs to be used to build DSOs on AIX without requiring the
49      user to hard-code the list of import files.  (This should help
50      on OS/390 and BeOS as well.)  [Jeff Trawick]
51      
52   *) Resolved segfault in mod_isapi when configuring with ISAPICacheFile.
53      PR 8563, 8919  [William Rowe]
54   
55   *) Get binary builds working when libapr and libaprutil are built
56      shared [Greg Ames]
57
58   *) Get shared builds of libapr and libaprutil, as well as Apache DSOs,
59      working on AIX.  [Aaron Bannert, Dick Dunbar <RLDunbar@pacbell.net>,
60      Gary Hook <ghook@us.ibm.com>, Victor Orlikowski, Jeff Trawick]
61
62   *) Fix the handling of SSI directives in which the ">" of the
63      terminating "-->" is the last byte in a file [Brian Pane]
64
65   *) Add back in the "suEXEC mechanism enabled (wrapper: /path/to/suexec)"
66      message that we had back in apache-1.3 and still have scattered
67      throughout our docs.  [Aaron Bannert]
68
69   *) Prevent the Win32 port from continuing after encountering an
70      error in the command line args to apache.  [William Rowe]
71
72   *) On a error in the proxy, make it write a line to the error log
73      [Ian Holsman]
74
75 Changes with Apache 2.0.29
76
77   *) Add buffering in core_output_filter to ensure that long
78      lists of small buckets don't cause small packet writes.
79      [Brian Pane, Ryan Bloom]
80
81   *) Fix the installation target to make sure that the manual is 
82      installed in the correct location.
83      [Yoshifumi Hiramatsu <hiramatu@boreas.dti.ne.jp> and
84       Gomez Henri <hgomez@slib.fr>]
85
86   *) Fix the cmd command for mod_include.  When we are processing
87      a cmd command, we do not want to use the r->filename to set
88      the command name.  The command comes from the SSI tag.  To do this,
89      I added a variable to the function that builds the command line
90      in mod_cgi.  This allows the include_cmd function to specify
91      the command line itself. [Ryan Bloom]
92
93   *) Change open_logs hook to return a value, allowing you
94      to flag a error while opening logs
95      [Ian Holsman, Doug MacEachern]
96
97   *) Change post_config hook to return a value, allowing you
98      to flag a error post config
99      [Ian Holsman, Jeff Trawick]
100
101   *) Allow SUEXEC_BIN (the path to the suexec binary that is
102      hard-coded into the server) to be specified to the configure
103      script by the --with-suexec-bin parameter.  [Aaron Bannert]
104
105   *) Fix segv in worker MPM following accept on pipe-of-death
106      [Brian Pane]
107
108   *) Add mod_deflate to experimental.  
109      [Ian Holsman, Justin Erenkrantz]
110
111   *) Bail out at configure time if an invalid MPM was specified.
112      [jean-frederic clere <jfrederic.clere@fujitsu-siemens.com>]
113
114   *) Prevent segv in ap_note_basic_auth_failure() when no AuthName is
115      configured [John Sterling <sterling@covalent.net>]
116
117   *) Fix apxs to use sbindir.  [Henri Gomez <hgomez@slib.fr>]
118
119   *) Fix a problem with IPv6 vhosts.  PR #8118  [Jeff Trawick]
120
121   *) Optimization for the BNDM string-search function in
122      mod_include.  [Brian Pane]
123
124   *) Fixed the behavior of the XBitHack directive.
125      [Taketo Kabe <kabe@sra-tohoku.co.jp>, Cliff Woolley] PR#8804
126
127   *) The threaded MPM for Unix has been removed.  Use the worker
128      MPM instead.  [various]
129
130   *) APR-ize the resolver logic in mod_unique_id.  This fixes a bug
131      in logging the error from a failed DNS lookup.  [Jeff Trawick]
132
133   *) Added the missing macros AP_INIT_TAKE13 and AP_INIT_TAKE123.
134      [Cliff Woolley]
135
136   *) Get mod_cgid killed when a MPM exits due to a fatal error.
137      [Jeff Trawick]
138
139   *) Fix a file descriptor leak in mod_include.  When we include a
140      file, we use a sub-request, but we didn't destroy the sub-request
141      immediately, instead we waited until the original request was
142      done.  This patch closes the sub-request as soon as the data is
143      done being generated.  [Brian Pane <bpane@pacbell.net>]
144
145   *) Allow modules that add sockets to the ap_listeners list to
146      define the function that should be used to accept on that
147      socket.  Each MPM can define their own function to use for
148      the accept function with the MPM_ACCEPT_FUNC macro.  This
149      also abstracts out all of the Unix accept error handling
150      logic, which has become out of synch across Unix MPMs.
151      [Ryan Bloom]
152
153   *) Fix a bug which would cause the response headers to be omitted
154      when sending a negotiated ErrorDocument because the required
155      filters were attached to the wrong request_rec.
156      [John Sterling <sterling@covalent.net>]
157
158   *) Remove commas from the end of the macros that define
159      directives that are used by MPMs.  Prior to this patch,
160      you would use these macros without commas, which was unlike
161      the macros for any other directives.  Now, the caller provides
162      the comma rather than the macro providing it.  This makes
163      the macros look more like the rest of the directives.
164      [Ryan Bloom and Cliff Woolley]
165
166   *) Add 'redirect-carefully' environment option to disable sending
167      redirects under special circumstances.  This is helpful for 
168      Microsoft's WebFolders when accessing a directory resource via
169      DAV methods.  [Justin Erenkrantz]
170
171   *) Begin to abstract out the underlying transport layer.
172      The first step is to remove the socket from the conn_rec,
173      the server now lives in a context that is passed to the
174      core's input and output filters. This forces us to be very
175      careful when adding calls that use the socket directly,
176      because the socket isn't available in most locations.
177      [Ryan Bloom]
178
179   *) Really reset the MaxClients value in worker and threaded
180      when the configured value is not a multiple of the number 
181      of threads per child.  We said we did previously but we 
182      forgot to. [Jeff Trawick]
183
184   *) Add Debian layout.  [Daniel Stone <daniel@sfarc.net>]
185
186   *) If shared modules are requested and mod_so is not available,
187      produce a fatal config-time error.  [Justin Erenkrantz]
188
189   *) Improve http2env's performance by cutting the work it has to
190      do.  [Brian Pane <bpane@pacbell.net>]
191
192   *) use new 'apr_hash_merge' function in mod_mime (performance fix)
193      [Brian Pane <bpane@pacbell.net>]
194
195 Changes with Apache 2.0.28
196
197   *) Fix infinite loop in mod_cgid.c.  
198      [Dale Ghent <daleg@elemental.org>, Brian Pane <bpane@pacbell.net>]
199
200   *) When no port is given in a "ServerName host" directive, the
201      server_rec->port is now set to zero, not 80. That allows for
202      run-time deduction of the correct server port (depending on
203      SSL/plain, and depending also on the current setting of
204      UseCanonicalName). This change makes redirections
205      work, even with https:// connections. As in Apache-1.3, the
206      connection's actual port number is never used, only the ServerName
207      setting or the client's Host: setting. Documentation updated
208      to reflect the change. [Martin Kraemer]
209
210   *) Add a '%{note-name}e' argument to mod-headers, which works in
211      the same way as mod_log_confg.  [Ian Holsman]
212
213   *) Fix the spelling of the AP_MPMQ_MIN_SPARE_DAEMONS and
214      AP_MPMQ_MAX_REQUESTS_DAEMON macros in ap_mpm.h and all standard
215      MPMs.  [Cliff Woolley]
216
217   *) Introduce htdbm, a user management utility for db/dbm authorization
218      databases.  [Mladen Turk <mturk@mappingsoft.com>]
219
220   *) Optimize usage of strlen and strcat in ap_directory_walk.
221      [Brian Pane <bpane@pacbell.net>]
222
223 Changes with Apache 2.0.27
224
225   *) Introduce an Apache mod_ssl initial configuration template 
226      (ssl.conf, generated from ssl-std.conf).  [Ralf S. Engelschall]
227
228   *) Fixed a memory leak in the getline parsing code that could
229      be triggered by arbitrarily large header lines. Requests
230      from the core input filter for single lines are now limited
231      to HUGE_STRING_LEN (8192 bytes).  [Aaron Bannert]
232
233   *) Fix a truncation bug in how we print the port on the Via: header. 
234      The routine that prints the Via: header now takes a length for
235      the port string.  [Zvi Har'El <rl@math.technion.ac.il>]
236
237   *) Some syntax errors in mod_mime_magic's magic file can result
238      in a 500 error, which previously was unlogged.  Now we log the
239      error.  [Jeff Trawick]
240
241   *) Add the support/checkgid helper app, which checks the run-time
242      validity of group identifiers usable in the Group directive.
243      [Ken Coar]
244
245   *) Various --enable-so options have been fixed: --enable-so is
246      treated as "static"; explicit --enable-so=shared issues an error;
247      and explicit --enable-so fails with error on systems without
248      APR_HAS_DSO.  [Aaron Bannert]
249
250   *) Fix a segfault in the core input filter when the client socket
251      gets disconnected unexpectedly.  [Cliff Woolley]
252
253   *) Fix the reporting for child processes that die.  This removes
254      all of the non-portable W* macros from Apache. 
255      [Jeff Trawick and Ryan Bloom]
256
257   *) Win32: Track and display "Parent Server Generation:" in
258      mod_status output. The generation will be bumped at
259      server graceful restart, when the child process exits
260      by hitting MaxRequestsPerChild or if the child 
261      process exits abnormally. [Bill Stoddard]
262
263   *) Win32: Fix problem where MaxRequestsPerChild directive was
264      not being picked up in favor of the default. Enable
265      the parent to start up a new child process immediately upon
266      the old child starting shutdown.
267      [Bill Stoddard]
268
269   *) Fix some bungling of the remote port in rfc1413.c so that 
270      IdentityCheck retrieves the proper user id instead of failing
271      and thus always returning "nobody."  
272      [Dick Streefland <Dick.Streefland@xs4all.nl>]
273
274   *) Introduced thread saftey for mod_rewrite's internal cache.
275      [Brian Pane <bpane@pacbell.net>]
276
277   *) Simplified mod_env's directives to behave as most directives are
278      expected, in that UnsetEnv will not unset a SetEnv and PassEnv 
279      directive following that UnsetEnv within the same container.
280      Also provides a runtime startup warning if a PassEnv configured 
281      environment value is undefined.  [William Rowe]
282
283   *) The worker MPM is now completely ported to APR's new lock API. It
284      uses native APR types for thread mutexes, cross-process mutexes,
285      and condition variables.  [Aaron Bannert]
286
287   *) Sync up documentation to remove all references to the now deprecated
288      Port directive.  [Justin Erenkrantz]
289
290   *) Moved all ldap modules from the core to httpd-ldap sub-project
291      [Ryan Bloom]
292
293   *) Exit when we can't listen on any of the configured ports.  This
294      is the same behavior as 1.3, and it avoids having the MPMs to
295      deal with bogus ap_listen_rec structures.  [Jeff Trawick]
296
297   *) Cleanup the proxy code that creates a request to the origin
298      server.  This change adds an optional hook, which allows modules
299      to gain control while the request is created if the proxy module
300      is loaded.  The purpose of this hook is to allow modules to add
301      input and/or output filters to the request to the origin.  While
302      I was at it, I made the core use this hook, so that proxy request
303      creation uses some of the code from the core.  This can still be
304      greatly improved, but this is a good start.  [Ryan Bloom]
305
306 Changes with Apache 2.0.26
307
308   *) Port the MaxClients changes from the worker MPM to the threaded
309      MPM.  [Ryan Bloom]
310
311   *) Fix mod_proxy so that it handles chunked transfer-encoding and works
312      with the new input filtering system.  [Justin Erenkrantz]
313
314   *) Introduce the MultiviewsMatch directive, to allow the operator
315      to be flexible in recognizing Handlers and Filters filename
316      extensions as part of the Multiviews matching logic, strict with
317      MultiviewsMatch NegotiatedOnly to accept only filename extentions 
318      that designate negotiated parameters, (content type, charset, etc.)
319      or MultiviewsAll for the 1.3 behavior of matching any files, even
320      if they have unregistered extensions.  [William Rowe]
321
322   *) Fixed the configure script to add a LoadModule directive to
323      the default httpd.conf for any module that was compiled
324      as a DSO.  [Aaron Bannert <aaron@clove.org>]
325
326   *) rewrite mod_ssl input filtering to work with the new input filtering
327      system.  [Justin Erenkrantz]
328
329   *) prefork: Don't segfault when we are able to listen on some but
330      not all of the configured ports.  [Jeff Trawick]
331
332   *) Build mod_so even if no core modules are built shared.
333      [Aaron Bannert <aaron@clove.org>]
334
335   *) Introduce ap_directory_walk rewrite (with further optimizations
336      required) to adapt to the ap_process_request_internal() changes.
337      Optimized so subrequests and redirects now reuse previous section 
338      merges, until we mismatch with the original directory_walk, and
339      precomputed r->finfo results will cause directory_walk to skip
340      the most expensive phases of the function.  [William Rowe]
341
342   *) Allow ApacheMonitor to connect to and control Apache on other 
343      WinNT/2K machines.   [Mladen Turk <mturk@mappingsoft.com>]
344
345   *) Remove the Port directive.  In it's place, the Listen directive
346      is now a required directive, which tells Apache what port to
347      listen on.  The ServerName directive has also been extended
348      to accept an optional port.  If the port is specified to the
349      ServerName, the server will report that port whenever it
350      reports the port that it is listening on.  This change was
351      made to ease configuration errors that stem from having a Port
352      directive, and a Listen directive.  In that situation, the server
353      would only listen to the port specified by the Listen command,
354      which caused a lot of confusion to users.  [Ryan Bloom]
355
356   *) Added mod_mime_magic, mod_unique_id and mod_vhost_alias to the Win32
357      build, as loadable modules.  [William Rowe]
358
359   *) Fix --enable-mods-shared processing.  If most is specified,
360      then all modules that can be compiled as shared modules are.
361      [Aaron Bannert <aaron@clove.org>]
362
363   *) Update the mime.types file to map video/vnd.mpegurl to mxu
364      and add commonly used audio/x-mpegurl for m3u extensions.        
365      [Heiko Recktenwald <uzs106@uni-bonn.de>, Lars Eilebrecht]
366
367   *) Eliminate the depreciated r->content_language, in favor of the array
368      r->content_languages introduced many years ago.  Module authors must
369      substantially overhaul their modules, so this needs to be upgraded
370      if the module still relied on backwards-brokeness.  [William Rowe]
371
372   *) Allow configure help strings to work with autoconf 2.50+ and 2.13.
373      [Justin Erenkrantz]
374
375   *) Rewrite the input filtering mechanisms to consolidate and reorganize
376      code.  In short, core_input_filter does something now and
377      ap_http_filter is now only concerned with HTTP.  [Justin Erenkrantz]
378
379   *) Update the Win32 build to re-absorb mod_proxy and family.
380      [William Rowe]
381
382   *) Resolved the build failure on Win32 using MSVC 5.0 (without the
383      current SDK.)  [William Rowe]
384
385   *) Some style changes to the code that does ProxyErrorOverride. Fixed
386      config merge behaviour. [Graham Leggett]
387
388   *) Allow support programs to be compiled against a static version
389      of libapr.  This allows the smaller support programs to be 
390      relocated.  [Aaron Bannert <aaron@clove.org>]
391
392   *) Update the mime.types file to the registered media types as
393      of 2001-09-25, and add mapping for xsl extension [Mark Cox]
394
395   *) Fix MaxClients in the Worker MPM, so that it specifies the maximum
396      number of clients that can connect at the same time, instead of
397      specifying the maximum number of child processes.
398      [Aaron Bannert <aaron@clove.org>]
399
400   *) Switch proc_pthread AcceptMutex configuration directive to pthread to 
401      be consistent with 1.3.  [Justin Erenkrantz]
402
403   *) Cache apr_explode_localtime() value for 15 seconds.
404      [Brian Pane <bpane@pacbell.net>]
405
406   *) Fix mod_include to not return ETag or Last-Modified headers.
407      [Ian Holsman <ianh@cnet.com>]
408
409   *) Fix worker MPM's scoreboard logic.  [Aaron Bannert <aaron@clove.org>]
410
411   *) Eliminate the wasteful run-time conversion of method names from strings 
412      to numbers in places where the methods are known at compile time.  
413      [Brian Pane <bpane@pacbell.net>]
414
415   *) Turn the worker MPM's queue into a LIFO.  This may
416      improve cache-hit performance under some conditions.
417      [Aaron Bannert <aaron@clove.org>]
418
419   *) Switch back to SIGUSR1 for graceful restarts on all platforms that
420      support it.  [Justin Erenkrantz]
421
422   *) Cleanup the worker MPM.  We no longer re-use transaction
423      pools.  This incurs less overhead than shuffling the pools
424      around so that they can be re-used.  Remove one of the
425      queue's condition variables.  We just redefined the API to
426      state that you can't try to add more stuff than you allocated
427      segments for.  [Aaron Bannert <aaron@clove.org>]
428
429   *) Fix SSL VPATH builds [Cody Sherr <csherr@covalent.net>]
430
431   *) Fixed persistent connections when a request contains a body.
432      [Greg Stein]
433
434   *) mod_dav uses a new API to speak to the backend provider for dead
435      property management. [Greg Stein]
436
437   *) Remove the Win32 script-processing exception from mod_cgi, and
438      roll build_command_line/build_argv_list into a unified, overrideable
439      ap_cgi_build_command optional function.  [William Rowe]
440
441   *) Rewrite find_start_sequence to use a better search algorithm
442      to find the start tag.  [Justin Erenkrantz]
443
444   *) Fix a seg fault in mod_include.  When we are generating an
445      internal redirect, we must set r->uri to "", not a bogus
446      string, and not NULL.  [Ryan Bloom]
447
448   *) Optimized location_walk, so subrequests, redirects and second passes
449      now reuse previous section merges on a <Location > by <Location >
450      basis, until we mismatch with the original location_walk. 
451      [William Rowe]
452
453   *) Back out the 1.45 change to util_script.c.  This change made
454      us set the environment variable REQUEST_URI to the redirected
455      URI, instead of the originally requested URI.
456      [Taketo Kabe <kabe@sra-tohoku.co.jp>]
457
458   *) Make mod_include do lazy evaluation of potentially expensive to
459      compute variables.  [Brian Pane <bpane@pacbell.net>]
460
461   *) Fix logging of bytes sent for HEAD requests.  %b and %B should
462      log either - or 0, before this patch, they were both logging
463      the file size.  [Taketo Kabe <kabe@sra-tohoku.co.jp>]
464
465   *) Make mod_include check for BYTE_CHECK_THRESHOLD per bucket rather 
466      than per character.  [Brian Pane <bpane@pacbell.net>]
467
468   *) Normalize the primary request, redirects and sub-requests to
469      run the same ap_process_request_internal for consistency in
470      robustness, behavior and security.  [William Rowe]
471
472   *) Fix a segfault with mod_include when r->path_info is not set
473      (which is the case with mod_proxy).  [Ian Holsman <ianh@cnet.com>]
474
475   *) Add -X functionality back.  This indicates to all MPMs and any other
476      part of Apache that it should run in "debug" mode.  [Justin Erenkrantz]
477
478   *) Some initial support for the cygwin platform [prefork only].
479      This is not to be confused with support for the WinNT/Win32
480      platform, which is the recommended configuration for native
481      Win32 users.  The cygwin platform support is recommended for
482      cygwin platform users. [Stipe Tolj <tolj@wapme-systems.de>]
483
484   *) Changed syntax of Set{Input|Output}Filter.  The list of filters
485      must be semicolon delimited (if more than one filter is given.)
486      The Set{Input|Output}Filter directive now overrides a parent
487      container's directive (e.g. SetInputFilter in <Directory /web/foo>
488      will override any SetInputFilter directive in <Directory /web>.)
489      This new syntax is more consistent with Add{Input|Output}Filter
490      directives defined in mod_mime.  Also cures a bug in prior releases
491      where the Set{Input|Output}Filter directive would corrupt the 
492      global configuration if the multiple directives were nested.
493      [William Rowe]
494
495   *) Cured what's ailed mime for quite some time.  If an AddSomething
496      was given in the configuration (Language, Charset, Handler or
497      Encoding) Apache would set the content type as given by AddType, 
498      but refused to check the mime.types file if AddType wasn't given 
499      for that specific extension.  Setting the AddHandler for .html 
500      without setting the AddType text/html html would cause Apache to 
501      use the default content type.  [William Rowe]
502
503   *) Added some bulletproofing to memory allocation in the LDAP cache
504      code. [Graham Leggett]
505
506 Changes with Apache 2.0.25
507
508   *) Move the installed /manual directory out of the /htdocs/ tree, so
509      that it can be kept more independently from the remaining document
510      root. The "Alias /manual ..." already allowed for easy projection
511      into existing private document trees. [Martin Kraemer]
512
513   *) Add specified user attributes to the environment when using
514      mod_auth_ldap. This allows you to use mod_include to embed specified
515      user attributes in a page like so:
516      Hello <!--#echo var="AUTHENTICATE_CN"-->, how are you?
517      [Graham Leggett]
518
519   *) Fix a performance problem with the worker MPM.  We now create
520      transaction pools once, and re-use them for each connection.
521      [Aaron Bannert <aaron@clove.org>]
522
523   *) Modfied mod_mime to prevent mod_negotation from serving a multiview
524      of a 'handler' or 'filter', so that any filename extension that does 
525      not contribute to the negotiated metadata can't be served without
526      an explicit request.  E.g., if the .Z extension is associated with
527      an unzip filter, the user request somefile.Z.html, mod_negotiation
528      won't serve it.  It can serve somefile.Z.html when somefile.Z is
529      requested, since the .Z extension is explictly requested, if the
530      .html extension is associated with ContentType text/html.
531      [William Rowe]
532
533   *) Introduce the AddInputFilter filter[;filter...] ext [ext...]
534      and corresponding AddOutputFilter syntax, to insert one or more 
535      filters by mod_mime filename extension processing.
536      [William Rowe]
537
538   *) Fix a growing connection pool in core_output_filter() for 
539      keepalive requests.  [Jeff Trawick]
540
541   *) Moved split_and_pass_pretag_buckets back to being a
542      macro at Ryans's request. Removed the return from it
543      by setting and returning a return code instead. Updated
544      the code to check the return code from the macro and
545      do the right thing. [Paul J. Reder]
546
547   *) Fix a segfault when a numeric value was received for Host:.
548      [Jeff Trawick]
549
550   *) Add a function ap_remove_input_filter.  This is to match
551      up with ap_remove_output_filter.  [Ryan Bloom]
552
553   *) Clean up location_walk, so that this step performs a minimum
554      amount of redundant effort (it must be run twice, but it will no
555      longer reparse all <Location > blocks when the request uri
556      hadn't changed.)  [William Rowe]
557
558   *) Eliminate proxy: (and all other 'special') processing from the
559      ap_directory_walk() phase.  Modules that want to use special
560      walk logic should refer to the mod_proxy map_to_location example,
561      with it's proxy_walk and proxysection implementation.  This makes
562      either directory_walk flavor much more legible, since that phase
563      only runs against real <Directory > blocks.
564      [William Rowe]
565
566   *) Fix a security problem in mod_include which would allow
567      an SSI document to be passed to the client unparsed.
568      [Cliff Woolley, Brian Pane]
569
570   *) Introduce the map_to_storage hook, which allows modules to bypass
571      the directory_walk and file_walk for non-file requests.  TRACE
572      shortcut moved to http_protocol.c as APR_HOOK_MIDDLE, and the
573      directory_walk/file_walk happen as APR_HOOK_VERY_LAST in core.c.
574      [William Rowe]
575
576   *) Add the ability for mod_include to add the INCLUDES filter
577      if the file is configured for the server-parsed handler.
578      This makes the configuration for .shtml files much easier
579      to understand, and allows mod_include to honor Apache 1.3
580      config files.   Based on Doug MacEachern's patch to PHP
581      to do the same thing.  [Ryan Bloom]
582
583   *) force OpenSSL to ignore process local-caching and to always
584      get/set/delete sessions using mod_ssl's callbacks
585      [Madhusudan Mathihalli <madhusudan_mathihalli@hp.com>,
586       Geoff Thorpe <geoff@geoffthorpe.net>]
587
588   *) Make the worker MPM shutdown and restart cleanly.  This also
589      cleans up some race conditions, and gets the worker using
590      pools more cleanly.  [Aaron Bannert <aaron@clove.org>]
591
592   *) Implement CRYPTO_set_locking_callback() in terms of apr_lock
593      for mod_ssl
594      [Madhusudan Mathihalli <madhusudan_mathihalli@hp.com>]
595
596   *) Fix for mod_include. Ryan's patch to check error
597      codes put a return in the wrong place. Also, the
598      include handler return code wasn't being checked.
599      I don't like macros with returns, so I converted
600      SPLIT_AND_PASS_PRETAG_BUCKETS into a function.
601      [Paul J. Reder <rederpj@raleigh.ibm.com>]
602
603   *) fix segv in mod_mime if no AddTypes are configured
604      [John Sterling <sterling@covalent.net>]
605
606   *) Enable ssl client authentication at SSL_accept time
607      [Madhusudan Mathihalli <madhusudan_mathihalli@hp.com>]
608
609   *) Fix a segfault in mod_include when the original request has no
610      associated filename (e.g., we're filtering the error document for
611      a bad URI).  [Jeff Trawick]
612
613   *) Fix a storage leak (a strdup() call) in mod_mime_magic.  [Jeff Trawick]
614
615   *) The prefork and OS/2 MPMs are overwriting the pid file when a second copy
616      of httpd is started and shuts down due to socket conflict. Moving the
617      call to ap_log_pid solves the problem.
618
619   *) Changed the late-1.3 log_config substitution %c to %X, to log the
620      status of the closed connection, as it conflicts with the far more
621      common, historical ssl logging directive %...{var}c.  [William Rowe]
622
623   *) Added the common error/ tree to the build/install targets 
624      (similar to the common icons/ tree) for the multi-language error 
625      messages that Lars committed earlier.  [William Rowe]
626
627   *) Added a multi process, multi threaded OS/2 MPM mpmt_os2.  [Brian Havard]
628
629   *) Added a default commented-out mod_ldap and mod_auth_ldap
630      configuration to httpd-std.conf and httpd-win.conf
631      [Graham Leggett]
632
633   *) Added documentation for mod_ldap and mod_auth_ldap.
634      [Graham Leggett]
635
636   *) Enabled negative caching on attribute comparisons in the LDAP cache.
637      Fixed a problem where the default cache TTL was set in milliseconds
638      not microseconds causing the cache to time out almost immediately.
639      [Graham Leggett]
640
641   *) Fixed all the #if APR_HAS_SHARED_MEMORY checks within the LDAP
642      module code to follow APR. [Graham Leggett]
643
644   *) Fixed LDAP cleanup on graceful restarts. LDAP connections are now
645      cleaned up when the connection pool pool is cleaned up.
646      [Graham Leggett]
647
648   *) Fix a minor issue with Jeff Trawick's mod_include
649      patch. Without this patch, the code will just allocate
650      more bytes in get_combined_directive than are needed.
651      [Paul Reder]
652
653   *) Added the LDAP authentication module mod_auth_ldap.
654      [Dave Carrigan <dave@rudedog.org>, Graham Leggett]
655
656   *) Added the LDAP cache and connection pooling module mod_ldap.
657      [Dave Carrigan <dave@rudedog.org>, Graham Leggett]
658
659   *) Fix --enable-modules=all breakage with mod_auth_db and mod_auth_digest
660      by allowing a module to disable itself if its prerequisites are not
661      met.  [Justin Erenkrantz]
662
663 Changes with Apache 2.0.24
664
665   *) Fix a couple of issues in mod_include when the tag appeared at
666      offsets near 8192 in the file being parsed.  [Jeff Trawick]
667
668   *) Fix an assertion failure in mod_ssl when the keepalive timeout is  
669      reached.  [Jeff Trawick]
670
671   *) Numerous improvements to the Win32 build system.  Introduced command line
672      builds without requiring .mak files for MSVC 6.0 and later versions.
673      Improved .dsp file compatibility for both Visual Studio 5.0 and 6.0 users.
674      [William Rowe]
675
676   *) Assorted corrections and improvements to the winnt_mpm startup code.  Better
677      reporting of uninstalled services and other error conditions, and changed the 
678      default service name to Apache2.  [William Rowe]
679
680   *) Numerous improvements to the Win32 ApacheMonitor utility, including winnt_mpm 
681      compatibility with existing Apache 1.3 Win32 Apache management utilites.  
682      [Mladen Turk <mturk@mappingsoft.com>, William Rowe]
683
684   *) Fixed the segfaults in mod_mime introduced by hash tables in 2.0.20.
685      [William Rowe, Greg Ames]
686
687   *) Rounded out the mod_mime Add/Remove pairs by adding RemoveLanguage
688      and RemoveCharset directives.  [William Rowe]
689
690   *) The Unix MPMs other than perchild now allow child server 
691      processes to use the accept mutex when starting as root and 
692      using SysV sems for the accept mutex.  Previously, this 
693      combination would lead to fatal errors in the child server 
694      processes.  perchild can't use SysV sems because of security
695      issues.  [Jeff Trawick, Greg Ames]
696
697   *) Added Win32 revision stamp resources to all http binaries
698      (including modules/ and support/ tools.)  PR7322  [William Rowe]
699
700   *) Fix ap_rvprintf to support more than 4K of data at one time.
701      [Cody Sherr <csherr@covalent.net>]
702
703   *) We have always used the obsolete/deprecated Netscape syntax
704      for our tracking cookies; now the CookieStyle directive
705      allows the Webmaster to choose the Netscape, RFC2109, or
706      RFC2965 format.  The new CookieDomain directive allows the
707      setting of the cookie's Domain= attribute, too.  PR #s 5006,
708      5023, 5920, 6140 [Ken Coar]
709
710   *) Tweak server/Makefile so that the rules for generating exports.c
711      are compatible with make utilities which don't expand wildcards
712      in a dependency list (e.g., OS/390 make, certain levels of GNU
713      make).  [Jeff Trawick]
714
715   *) Install the SSL headers.  [John Sterling <sterling@covalent.net>]
716
717   *) Begin to sanitize the MPM configuration directives.  Now, all
718      MPMs use the same functions for all common MPM directives.  This
719      should make it easier to catch all bugs in these directives once.
720      [Cody Sherr <csherr@covalent.net>]
721
722   *) Close a major resource leak.  Every time we had issued a
723      graceful restart, we leaked a socket descriptor.
724      [Ryan Bloom]
725
726   *) Fix a problem with the new method code.  We need to cast
727      the 1 to an apr_int64_t or it will be treated as a 32-bit
728      integer, and it will wrap after being shifted 32 times.
729      [Cody Sherr <csherr@covalent.net> and Ryan Morgan <rmorgan@covalent.net>]
730
731   *) Fix a bug in mod_expires.  Previous to this patch, if you
732      told mod_expires to add 604800 seconds to the last-modified
733      time, it actually added 604800 usec's to the last-modified time,
734      so that when looking at the response it looked like nothing
735      had been done.  The root of the problem was that we always compute
736      time in usec's, but we ask users to input sec's.  This means we
737      need to convert to usec's before using those values.
738      [Ryan Bloom]
739
740   *) The worker MPM now handles shutdown and restart requests.  It
741      definitely isn't perfect, but we do stop the servers correctly.
742      The biggest problem right now is that SIGHUP causes the server to
743      just die.  [Ryan Bloom]
744
745 Changes with Apache 2.0.23
746
747   *) Use the prefork MPM by default on Unix.  [various]
748
749   *) Added a systray icon monitor application for Win32.
750      [Mladen Turk <mturk@mappingsoft.com>]
751
752   *) mod_rewrite: Fix the line ending on some non-Unix systems for 
753      messages written to the rewrite log.  
754      [Richard Labennett <rlabenn@us.ibm.com>]
755
756   *) All mod_autoindex query parsing is now quietly quashed with the 
757      IndexOption IgnoreClient.  The IndexOption SuppressColumnSorting 
758      still drops the column sort <a href>'s for the column headers, but 
759      IgnoreClient is required to ignore these Query options entirely.  
760      [William Rowe]
761
762   *) Introduced new mod_autoindex query argument parsing for F=[0|1|2]
763      to allow the client to select plain, FancyIndexing or HTMLTable
764      formatting, V=[0|1] to inhibit or enable version sorting, and 
765      P=pattern to return only specific files.  The old Query Arguments
766      were reorganized as C=f for sorting column 'f' (same N, D, S, or M
767      as before), and O=A|D for ordering ascending or descending.  
768      [William Rowe]
769
770   *) Fixed an error in mod_include's directive parsing routines which
771      caused #if, #elif, and #else expressions containing backslashes
772      to be improperly evaluated.  [Cliff Woolley]
773
774   *) Introduced new mod_autoindex IndexOptions flags: SuppressIcon to 
775      drop the icon column, SuppressRules to drop the <hr> elements, 
776      and HTMLTable to create rudimentary HTML table listings (implies 
777      FancyIndexing).  [William Rowe]
778
779   *) Re-introduced the mod_autoindex IndexOptions flag TrackModified
780      from Apache 1.3.15.  This is needed for two reasons, first, given
781      multiple machines within a server farm, ETags and Last-Modified 
782      stamps won't correspond from machine to machine, and second, many 
783      Unixes don't capture changes to the date or time stamp of existing 
784      files, since these don't modify the dirent itself.  [William Rowe]
785
786   *) Re-introduced the mod_autoindex IndexOptions flag FoldersFirst 
787      and DirectoryWidth options from Apache 1.3.10. 
788      [William Rowe, Ken Coar]
789
790   *) Eliminated FancyIndexing directive, deprecated early in Apache
791      1.3 by the IndexOptions FancyIndexing syntax.  [William Rowe]
792
793   *) mod_autoindex now excludes any file names that would result in
794      an error, other than a success or redirect.  Also optimized
795      the parent directory, always included except in the URI '/'.
796      [William Rowe]
797
798   *) Refactored mod_negotiation and mod_mime to help mod_dir accept
799      negotiated index pages, and prevent the server from defaulting
800      to an autoindex of the directory.  mod_negotiation will now die
801      with a 500 Internal Error if it could match some filenames 
802      (e.g. for mod_dir) but none can be served.  mod_negotation now
803      refuses to serve any file with an extention that mod_mime doesn't
804      recognize, and wasn't part of the request.  [William Rowe]
805
806   *) Eliminate mod_cgi's handling of .exe files without the .exe file
807      extension.  This is already handled by multiviews, if the admin
808      wishes to AddHandler .exe or define a content type handler and 
809      associate .exe files with that content type.  Multiviews must be
810      enabled to allow these to be served.  [William Rowe]
811
812   *) Speed up the server's response to a spike in incoming workload
813      or restarts by assigning empty scoreboard slots to new processes
814      when they are available.  [Greg Ames]
815
816   *) Add a handler to mod_includes.c.  This handler is designed to
817      implement the XbitHack directive.  This can't be done with a
818      fixup, because we need to check the content-type, which is
819      only available in the handler phase.  [Ryan Bloom]
820
821   *) Make the includes filter check return codes from filters lower in
822      the filter chain.  If a lower level filter returns an error, then
823      the request needs to stop immediately.  This allows mod_include to
824      stop parsing data once a lower filter recognizes an error.
825      [Ryan Bloom]
826
827   *) Add the ability to extend the methods that Apache understands
828      and have those methods <limit>able in the httpd.conf. It uses 
829      the same bit mask/shifted offset as the original HTTP methods 
830      such as M_GET or M_POST, but expands the total bits from an int to 
831      an ap_int64_t to handle more bits for new request methods than 
832      an int provides.  [Cody Sherr <csherr@covalent.net>]
833
834   *) Fix broken mod_mime behavior in merging its arguments.  Possible
835      cause of unexplicable crashes introduced in 2.0.20.  [William Rowe]
836
837   *) Solve many mod_ssl porting issues (too many to detail) with 
838      help from the whole team, but most notably [Ralf S. Engelschall, 
839      Madhusudan Mathihalli <madhusudan_mathihalli@hp.com>, 
840      Doug MacEachern, William Rowe, Cliff Woolley]
841
842   *) More stall fixes for the threaded & worker mpm's.
843      Make mod_status output more accurate.  Don't
844      count workers in processes which aren't actively
845      serving requests. [Greg Ames]
846      
847   *) Win32: Get SSI exec cgi tag working. [Bill Stoddard]
848
849   *) Add a single listener/multiple worker MPM.  This MPM is
850      definately not fully correct, but it allows us to solve many
851      of the problems that exist in the threaded MPM.  This is a 
852      modified version of the threaded MPM.  [Ryan Bloom]
853
854   *) Improve content generation throughout Apache, providing closer
855      compliance with HTML 3.2, HTML 4.01 Transitional and XHTML 1.0
856      Transitional specifications.  [William Rowe]
857
858 Changes with Apache 2.0.22
859   
860   *) Fix a problem where the threaded MPM stalls after restarts or
861      segfaults.  Also prevent multiple active processes from using
862      the same scoreboard slot.  [Greg Ames]
863
864   *) Apache/Win32 now fills in the service description with Apache's
865      server version string, including loaded and advertised modules.
866      [William Rowe]
867
868   *) Improved support for the Win32 build, to recover gracefully from
869      missing apr or apr-util directories or the awk interpreter, 
870      create the proper cgi-bin examples, including a test-cgi.bat, and 
871      fix the perl shebang line for printenv.pl, when installing from 
872      the build environment.  [William Rowe]
873
874   *) Fix a segfault in threaded.c caused by passing uninitialized
875      apr_thread_t * to apr_thread_join().  [Jeff Trawick]
876
877   *) Use new APR number conversion functions to reduce CPU consumption 
878      when setting the content length, and in mod_log_config.
879      [Brian Pane]
880      
881   *) Fix problem reported by Taketo Kabe <kabe@sra-tohoku.co.jp>
882      where HEAD response headers were being repeated twice for
883      files greater than 32K bytes (4*AP_MIN_BYTES_TO_WRITE). This
884      problem in the http_header filter was exposed by the recent rewrite
885      of the content_length filter. [Taketo Kabe, Bill Stoddard]
886
887   *) Fix seg faults in mod_status with ExtendedStatus enabled, after
888      restarts.  A garbage pointer to a vhost's server_rec from the
889      previous generation was being left around under certain
890      conditions. [Greg Ames]
891
892   *) Fix a cosmetic problem with mod_include.  Non-existant SSI vars
893      used to appear as '(none', without the closing paren.
894      [Günter Knauf <eflash@gmx.net>]
895
896   *) Improve the exports generating awk script.  In the past, we had
897      work around problems in the awk script by avoiding some #if and
898      #ifdefs.  This has bitten us many times in generating the exports.c
899      file.  This improvement allows corrects the header file parsing.
900      [Sander Striker <striker@apache.org>]
901
902 Changes with Apache 2.0.21
903
904   *) Resolve the Win32 htpasswd bug, where a file that existed would be
905      overwritten, regardless of the -c flag.
906      [William Rowe, Mladen Turk <mladen.turk@mail.inet.hr>]
907
908   *) Introduce connection sub-pools into ab.  Truncating the lifetime
909      of these allocations means that ab no longer perpetually grows
910      its working set, running out of memory on large request attempts.
911      [William Rowe]
912
913   *) Make scoreboard creation a hook.  This allows management
914      modules to have access to the scoreboard at the time that it is
915      created, and at every restart request.  
916      [Cody Sherr <csherr@covalent.net>]
917
918   *) Changed AP_MPMQ_MAX_DAEMONS to refer to MaxClients and
919      added an AP_MPMQ_MAX_DAEMON_USED to refer to the highest
920      daemon index actually used in the scoreboard. I also
921      updated the pertinent calls. [Paul J. Reder]
922
923   *) Win32: Prevent listening sockets from being inherited by
924      the Apache child process, CGI scripts, rotatelog process
925      etc.  If the Apache child process segfaults, any processes 
926      that the child started are not reaped. Prior to this fix,
927      these processes inherited the listening sockets which sometimes
928      prevented the restarted Apache child process from accepting
929      connections (ie, the server would hang). 
930      [Bill Stoddard]
931
932   *) Provide vhost and request strings when ExtendedStatus is on.
933      [Greg Ames]
934
935   *) Fix some issues with the pod and prefork: check the pod *after*
936      processing a connection so that a server processing a time-
937      consuming request bails out as soon as practical; when the
938      parent process wakes up a server process via connect(), use an
939      APR timeout on the connect() so that we don't hang for a long
940      time if there aren't server processes around to do accept().
941      [Jeff Trawick, Greg Ames]
942
943   *) Performance improvement to mod_mime.c. find_ct() in mod_mime, 
944      spends a lot of time in apr_table_get calls.  Using the default 
945      httpd.conf, the tables for languages and charsets are somewhat
946      large, so the time spent scanning them on each request is
947      significant. Replacing the tables with hash tables provides
948      a nice speedup. [Brian Pane <bpane@pacbell.net>]
949
950   *) Add two functions to allow modules to access random parts of the
951      scoreboard.  This allows modules compiled for one MPM to access the
952      scoreboard, even if it the server was compiled for another MPM.
953      [Harrie Hazewinkel <harrie@covalent.net>]
954
955 Changes with Apache 2.0.20
956
957   *) Fix problem in content-length filter where the filter would
958      buffer all the output from a CGI before sending any bytes
959      down the filter stack to the network. This problem would cause
960      significant memory consumption if the CGIs generated
961      lots of bytes. [Bill Stoddard]
962   
963   *) Get non-blocking CGI pipe reads working with the bucket brigades.
964      [Bill Stoddard]
965
966   *) Fix seg fault on Windows when serving files cached with mod_file_cache.
967      [Bill Stoddard]
968
969   *) Fix a bug in the threaded MPM that would cause it to kill off all
970      workers immediately after starting if the number of workers started
971      was above a certain threshold.  [Ryan Bloom, Bill Stoddard]
972
973 Changes with Apache 2.0.19
974
975   *) Fix problem with threaded MPM.  The problem was that if each child
976      process was busy serving a single long-lived request and the server
977      was sent a graceful restart signal, the server would stop serving
978      requests.  This would happen because each child process would wait to
979      die until the last thread was done, and the parent wouldn't spawn any
980      new children until a process died.  Now, the parent looks at the fact
981      that the children are dying gracefully, and starts new children.
982      Those new children only start enough threads to compliment the number
983      of threads in the other child process that shares the same spot in
984      the scoreboard.  In this way, we make sure to never go over
985      MaxClients.  [Ryan Bloom]
986
987   *) modified mod_negotiation and mod_autoindex to speed up by almost a
988      factor of two on apr_dir_read()-enhanced platforms, such as Win32
989      and OS2, by calling ap_sub_request_lookup_dirent() with the results
990      already provided by apr_dir_read().  [William Rowe]
991
992   *) mod_file_cache is now more robust to filtering and serves requests
993      slightly more efficiently.  [Cliff Woolley]
994
995   *) Fix problem handling FLUSH bucket in the chunked encoding filter.
996      Module was calling ap_rwrite() followed by ap_rflush() but the 
997      served content was not being displayed in the browser. Inspection
998      of the output stream revealed that the first data chunk was
999      missing the trailing CRLF required by the RFC.  [Bill Stoddard]
1000
1001   *) apxs no longer generates ap_send_http_header() in the example handler
1002
1003   *) Fix an ab problem which could cause a divide-by-zero exception
1004      with certain invocations (e.g., ab -k -c 6 -n 100 localhost/).
1005      [Ian Holsman <ianh@cnet.com>]
1006
1007   *) Solve case-insensitive platforms' confusion about negotiated
1008      filenames, allowing files of differnt case to match in choosing
1009      the document to serve.  [William Rowe]
1010
1011   *) Fix brokenness when ThreadsPerChild is higher than the built-in
1012      limit.  We left ap_threads_per_child at the higher value which
1013      led to segfaults when doing certain scoreboard operations.
1014      [Jeff Trawick]
1015
1016   *) Fix seg faults and/or missing output from mod_include.  The
1017      default_handler was using the subrequest pool for files and
1018      MMAPs, even though the associated APR structures typically 
1019      live longer than the subrequest. [Greg Ames]
1020   
1021   *) Extend mod_setenvif to support specifying regular expressions
1022      on the SetEnvIf (and SetEnvIfNoCase) directive attribute field.
1023      Example:  SetEnvIf ^TS*  [a-z].* HAVE_TS 
1024      will cause HAVE_TS to be set if any of the request headers begins 
1025      with "TS" and has a value that begins with any character in the
1026      set [a-z]. [Bill Stoddard]
1027
1028   *) httpd children now re-bind themselves to a random CPU on
1029      multiprocessor systems on AIX via bindprocessor() in 2.0.
1030      [Victor J. Orlikowski]
1031
1032   *) Fix htdigest. It would go into a loop in getline when adding 
1033      a second user. [Bill Stoddard]
1034
1035   *) Win32 platforms now fully support mod_userdir options.  [Will Rowe]
1036
1037   *) Automatically generate httpd.exp for AIX.
1038      DSOs now work again on AIX in 2.0
1039      [Victor J. Orlikowski]
1040
1041   *) Add a new request hook, error_log.  This phase allows modules
1042      to act on the error log string _after_ it has been written
1043      to the error log.  The goal for this hook is to allow monitoring
1044      modules to send the error string to the monitoring agent.
1045      [Ryan Bloom]
1046
1047   *) Modify mod_echo to make it use filters for input and output.
1048      [Ryan Morgan <rmorgan@covalent.net>]
1049
1050   *) Extend mod_headers to support conditional driven Header 
1051      add, append and set. Use SetEnvIf to set an envar and conditionally
1052      add/append/set headers based on this envar thusly:
1053
1054      SetEnvIf TSMyHeader value HAVE_TSMyHeader
1055      Header add MyHeader "%t %D" env=HAVE_TSMyHeader
1056
1057      If the request contains header "TSMyHeader: value" then header
1058      MyHeader: "t=xxxxxxxxxx D=yyyy" will be sent on the response.
1059      [Bill Stoddard]
1060
1061   *) Extend mod_headers to support using format specifiers on Header
1062      add, append and set header values. Two format specifiers are supported:
1063
1064      %t - reports, in UTC microseconds since the epoch, when the
1065           request was received.
1066
1067      %D - reports the time, in microseconds, between when the request was 
1068           received and the response sent. 
1069
1070      Examples:
1071      Header add MyHeader "This request served in %D microseconds. %t"
1072
1073      results in a header being added to the response that looks like this:
1074      
1075      MyHeader: This request served in D=5438 microseconds. t=991424704447256
1076
1077      [Bill Stoddard]
1078
1079   *) Fix reset_filter().  We need to be careful how we remove filters.
1080      If we set r->output_filters to NULL, we also have to reset the
1081      connection's filters.  [John Sterling]
1082
1083   *) Optimise reset_filter() in http_protocol.c. [Greg Stein]
1084
1085   *) Add a check to ap_die() to make sure the filter stack is sane and
1086      contains the correct basic filters when an error occurs. This fixes
1087      a problem where headers are not being sent on error. [John Sterling]
1088
1089   *) New Header directive 'echo' option. "Header echo regex" will
1090      cause any headers received on the request that match regex to be
1091      echoed to (included in) the response headers.
1092      [Bill Stoddard]
1093
1094   *) include/ap_compat.h tested and set APR_COMPAT_H instead of AP_COMPAT_H.
1095      This prevented the inclusion of apr_compat.h.  PR #7773
1096      [Oleg Broytmann <phd@phd.pp.ru>]
1097
1098   *) Moved util_uri to the apr-util library.  This required a bunch of
1099      apr_name changes for the uri utility functions.  [Justin Erenkrantz]
1100
1101   *) Move the addition of default AP_HTTP_HTTP_HEADER filters to the
1102      insert_filter phase so that other filters are not bypassed by default.
1103      [Graham Leggett]
1104
1105   *) Reimplement mod_headers as an output filter. mod_headers can now
1106      add custom headers to inbound requests using the RequestHeader directive
1107      and to responses using the same old Header directive.  [Graham Leggett]
1108
1109 Changes with Apache 2.0.18
1110
1111   *) Fix command-line processing so that if a bad argument is specified
1112      Apache will exit.  [Jeff Trawick]
1113
1114   *) Change the make targets and rules to be consistent in all of the
1115      Apache-owned source trees.  [Roy Fielding]
1116      
1117   *) Fix processing of the TRACE method.  Previously we passed bogus
1118      parms to form_header_field() and it overlaid some vhost structures,
1119      resulting in a segfault in check_hostalias(). 
1120      [Greg Ames, Jeff Trawick]
1121
1122   *) Win32: Add support for reliable piped logs. If the logging process
1123      goes down, Apache will automatically restart it. This function has 
1124      been part of Apache on Unix/Linux/BSD since the early v1.3 releases.
1125      [Bill Stoddard]
1126
1127   *) Do not start piped log processes during the config file 
1128      preflight.  This change also circumvents a problem on 
1129      Windows where the rotatelog processes created during preflight
1130      was not getting cleaned up properly.
1131      [Bill Stoddard]
1132
1133   *) add "Request Phase Participation" info to mod_info
1134      [Doug MacEachern]
1135
1136   *) Make first phase changes to the scoreboard data structures in
1137      preparation for the rewriting of the scoreboard per my posted
1138      design notes. [Paul J. Reder]
1139
1140   *) Fix httpd's definition of LTFLAGS to be consistent with that of apr
1141      and apr-util, allow it to be overridden by the configure command-line
1142      (default="--silent") and introduce LT_LDFLAGS to replace what we were
1143      formerly abusing as LTFLAGS.  [Roy Fielding]
1144
1145   *) Clean up the reporting of incorrect closing container tags.
1146      [Barrie Slaymaker <barries@slaysys.com>]
1147
1148   *) Simplify the configure process by moving all libtool stuff to APR
1149      and moving hints.m4 inline.  [Roy Fielding]
1150
1151   *) Add the AP_DECLARE()/AP_CORE_DECLARE macros on the return types
1152      of functions used by mod_proxy for export in the DLL 
1153      [Ian Holsman <IanH@cnet.com>]
1154
1155   *) Prevent a hang when a cgi handled by mod_cgid tries to read a
1156      request body from its stdin but no reqest body is being written to 
1157      the cgi.  [Jeff Trawick]
1158
1159   *) mod_log_config: %c connection status incorrectly logged
1160      as "-" (non-keepalive) when MaxKeepAliveRequests is set to 0.
1161      [Bill Stoddard]
1162
1163   *) Get mod_cern_meta working under Windows
1164      [Bill Stoddard]
1165
1166   *) Create Files, and thus MMAPs, out of the request pool, not the
1167      connection pool.  This solves a small resource leak that had us
1168      not closing files until a connection was closed.  In order to do
1169      this, at the end of the core_output_filter, we loop through the
1170      brigade and convert any data we have into a single HEAP bucket
1171      that we know will survive clearing the request_rec.
1172      [Ryan Bloom, Justin Erenkrantz <jerenkrantz@ebuilt.com>,
1173       Cliff Woolley]
1174
1175   *) Completely revamp configure so that it preserves the standard make
1176      variables CPPFLAGS, CFLAGS, CXXFLAGS, LDFLAGS and LIBS by moving
1177      the configure additions to EXTRA_* variables.  Also, allow the user
1178      to specify NOTEST_* values for all of the above, which eliminates the
1179      need for THREAD_CPPFLAGS, THREAD_CFLAGS, and OPTIM.  Fix the setting
1180      of INCLUDES and EXTRA_INCLUDES.  Check flags as they are added to
1181      avoid pointless duplications.  Fix the order in which flags are given
1182      on the compile and link lines.  Remove obsolete macros APR_DOEXTRA,
1183      AC_ADD_LIBRARY, AC_CHECK_DEFINE, APACHE_PASSTHRU, and APACHE_ONCE.
1184      Added APR_SAVE_THE_ENVIRONMENT and APR_RESTORE_THE_ENVIRONMENT macros.
1185      Renamed AC_TYPE_RLIM_T macro to APACHE_TYPE_RLIM_T.  [Roy Fielding]
1186
1187   *) Get mod_tls to compile/work better on Windows.  PR #7612
1188      [Bernhard Schrenk <b.schrenk@improx.com>]
1189
1190   *) Fix shutdown/restart hangs in the threaded MPM.
1191      [Jeff Trawick, Greg Ames, Ryan Bloom]
1192   
1193   *) Removed the keptalive boolean from conn_rec because it is now only
1194      used by a single routine and can be replaced by a local variable.
1195      [Greg Stein, Ryan Bloom, Roy Fielding]
1196
1197   *) Patch prefork to put enough of the signal processing back in so that
1198      signals are all handled properly now. The previous patch fixed the
1199      deadlock race condition, but broke the user directed signal handling.
1200      This fixes it to work the way it did before my previous prefork patch
1201      (primarily, SIGTERM is now working).
1202  
1203   *) Change how input filters decide how much data is returned to the
1204      higher filter.  We used to use a field in the conn_rec, with this
1205      change, we use an argument to ap_get_brigade to determine how much
1206      data is retrieved. [Ryan Bloom]
1207
1208   *) Fix seg fault at start-up introduced by Ryan's change to enable
1209      modules to specify their own logging tags. mod_log_config
1210      registers an optional function, ap_register_log_handler().
1211      ap_register_log_handler() was being called by http_core before
1212      the directive hash table was created. This patch creates the
1213      directive hash table before ap_register_log_handler() is
1214      registered as an optional function.
1215      [jean-frederic clere <jfrederic.clere@fujitsu-siemens.com>]
1216
1217   *) Add ap_set_int_slot() function
1218      [John K. Sterling <sterling@covalent.net>]
1219
1220   *) Under certain circumstances, Apache did not supply the
1221      right response headers when requiring authentication.
1222      [Gertjan van Wingerde <Gertjan.van.Wingerde@cmg.nl>] PR#7114
1223      (This is a port of the change that went into Apache 1.3.19.)
1224
1225   *) Allow modules to specify their own logging tags.  This basically
1226      allows a module to tell mod_log_config that when %x is encountered
1227      a specific function should be called.  Currently, x can be any single
1228      character.  It may be more useful to make this a string at some point.
1229      [Ryan Bloom]
1230
1231 Changes with Apache 2.0.17
1232
1233   *) If a higher-level filter handles the the byterange aspects of a
1234      request, then the byterange filter should not try to redo the
1235      work.  The most common case of this happening, is a byterange
1236      request going through the proxy, and the origin server handles
1237      the byterange request.  The proxy should ignore it.
1238      [Graham Leggett <minfrin@sharp.fm>]
1239
1240   *) Changed the threaded mpm to have child_main join to each of the
1241      worker threads to make sure the kids are all gone before child_main
1242      exits after a signal (cleanup from perform_idle_server_maintenance).
1243      This is an extension of Ryans recent commit to make the child_main
1244      the signal thread.
1245
1246   *) Add more options to the ap_mpm_query function.  This also allows MPMs to
1247      report if their threads are dynamic or static.  Finally, this also
1248      implements a new API, ap_show_mpm, which returns the MPM that was
1249      required into the core. [Harrie Hazewinkel <harrie@covalent.net>]
1250
1251   *) Do not install the binaries from the support directory twice.
1252      [jun-ichiro hagino <itojun@iijlab.net>]
1253
1254   *) The ap_f* functions should flush data to the filter that is passed
1255      in, not the the filter after the one passed in.
1256      [Ryan Morgan <rmorgan@covalent.net>]
1257
1258   *) Make ab work again by changing its native types to apr types and formats.
1259      [Justin Erenkrantz <jerenkrantz@ebuilt.com>]
1260
1261   *) Move the byterange filter and all of the supporting functions back
1262      to the HTTP module.  The byterange filter turned out to be very
1263      HTTP specific, and it belongs in the HTTP module.  [Greg Stein]
1264
1265   *) Make clean, distclean, and extraclean consistently according to the
1266      Gnu makefile guidelines.  [Justin Erenkrantz <jerenkrantz@ebuilt.com>]
1267
1268   *) Fix errors in the renaming of the apr_threadattr_detach_xxx functions.
1269      This may have been causing problems stopping processes in the threaded
1270      mpm's. [Greg Ames]
1271
1272   *) Fix content-length in mod_negotiation to a long int representation.
1273      [William Rowe]
1274
1275   *) Remove BindAddress from the default config file.
1276      [giles@nemeton.com.au]
1277
1278   *) Allow module authors to add a module to their Apache build using
1279      --with-module, without re-running buildconf.  The syntax is:
1280         --with-module=module_type:/path/to/module.c
1281      The configure script will copy the module.c file to 
1282      modules/module_type, and it will be added to the relevant Makefiles.
1283      currently, this only works for static modules.  [Ryan Bloom]
1284
1285   *) Changes required to make prefork clean up idle children properly.
1286      There was a window during which a starting worker deadlocks when
1287      an idle cleanup arrives before it completes init. Apache then keeps
1288      trying to cleanup the same deadlocked worker forever (until higher
1289      pids come along, but it still will never reduce below the deadlocked
1290      pid). Thus the number of children would not reduce to the correct
1291      idle level. [Paul J. Reder]
1292
1293 Changes with Apache 2.0.16
1294
1295   *) Change the default installation directory to /usr/local/apache2,
1296      as now defined by the "Apache" layout in config.layout. [Marc Slemko]
1297
1298   *) OS/2: Added support for building loadable modules as OS/2 DLLs. 
1299      [Brian Havard]
1300
1301   *) Get MaxRequestsPerChild working with the Windows MPM.
1302      [Bill Stoddard]
1303
1304   *) Make generic hooks to work, with mod_generic_hook_import/export
1305      experimental modules.  [Ben Laurie, Will Rowe]
1306
1307   *) Fix segfaults for configuration file syntax errors such as
1308      "<Directory>" followed by "</Directory" and
1309      "<Directory>" followed by "</Directoryz>".  [Jeff Trawick]
1310
1311   *) Cleanup the --enable-layout option of configure.  This makes
1312      us use a consistent location for the config.layout file, and it
1313      makes configure more portable.
1314      [jun-ichiro hagino <itojun@iijlab.net>]
1315
1316   *) Changes to 'ab'; fixed int overrun's, added statistics, output in
1317      csv/gnuplot format, rudimentary ssl support and various other tweaks
1318      to make results more true to what is measured. The upshot of this it
1319      turns out that 'ab' has often underreported the true performance of
1320      apache. Often by a order of magnitude :-) See talk/paper of Sander 
1321      Temme <sctemme@covalent.net> at April ApacheCon 2001 for details.
1322      [Dirk-Willem van Gulik]
1323
1324   *) Clean up mod_cgid's temporary request pool.  Besides fixing a
1325      storage leak this ensures that some unnecessary pipes are closed.
1326      [Jeff Trawick]
1327
1328   *) Performance: Add quick_handler hook. This hook is called at the
1329      very beginning of the request processing before location_walk,
1330      translate_name, etc.  This hook is useful for URI keyed content
1331      caches like Mike Abbott's Quick Shortcut Cache.
1332      [Bill Stoddard]
1333
1334   *) top_module global variable renamed to ap_top_module [Perl]
1335
1336   *) Move ap_set_last_modified to the core.  This is a potentially 
1337      controversial change, because this is kind of HTTP specific.  However
1338      many protocols should be able to take advantage of this kind of
1339      information.  I expect that headers will need one more layer of
1340      indirection for multi-protocol work, but this is a small step in
1341      the right direction.  [Ryan Bloom]
1342
1343   *) Enable mod_status by default.  This matches what Apache 1.3 does.
1344      [Ed Korthof]
1345
1346   *) Add a ScriptSock directive to the default config file.  This is
1347      only enabled when mod_cgid is used.  
1348      [Taketo Kabe <kabe@sra-tohoku.co.jp>]
1349
1350 Changes with Apache 2.0.15
1351
1352   *) Untangled the buildconf script and eliminated the need for build's
1353      aclocal.m4, generated_lists, build.mk, build2.mk, and a host of other
1354      libtool muck that is now under srclib/apr/build.  [Roy Fielding]
1355
1356   *) Win32: Don't accept more connections than we have worker threads
1357      to handle.
1358      [Bill Stoddard]
1359
1360   *) Fix bug in the Unix threaded.c MPM that allowed child processes
1361      to fork() new child processes. 
1362      [Bill Stoddard]
1363
1364   *) Fix a major security problem with double-reverse lookup checking.  
1365      Previously, a client connecting over IPv4 would not be matched 
1366      properly when the server had an IPv6 listening socket.  PR #7407
1367      [Taketo Kabe <kiabe@sra-tohoku.co.jp>]
1368
1369   *) Change the way the beos MPM handles polling to allow it to stop and
1370      restart.  Problem was the sockets being polled were being reset by
1371      the select call, so once it had accepted a connection it was no
1372      longer listening on the UDP socket we use for shutdown instructions.
1373      APR needs to be altered, patch on it's way. [David Reid]
1374
1375   *) Empty out the brigade shared by ap_getline()/ap_get_client_block()
1376      on error exit from ap_getline().  Some other code got upset because
1377      the wrong data was in the brigade.  [Greg Ames, Jeff Trawick]
1378
1379   *) Handle ap_discard_request_body() being called more than once.
1380      [Greg Ames, Jeff Trawick]
1381
1382   *) Get rid of an inadvertent close of file descriptor 2 in
1383      mod_mime_magic.  [Greg Ames, Jeff Trawick]
1384
1385   *) Add a hook, create_request.  This hook allows modules to modify
1386      a request while it is being created.  This hook is called for all
1387      request_rec's, main request, sub request, and internal redirect.
1388      When this hook is called, the the r->main, r->prev, r->next
1389      pointers have been set, so modules can determine what kind of
1390      request this is.  [Ryan Bloom]
1391
1392   *) Cleanup the build process a bit more.  The Apache configure
1393      script no longer creates its own helper scripts, it just
1394      uses APR's.  
1395      [jean-frederic clere <jfrederic.clere@fujitsu-siemens.com>]
1396
1397   *) Stop the forced downgrade of the connection to HTTP/1.0 for
1398      proxy requests.  [Graham Leggett]
1399
1400   *) Avoid using sscanf to determine the HTTP protocol number in
1401      the common case because sscanf is a performance hog. From
1402      Mike Abbot's Accelerating Apache patch number 6.
1403      [Mike Abbot <mja@trudge.engr.sgi.com>, Bill Stoddard]
1404
1405   *) Fix a security exposure in mod_access.  Previously when IPv6 
1406      listening sockets were used, allow/deny-from-IPv4-address rules 
1407      were not evaluated properly (PR #7407).  Also, add the ability to 
1408      specify IPv6 address strings with optional prefix length on Allow 
1409      and Deny.  [Jeff Trawick]
1410
1411   *) Enhance rotatelogs so that a UTC offset can be specified, and
1412      the logfile name can be formatted using strftime(3).  (Brought
1413      forward from 1.3.)  [Ken Coar]
1414
1415   *) Reimplement the Windows MPM (mpm_winnt.c) to eliminate calling 
1416      DuplicateHandle on an IOCompletionPort (a practice which
1417      MS "discourages"). The new model does not rely on associating
1418      the completion port with the listening sockets, thus the
1419      completion port can be completely managed within the child 
1420      process.  A dedicated thread accepts connections off the network,
1421      then calls PostQueuedCompletionStatus() to wake up worker
1422      threads blocked on the completion port.
1423      [Bill Stoddard]
1424
1425   *) Bring forward the --suexec-umask option which allows the
1426      builder to preset the umask for suexec processes.  [Ken Coar]
1427
1428   *) Add a -V flag to suexec, which causes it to display the
1429      compile-time settings with which it was built.  (Only
1430      usable by root or the AP_HTTPD_USER username.)  [Ken Coar]
1431
1432   *) Mod_include should always unset the content-length if the file is
1433      going to be passed through send_parsed_content.  There is no to
1434      determine if the content will change before actually scanning the
1435      entire content.  It is far safer to just remove the C-L as long
1436      as we are scanning it.  [Ryan Bloom]
1437
1438   *) Make sure Apache sends WWW-Authenticate during a reverse proxy
1439      request and not Proxy-Authenticate.
1440      [Graham Leggett <minfrin@sharp.fm>]
1441
1442 Changes with Apache 2.0.14
1443
1444   *) Fix content-length computation.  We ONLY compute a content-length if
1445      We are not in a 1.1 request and we cannot chunk, and this is a keepalive
1446      or we already have all the data.  [Ryan Bloom]
1447
1448   *) Report unbounded containers in the config file.  Previously, a typo
1449      in the </container> directive could result in the rest of the config
1450      file being silently ignored, with undesired defaults used.
1451      [Jeff Trawick]
1452
1453   *) Make the old_write filter use the ap_f* functions for the buffering.
1454      [Ryan Bloom]
1455
1456   *) Move more code from the http module into the core server.  This
1457      is core code, basically the default handler, the default input
1458      and output filters, and all of the core configuration directives.
1459      All of this code is required in order for the server to work, with or
1460      without HTTP.  The server is closer to working without the HTTP
1461      module, although there is still more to do.  [Ryan Bloom]
1462
1463   *) Fix a number of SGI compile warnings throughout the server.  Fix some
1464      bad parameters to apr_bucket_read().  Fix a bad statement in 
1465      ap_method_in_list().  For the mod_rewrite cache use apr_time_t 
1466      consistently; we were mixing apr_time_t and time_t in invalid ways 
1467      before.  In load_file(), call apr_dso_error() instead of 
1468      apr_strerror() so that we get a more specific string on some platforms.
1469      PR #6980  [Jeff Trawick]
1470
1471   *) Allow modules to query the MPM about it's execution profile.  This
1472      query API can and should be extended in the future, but for now,
1473      max_daemons, and threading or forking is a very good start.
1474      [Jon Travis <jtravis@covalent.net>]
1475
1476   *) Modify mod_include to send blocks of data no larger than 9k.
1477      Without this, mod_include will wait until the whole file is parsed,
1478      or the first tag is found to send any data to the client.
1479      [Paul J. Reder <rederpj@raleigh.ibm.com>]
1480
1481   *) Fix mod_info, so that <Directory> and <Location> directives are
1482      not displayed twice when displaying the current configuration.
1483      [Ryan Morgan <rmorgan@covalent.net>]
1484
1485   *) Add config directives to override DEFAULT_ERROR_MSG and
1486      DEFAULT_TIME_FORMAT.  This was sent in as PR 6193.
1487      [Dan Rench <drench@xnet.com>]
1488
1489   *) Get mod_info building and loading on Win32.  [William Rowe]
1490
1491   *) Begin to move protocol independant functions out of mod_http.  The goal
1492      is to have only functions that are HTTP specific in the http directory.
1493      [Ryan Bloom]
1494
1495 Changes with Apache 2.0.13
1496
1497   *) Don't assume that there will always be multiple calls to the byterange 
1498      filter.  It is possible that we will need to do byteranges with only
1499      one call to the filter.  [Ryan Morgan <rmorgan@covalent.net>]
1500
1501   *) Move the error_bucket definition from the http module to the
1502      core server.  Every protocol will need this ability, not just
1503      HTTP.  [Ryan Bloom]
1504
1505 Changes with Apache 2.0.12
1506
1507   *) Modify mod_file_cache to save pre-formatted strings for 
1508      content-length and last-modified headers for performance. 
1509      [Mike Abbot <mja@trudge.engr.sgi.com>]
1510
1511   *) Namespace protect IOBUFSIZ since it is exposed in the API.
1512      [Jon Travis <jtravis@covalent.net>]
1513
1514   *) Use "Basic" authentication instead of "basic" in ab, as the spec
1515      says we should.  [Andre Breiler <andre.breiler@rd.bbc.co.uk>]
1516
1517   *) Fix a seg fault in mod_userdir.c.  We used to use the pw structure
1518      without ever filling it out.  This fixes PR 7271.
1519      [Taketo Kabe <kabe@sra-tohoku.co.jp> and 
1520       Cliff Woolley <cliffwoolley@yahoo.com>]
1521
1522   *) Add a couple of GCC attribute tags to printf style functions.
1523      [Jon Travis <jtravis@covalent.net>]
1524
1525   *) Add the correct language tag for interoperation with the Taiwanese
1526      versions of MSIE and Netscape. [Clive Lin <clive@CirX.ORG>] PR#7142
1527
1528   *) Migrate the perchild MPM to use the new apr signal child, and 
1529      APR thread functions.  [Ryan Bloom]
1530
1531   *) Close one copy of the CGI's stdout before creating the new process.
1532      The CGI will still have stdout, because we have already dup'ed it.
1533      This keeps Apache from waiting forever to send the results of a CGI
1534      process that has forked a long-lived child process.
1535      [Taketo Kabe <kabe@sra-tohoku.co.jp>]
1536
1537   *) Remove the rest of the pthreads functions from the threaded MPM.
1538      This requires the APR support for a signal thread that was just
1539      added.  [Ryan Bloom]
1540
1541   *) Make mod_dir use a fixup for sending a redirect to the browser.
1542      Before this, we were using a handler, which doesn't make much
1543      sense, because the handler wasn't generating any data, it would
1544      either return a redirect error code, or DECLINED.  This fits the
1545      current hooks better.  [Ryan Morgan <rmorgan@covalent.net>]
1546
1547   *) Make the threaded MPM use APR threads instead of pthreads.
1548      [Ryan Bloom]
1549
1550   *) Get mod_tls to the point where it actually appears to work in all cases.
1551      [Ben Laurie]
1552
1553   *) implement --enable-modules and --enable-mods-shared for "all" and
1554      "most".  [Greg Stein]
1555
1556   *) Move the threaded MPM to use APR locks instead of pthread locks.
1557      [Ryan Bloom]
1558
1559   *) Rename mpmt_pthread to threaded.  This is more in line with the
1560      fact that mpmt_pthread shouldn't be using pthreads directly, and
1561      it is a smaller name that doesn't tie into anything.
1562      [Ryan Bloom]
1563
1564   *) Rename the module structures so that the exported symbol matches
1565      the file name, and it is easier to automate the installation
1566      process (generating LoadModule directives from the module filenames).
1567      [Martin Kraemer]
1568
1569   *) Remove the coalesce filter.  With the ap_f* functions, this filter
1570      is no longer needed. [Ryan Bloom]
1571
1572 Changes with Apache 2.0.11
1573
1574   *) Remove the dexter MPM.  Perchild is the same basic idea, but it has the
1575      added feature of allowing a uid/gid per child process.  If no
1576      uid/gid is specified, then Perchild behaves exactly like dexter.
1577      [Ryan Bloom]
1578
1579   *) Get perchild building again. [Ryan Bloom]
1580
1581   *) Don't disable threads just because we are using the prefork MPM.
1582      If somebody wants to compile without threads, they must now add
1583      --disable-threads to the configure command line.  [Ryan Bloom]
1584
1585   *) Begin to move the calls to update_child_status into common code, so
1586      that each individual MPM does not need to update the scoreboard itself.
1587      [Ryan Bloom]
1588
1589   *) Allow mod_tls to compile under Unix boxes where openssl has been
1590      installed to the system include files.
1591      [Gomez Henri <new-httpd@slib.fr>]
1592
1593   *) Cleanup the mod_tls configure process.  This should remove any need
1594      to hand-edit any files.  We require OpenSSL 0.9.6 or later, but 
1595      configure doesn't check that yet.  [Ryan Bloom]
1596
1597   *) Add a very early prototype of SSL support (in mod_tls.c). It is
1598      vital that you read modules/tls/README before attempting to build
1599      it. [Ben Laurie]
1600
1601   *) Fix a potential seg fault on all platforms.  David Reid fixed this
1602      on BEOS, but the problem could happen anywhere, so we don't want
1603      to #ifdef it. [Cliff Woolley <cliffwoolley@yahoo.com>]
1604  
1605   *) Add new LogFormat directive, %D, to log time it takes to serve a
1606      request in microseconds. [Bill Stoddard]
1607
1608   *) Change AddInputFilter and AddOutputFilter to SetInputFilter and
1609      SetOutputFilter.  This corresponds nicely with the other Set 
1610      directives, which operate on containers while the Add* directives
1611      tend to work directly on extensions.  [Ryan Bloom]
1612
1613   *) Cleanup the header handling a bit.  This uses the apr_brigade_*
1614      functions for the buffering so that we don't need to compute
1615      the length of the headers before we actually create the header
1616      buffer.  [Ryan Bloom]
1617
1618   *) Allow filters to buffer data using the ap_f* functions.  These have
1619      become macros that resolve directly to apr_brigade_*.  
1620      [Ryan Bloom]
1621
1622   *) Get the Unix MPM's to do a graceful restart again.  If we are going
1623      to register a cleanup with ap_cleanup_scoreboard, then we have to
1624      kill the cleanup with the same function,  and that function can't be
1625      static.  [Ryan Bloom]
1626
1627   *) Install all required header files.  Without these, it was not
1628      possible to compile some modules outside of the server.
1629      [Ryan Bloom]
1630
1631   *) Fix the AliasMatch directive in Apache 2.0.  When we brought a patch
1632      forward from 1.3 to 2.0, we missed a single line, which broke regex
1633      aliases.  [Ryan Bloom]
1634
1635   *) We have a poor abstraction in the protocol.  This is a temporary
1636      hack to fix the bug, but it will need to be fixed for real.  If
1637      we find an error while sending out a custom error response, we back
1638      up to the first non-OK request and send the data.  Then, when we send
1639      the EOS from finalize_request_protocol, we go to the last request,
1640      to ensure that we aren't sending an EOS to a request that has already
1641      received one.  Because the data is sent on a different request than
1642      the EOS, the error text never gets sent down the filter stack.  This
1643      fixes the problem by finding the last request, and sending the data
1644      with that request.  [Ryan Bloom]
1645
1646   *) Make the server status page show the correct restart time, and
1647      thus the proper uptime. [Ryan Bloom]
1648
1649   *) Move the CGI creation logic from mod_include to mod_cgi(d).  This
1650      should reduce the amount of duplicate code that is required to
1651      create CGI processes.
1652      [Paul J. Reder <rederpj@raleigh.ibm.com>]
1653
1654   *) ap_new_connection() closes the socket and returns NULL if a socket
1655      call fails.  Usually this is due to a connection which has been 
1656      reset.  [Jeff Trawick]
1657
1658   *) Move the Apache version information out of httpd.h and into release.h.
1659      This is in preparation for the first tag with the new tag and release
1660      system.  [Ryan Bloom]
1661
1662   *) Begin restructuring scoreboard code to enable adding back in
1663      the ability to use IPC other than shared memory.
1664      Get mod_status working on Windows again. [Bill Stoddard]
1665
1666   *) Make mod_status work with 2.0.  This will work for prefork,
1667      mpmt_pthread, and dexter.  [Ryan Bloom]
1668
1669   *) Correct a typo in httpd.conf.
1670      [Kunihiro Tanaka <tanaka@apache.or.jp>] PR#7154 
1671
1672   *) Really fix mod_rewrite map lookups this time. [Tony Finch]
1673
1674   *) Get the correct IP address if ServerName isn't set and we can't
1675      find a fully-qualified domain name at startup.
1676      PR#7170 [Danek Duvall <dduvall@eng.sun.com>]
1677
1678   *) Make mod_cgid work with SuExec.  [Ryan Bloom]
1679
1680   *) Adopt apr user/group name features for mod_rewrite.  Eliminates some
1681      'extra' stat's for user/group since they should never occur, and now
1682      resolves the SCRIPT_USER and SCRIPT_GROUP, including on WinNT NTFS
1683      volumes.  [William Rowe]
1684
1685   *) Adopt apr features to simplify mod_includes.  This changes the
1686      behavior of the USER_NAME variable, unknown uid's are now reported
1687      as USER_NAME="<unknown>" rather than the old user#000 result.
1688      WinNT now resolves USER_NAME on NTFS volumes.  [William Rowe]
1689
1690   *) Adopt apr features for simplifing mod_userdir, and accept the new
1691      Win32/OS2 exceptions without hiccuping.  [William Rowe]
1692
1693   *) Replace configure --with-optim option by using and saving the
1694      environment variable OPTIM instead.  This is needed because configure
1695      options do not support multiple flags separated by spaces.
1696      [Roy Fielding]
1697
1698   *) Fix some byterange handling.  If we get a byte range that looks like
1699      "-999999" where that is past the end of the file, we should return 
1700      a PARTIAL CONTENT status code, and return the whole file as one big
1701      byterange.  This matches the 1.3 handling now.  [Ryan Bloom]
1702
1703   *) Make the error bucket a real meta-data bucket.  This means that the
1704      bucket length is 0, and a read returns NULL data.  If one of these
1705      buckets is passed down after the headers are sent, this data will
1706      just be ignored.  [Greg Stein]
1707
1708   *) The prefork MPM wasn't killing child processes correctly if a restart
1709      signal was received while the process was serving a request.  The child
1710      process would become the equivalent of a second parent process.  If
1711      we break out of the accept loop, then we need to do die after cleaning
1712      up after ourselves.  [Ryan Bloom]
1713
1714   *) Change the Prefork MPM to use SIGWINCH instead of SIGUSR1 for graceful
1715      restarts.  [Ryan Bloom]
1716
1717   *) Modify the apr_stat/lstat/getfileinfo calls within apache to use
1718      the most optimal APR_FINFO_wanted bits.  This spares Win32 from
1719      performing very expensive owner, group and permission lookups
1720      and allows the server to function until these apr_finfo_t fields
1721      are implemented under Win32.  [William Rowe]
1722
1723   *) Support for typedsafe optional functions - that is functions exported by
1724      optional modules, which, therefore, may or may not be present, depending
1725      on configuration. See the experimental modules mod_optional_fn_{ex,im}port
1726      for sample code. [Ben Laurie]
1727
1728   *) filters can now report an HTTP error to the server.  This is done
1729      by sending a brigade where the first bucket is an error_bucket.
1730      This bucket is a simple bucket that stores an HTTP error and
1731      a string.  Currently the string is not used, but it may be needed
1732      to output an error log.  The http_header_filter will find this
1733      bucket, and output the error text, and then return 
1734      AP_FILTER_ERROR, which informs the server that the error web page
1735      has already been sent.  [Ryan Bloom]
1736
1737   *) If we get an error, then we should remove all filters except for
1738      those critical to serving a web page.  This fixes a bug, where
1739      error pages were going through the byterange filter, even though
1740      that made no sense.  [Ryan Bloom]
1741
1742   *) Relax the syntax checking of Host: headers in order to support
1743      iDNS. PR#6635 [Tony Finch]
1744
1745   *) Cleanup the byterange filter to use the apr_brigade_partition
1746      and apr_bucket_copy functions.  This removes a lot of very messy
1747      code, and hopefully makes this filter more stable.
1748      [Ryan Bloom]
1749
1750   *) Remove AddModule and ClearModuleList directives.  Both of these
1751      directives were used to ensure that modules could be enabled
1752      in the correct order.  That requirement is now gone, because
1753      we use hooks to ensure that modules are in the correct order.
1754      [Ryan Bloom]
1755
1756   *) When SuExec is specified, we need to add it to the list of
1757      targets to be built.  If we don't, then any changes to the
1758      configuration won't affect SuExec, unless 'make suexec' is
1759      specifically run.  [Ryan Bloom]
1760
1761   *) Cleaned out open_file from mod_file_cache, as apr now accepts
1762      the APR_XTHREAD argument to open a file for consumption by
1763      parallel threads on win32.  [William Rowe]
1764
1765   *) Correct a bug in determining when we follow symlinks.  The code
1766      expected a stat -1 result, not an apr_status_t positive error.
1767      Also check if the APR_FINFO_USER fields are valid before we
1768      follow the link.  [William Rowe]
1769
1770   *) Move initgroupgs, ap_uname2id and ap_gname2id from util.c to
1771      mpm_common.c.  These functions are only valid on some platforms,
1772      so they should not be in the main-line code. [Ryan Bloom]
1773
1774   *) Remove ap_chdir_file().  This function is not thread-safe,
1775      and nobody is currently using it.  [Ryan Bloom]
1776
1777   *) Do not try to run make depend if there are no .c files in the
1778      current directory, doing so makes `make depend` fail.
1779      [Ryan Bloom]
1780
1781    *) Update highperformance.conf to work with either prefork or
1782       pthreads mpms.  [Greg Ames] 
1783
1784   *) Stop checking to see if this is a pipelined request if we know
1785      for a fact that it isn't.  Basically, if r->connection->keepalive == 0.
1786      This keeps us from making an extra read call when serving a 1.0
1787      request.  [Ryan Bloom and Greg Stein]
1788
1789   *) Fix the handling of variable expansion look-ahead in mod_rewrite,
1790      i.e. syntax like %{LA-U:REMOTE_USER}, and also fix the parsing of
1791      more complicated nested RewriteMap lookups. PR#7087 [Tony Finch]
1792
1793   *) Fix the RFC number mentioned when complaining about a missing
1794      Host: header. PR#7079 [Alexey Toptygin <alexeyt@wam.umd.edu>]
1795
1796   *) Fix an endless loop in ab which occurred when ab was posting
1797      and the server dropped the connection unexpectedly.
1798      [Jeff Trawick]
1799
1800   *) Fix a segfault while handling request bodies in ap_http_filter().  
1801      This problem has been seen with mod_dav usage as well as with 
1802      requests where the body was just being discarded.  [Jeff Trawick]
1803
1804   *) Some adjustment on the handling and automatic setting (via
1805      hints.m4) of various compilation flags (eg: CFLAGS). Also,
1806      add the capability to specify flags (NOTEST_CFLAGS and
1807      NOTEST_LDFLAGS) which are used to compile Apache, but
1808      not used during the configuration process. Useful for
1809      flags like "-Werror". [Jim Jagielski]
1810
1811   *) Stop using environment variables to force debug mode or
1812      no detach.  We now use the -D command line argument to 
1813      specify the correct mode.  -DONE_PROCESS and -DNO_DETACH.
1814      [Greg Stein, Ryan Bloom]
1815
1816   *) Change handlers to use hooks. [Ben Laurie]
1817
1818   *) Stop returning copies of filenames from both apr_file_t and
1819      apr_dir_t.  We pstrdup the filenames that we store in the
1820      actual structures, so we don't need to pstrdup the strings again.
1821      [Ryan Bloom]
1822
1823   *) mod_cgi: Fix some problems where the wrong error value was being
1824      traced.  [Jeff Trawick]
1825
1826   *) EBCDIC: Fix some missing ASCII conversion on some protocol data.
1827      [Jeff Trawick]
1828
1829   *) Add generic hooks. [Ben Laurie]
1830
1831   *) Use a real pool to dup the error log descriptor.  [Ryan Bloom]
1832
1833   *) Fix a segfault caused by mod_ext_filter when the external filter 
1834      program does not exist. [Jeff Trawick]
1835
1836   *) Fix an output truncation error when on an HTTP >= 1.0 request an
1837      object of size between DEFAULT_BUCKET_SIZE and AP_MIN_BYTES_TO_WRITE 
1838      was served through mod_charset_lite (or anything else that would
1839      create a transient bucket in this size range).  ap_bucket_make_heap()
1840      silently failed (fixed), transient_setaside() discovered it, but
1841      ap_save_brigade() ignored it (fixed). [Jeff Trawick]
1842      
1843   *) Ignore \r\n or \n when using PEEK mode for input filters.  The problem
1844      is that some browsers send extra lines at the end of POST requests, and
1845      we don't want to delay sending data back to the user just because the
1846      browser isn't well behaved. [Ryan Bloom]
1847
1848   *) Get SuEXEC working again.  We can't send absolute paths to suExec
1849      because it refuses to execute those programs.  SuEXEC also wasn't
1850      always recognizing configuration changes made using the autoconf
1851      setup.  [Ryan Bloom]
1852
1853   *) Allow the buildconf process to find the config.m4 files in the correct
1854      order.  Basically, we can now name config.m4 files as config\d\d.m4,
1855      and we will sort them correctly when inserting them into the build
1856      process.  [Ryan Bloom]
1857
1858   *) Get mod_cgid to use apr calls for creating the actual CGI process.
1859      This also allows mod_cgid to use ap_os_create_priviledged_process,
1860      thus allowing for SuExec execution from mod_cgid.  Currently, we do
1861      not support everything that standard SuExec supports, but at least
1862      it works minimally now. [Ryan Bloom]
1863
1864   *) Allow SuExec to be configured from the ./configure command line.
1865      [Ryan Bloom]
1866
1867   *) Update some of the docs in README and INSTALL to reflect some of
1868      the changes in Apache 2.0 [Cliff Woolley <cliffwoolley@yahoo.com>]
1869
1870   *) If we get EAGAIN returned from the call to apr_sendfile, then we
1871      need to call sendfile again.  This gets us serving large files
1872      such as apache_2.0a9.tar.gz on FreeBSD again. [Ryan Bloom]
1873
1874   *) Get the support programs building cleanly again.
1875      [Cliff Woolley <cliffwoolley@yahoo.com>]
1876
1877   *) The Apache/Win32 Apache.exe and dll's now live in bin.  The 
1878      current directory logic now backs up over bin/ to determine the
1879      server root from the Apache.exe path.
1880
1881   *) Apache/Win32 now follows the standard conventions of mod_foo.so
1882      loadable modules, dynamic libs are all named libfoo.dll, and the
1883      makefile.win populates the include, lib and libexec directories.
1884
1885   *) Apache is now IPv6-capable.  On systems where APR supports IPv6,
1886      Apache gets IPv6 listening sockets by default.  Additionally, the
1887      Listen, NameVirtualHost, and <VirtualHost> directives support IPv6
1888      numeric address strings (e.g., "Listen [fe80::1]:8080").
1889      [Jeff Trawick]
1890
1891   *) Modify the install directory layout.  Modules are now installed in
1892      modules/.  Shared libraries should be installed in libraries/, but
1893      we don't have any of those on Unix yet.  All install directories
1894      are modifyable at configure time. [Ryan Bloom]
1895
1896   *) Install all header files in the same directory on Unix. [Ryan Bloom]
1897
1898   *) Get the functions in server/linked into the server, regardless of
1899      which modules linked into the server.  This uses the same hack 
1900      for Apache that we use for APR and apr-util to ensure all of the
1901      necessary functions are linked.  As a part of thise, the CHARSET_EBCDIC
1902      was renamed to AP_CHARSET_EBCDIC for namespace protection, and to make
1903      the scripts a bit easier.
1904      [Ryan Bloom]
1905
1906   *) Rework the RFC1413 handling to make it thread-safe, use a timeout
1907      on the query, and remove IPv4 dependencies.  [Jeff Trawick]
1908
1909   *) Get all of the auth modules to the point that they will install and
1910      be loadable into the server.  Our new build/install mechanism expects
1911      that all modules will have a common name format.  The auth modules 
1912      didn't use that format, so we didn't install them properly.
1913      [Ryan Bloom]
1914
1915   *) API routines ap_pgethostbyname() and ap_pduphostent() are no longer
1916      available.  Use apr_getaddrinfo() instead.  [Jeff Trawick]
1917
1918   *) Get "NameVirtualHost *" working in 2.0.  [Ryan Bloom]
1919
1920   *) Return HTTP_RANGE_NOT_SATISFIABLE if the every range requested starts
1921      after the end of the response. [Ryan Bloom]
1922
1923   *) Get byterange requests working with responses that do not have a
1924      content-length.  Because of the way byterange requests work, we have to
1925      have all of the data before we can actually do the byterange, so we
1926      can compute the content-length in the byterange filter.
1927      [Ryan Bloom]
1928
1929   *) Get exe CGI's working again on Windows.
1930      [Allan Edwards]
1931
1932   *) Get mod_cgid and mod_rewrite to work as DSOs by changing the way
1933      they keep track of whether or not their  post config hook has been
1934      called before.  Instead of a static variable (which is replaced when 
1935      the DSO is loaded a second time), use userdata in the process pool.
1936      [Jeff Trawick]
1937
1938 Changes with Apache 2.0a9
1939
1940   *) Win32 now requires perl to complete the final install step for users
1941      to build + install on Win32.  Makefile.win now rewrites @@ServerRoot@
1942      and installs the conf, htdocs and htdocs/manual directories.
1943      [William Rowe]
1944
1945   *) Make mod_include use a hash table to associate directive tags with
1946      functions.  This allows modules to implement their own SSI tags easily.
1947      The idea is simple enough, a module can insert it's own tag and function
1948      combination into a hash table provided by mod_include.  While mod_include
1949      parses an SSI file, when it encounters a tag in the file, it does a
1950      hash lookup to find the function that implements that tag, and passes
1951      all of the relevant data to the function.  That function is then
1952      responsible for processing the tag and handing the remaining data back
1953      to mod_include for further processing.
1954      [Paul J. Reder <rederpj@raleigh.ibm.com>]
1955
1956   *) Get rid of ap_new_apr_connection().  ap_new_connection() now has 
1957      fewer parameters: the local and remote socket addresses were removed
1958      from the parameter list because all required information is available
1959      via the APR socket.  [Jeff Trawick]
1960
1961   *) Distribution directory structure reorganized to reflect a
1962      normal source distribution with external install targets.
1963      [Roy Fielding]
1964
1965   *) The MPMs that need multiple segments of shared memory now create
1966      two apr_shmem_t variables, one for each shared memory allocation.
1967      the problem is that we can't determine how much memory will be required
1968      for shared memory allocations once we try to allocate more than one
1969      variable.  The MM code automatically aligns the shared memory allocations,
1970      so we end up needing to pad the amount of shared memory we want based
1971      on how many variables will be allocated out of the shared memory segment.
1972      It is just easier to create a second apr_shmem_t variable, and two
1973      shmem memory blocks.
1974      [Ryan Bloom]
1975
1976   *) Cleanup the export list a bit.  This creates a single unified list of
1977      functions exported by APR.  The export list is generated at configure
1978      time, and that list is then used to generate the exports.c file.
1979      Because of the way the export list is generated, we only export those
1980      functions that are valid on the platform we are building on.
1981      [Ryan Bloom]
1982
1983   *) Enable logging the cookie with mod_log_config
1984      [Sander van Zoest <sander@covalent.net>]
1985
1986   *) Fix a segfault in mod_info when it reaches the end of the configuration.
1987      [Jeff Trawick]
1988
1989   *) Added lib/aputil/ as a placeholder for utility functions which are not
1990      specific to the Apache HTTP Server (but do not make sense with APR).
1991      The first utility is "apu_dbm": a set of functions to work with DBM
1992      files. This first version can be compiled for SDBM or GDBM databases.
1993      [Greg Stein]
1994
1995   *) Complete re-write of mod_include.  This makes mod_include a filter that
1996      uses buckets directly.  This has now served the FAQ correctly.
1997      [Paul Reder <rederpj@raleigh.ibm.com>]
1998
1999   *) Allow modules to specify the first filter in a sub_request when
2000      making the sub_request.  This keeps modules from having to change the
2001      output_filter immediately after creating the sub-request, and therefore
2002      skip the sub_req_output_filter.  [Ryan Bloom]
2003
2004   *) Update ab to accept URLs with IPv6 literal address strings (in the
2005      format described in RFC 2732), and to build Host header fields in
2006      the same format.  This allows IPv6 literal address strings to be
2007      used with ab.  This support has been tested against Apache 1.3 with 
2008      the KAME patch, but Apache 2.0 does not yet work with this format
2009      of the Host header field.  [Jeff Trawick]
2010
2011   *) Accomodate an out-of-space condition in the piped logs and the
2012      rotatelogs.c code, and no longer churn log processes for this
2013      condition.  [Victor J. Orlikowski]
2014
2015   *) Add support for partial writes with apr_sendfile() to core_output_filter.
2016      [Greg Ames] 
2017
2018 Changes with Apache 2.0a8
2019
2020   *) Add a directive to mod_mime so that filters can be associated with
2021      a given mime-type.
2022      [Ryan Bloom]
2023
2024   *) Get multi-views working again.  We were setting the path_info
2025      field incorrectly if we couldn't find the specified file.
2026      [Ryan Bloom]
2027
2028   *) Fix 304 processing.  The core should never try to send the headers
2029      down the filter stack.  Always, just setup the table in the request
2030      record, and let the header filter convert it to data that is ready
2031      for the network.
2032      [Ryan Bloom]
2033
2034   *) More fixes for the proxy.  There are still bugs in the proxy code,
2035      but this has now proxied www.yahoo.com and www.ntrnet.net (my ISP)
2036      successfully.
2037      [Ryan Bloom]
2038
2039   *) Fix params for apr_getaddrinfo() call in connect proxy handler.
2040      [Chuck Murcko]
2041
2042   *) APR: Add new apr_getopt_long function to handle long options.
2043      [B. W. Fitzpatrick <fitz@red-bean.com>]
2044
2045   *) APR: Change apr_connect() to take apr_sockaddr_t instead of hostname.
2046      Add generic apr_create_socket().  Add apr_getaddrinfo() for doing
2047      hostname resolution/address string parsing and building
2048      apr_sockaddr_t.  Add apr_get_sockaddr() for getting the address
2049      of one of the apr_sockaddr_t structures for a socket.  Change
2050      apr_bind() to take apr_sockaddr_t.  [David Reid and Jeff Trawick]
2051
2052   *) Remove the BUFF from the HTTP proxy.  This is still a bit ugly, but
2053      I have proxied pages with it, cleanup will commence soon.
2054      [Ryan Bloom]
2055
2056   *) Make the proxy work with filters.  This isn't perfect, because we
2057      aren't dealing with the headers properly.  [Ryan Bloom]
2058
2059   *) Do not send a content-length iff the C-L is 0 and this is a head
2060      request.  [Ryan Bloom]
2061
2062   *) Make cgi-bin work as a regular directory when using mod_vhost_alias
2063      with no VirtualScriptAlias directives. PR#6829 [Tony Finch]
2064
2065   *) Remove BUFF from the PROXY connect handling. [Ryan Bloom]
2066
2067   *) Get the default_handler to stop trying to deal with HEAD requests.
2068      The idea is to let the content-length filter compute the C-L before
2069      we try to send the data.  If we can get the C-L correctly, then we
2070      should send it in the HEAD response.
2071      [Ryan Bloom]
2072      
2073   *) The Header filter can now determine if a body should be sent based
2074      on r->header_only.  The general idea of this is that if we delay
2075      deciding to send the body, then we might be able to compute the
2076      content-length correctly, which will help caching proxies to cache
2077      our data better.  Any handler that doesn't want to try to compute
2078      the content-length can just send an EOS bucket without data and
2079      everything will just work.
2080      [Ryan Bloom]
2081
2082   *) Add the referer to the error log if one is available.
2083      [Markus Gyger <mgyger@itr.ch>]
2084
2085   *) Mod_info.c has now been ported to Apache 2.0.  As a part of this
2086      change, the root of the configuration tree has been exposed to modules
2087      as ap_conftree.
2088      [Ryan Morgan <rmorgan@covalent.net>]
2089
2090   *) Get the core_output_filter to use the bucket interface directly.
2091      This keeps us from calling the content-length filter multiple times
2092      for a simple static request.
2093      [Ryan Bloom]
2094
2095   *) We are sending the content-type correctly now.
2096      [Ryan Bloom and Will Rowe]
2097
2098   *) APR on FreeBSD: Fix a bug in apr_sendfile() which caused us to report
2099      a bogus bytes-sent value when the only thing being sent was trailers
2100      and writev() returned an error (or EAGAIN).  [Jeff Trawick]
2101
2102   *) Get SINGLE_LISTEN_UNSERIALIZED_ACCEPT working again.  This uses the
2103      hints file to determine which platforms define 
2104      SINGLE_LISTEN_UNSERIALIZED_ACCEPT.
2105      [Ryan Bloom]
2106
2107   *) APR: add apr_get_home_directory()  [Jeff Trawick]
2108
2109   *) Initial import of 1.3-current mod_proxy. [Chuck Murcko]
2110
2111   *) Not all platforms have INADDR_NONE defined by default.  Apache
2112      used to make this check and define INADDR_NONE if appropriate,
2113      but APR needs the check too, and I suspect other applications will
2114      as well.  APR now defines APR_INADDR_NONE, which is always a valid
2115      value on all platforms.
2116      [Branko Èibej <brane@xbc.nu>]
2117
2118   *) Destroy the pthread mutex in lock_intra_cleanup() for PR#6824.
2119      [Shuichi Kitaguchi <ki@hh.iij4u.or.jp>] 
2120
2121   *) Relax the syntax checking of Host: headers in order to support
2122      iDNS. PR#6635 [Tony Finch]
2123
2124   *) When reading from file buckets we convert to an MMAP if it makes
2125      sense.  This also simplifies the default handler because the
2126      default handler no longer needs to try to create MMAPs.
2127      [Ryan Bloom]
2128
2129   *) BUFF has been removed from the main server.  The BUFF code will remain
2130      in the code until it has been purged from the proxy module as well.
2131      [Ryan Bloom]
2132
2133   *) Byteranges have been completely re-written to be a filter.  This
2134      has been tested, and I believe it is working correctly, but it could
2135      doesn't work for the Adobe Acrobat plug-in.  The output almost matches
2136      the output from 1.3, the only difference being that 1.3 includes
2137      a content-length in the response, and this does not.
2138      [Ryan Bloom]
2139
2140   *) APR read/write functions and bucket read functions now operate
2141      on unsigned integers, instead of signed ones.  It doesn't make
2142      any sense to use signed ints, because we return the error codes,
2143      so if we have an error we should report 0 bytes read or written.
2144      [Ryan Bloom]
2145
2146   *) Always compute the content length, whether it is sent or not.
2147      The reason for this, is that it allows us to correctly report
2148      the bytes_sent when logging the request.  This also simplifies
2149      content-length filter a bit, and fixes the actual byte-reporing
2150      code in mod_log_config.c
2151      [Ryan Bloom]
2152
2153   *) Remove AP_END_OF_BRIGADE definition.  This does not signify what
2154      it says, because it was only used by EOS and FLUSH buckets.  Since
2155      neither of those are required at the end of a brigade, this was
2156      really signifying FLUSH_THE_DATA, but that can be determined better
2157      by checking AP_BUCKET_IS_EOS() or AP_BUCKET_IS_FLUSH.  EOS and FLUSH
2158      buckets now return a length of 0, which is actually the amount of data
2159      read, so they make more sense.
2160      [Ryan Bloom]
2161
2162   *) Allow the core_output_filter to save some data past the end of a
2163      request.  If we get an EOS bucket, we only send the data if it 
2164      makes sense to send it.  This allows us to pipeline request
2165      responses.  As a part of this, we also need to allocate mmap
2166      buckets out of the connection pool, not the request pool.  This
2167      allows the mmap to outlive the request.
2168      [Ryan Bloom]
2169
2170   *) Make blocking and non-blocking bucket reads work correctly for
2171      sockets and pipes.  These are the only bucket types that should
2172      have non-blocking reads, because the other bucket types should
2173      ALWAYS be able to return something immediately.
2174      [Ryan Bloom]
2175
2176   *) In the Apache/Win32 console window, accept Ctrl+C to stop the 
2177      server, but use Ctrl+Break to initiate a graceful restart 
2178      instead of duplicating behavior. [John Sterling]
2179
2180   *) Patch mod_autoindex to set the Last-Modified header based on
2181      the directory's mtime, and add the ETag header.  [William Rowe]
2182
2183   *) Merge the 1.3 patch to add support for logging query string in 
2184      such a way that "%m %U%q %H" is the same as "%r".
2185      [Bill Stoddard]
2186
2187   *) Port three log methods from mod_log_config 1.3 to 2.0: 
2188      CLF compliant '-' byte count, method and protocol.
2189      [Bill Stoddard]
2190
2191   *) Add a new LogFormat directive, %c, that will log connection
2192      status at the end of the response as follows:
2193      'X' - connection aborted before the response completed.
2194      '+' - connection may be kept-alive by the server.
2195      '-' - connection will be closed by the server.
2196      [Bill Stoddard]
2197
2198   *) Expand APR for WinNT to fully accept and return utf-8 encoded
2199      Unicode file names and paths for Win32, and tag the Content-Type 
2200      from mod_autoindex to reflect that charset if the the feature
2201      macro APR_HAS_UNICODE_FS is true.  [William Rowe]
2202
2203   *) Compute the content length (and add appropriate header field) for
2204      the response when no content length is available and we can't use 
2205      chunked encoding.  [Jeff Trawick]
2206
2207   *) Changed ap_discard_request_body() to use REQUEST_CHUNKED_DECHUNK,
2208      so that content input filters get dechunked data when using
2209      the default handler. Also removed REQUEST_CHUNKED_PASS.
2210      [Sascha Schumann]
2211      
2212   *) Add mod_ext_filter as an experimental module.  This module allows
2213      the administrator to use external programs as filters.  Currently,
2214      only filtering of output is supported.  [Jeff Trawick]
2215
2216   *) Most Apache functions work on EBCDIC machines again, as protocol
2217      data is now translated (again).  [Jeff Trawick]
2218
2219   *) Introduce ap_xlate_proto_{to|from}_ascii() to clean up some of
2220      the EBCDIC support.  They are noops on ASCII machines, so this
2221      type of translation doesn't have to be surrounded by #ifdef
2222      CHARSET_EBCDIC.  [Jeff Trawick]
2223
2224   *) Fix mod_include.  tag commands work again, and the server will
2225      send the FAQ again.  This also allows mod_include to set aside
2226      buckets that include partial buckets.
2227      [Ryan Bloom and David Reid]
2228
2229   *) Add suexec support back.  [Manoj Kasichainula]
2230
2231   *) Lingering close now uses the socket directly instead of using
2232      BUFF.  This has been tested, but since all we can tell is that it
2233      doesn't fail, this needs to be really hacked on.
2234      [Ryan Bloom]
2235
2236   *) Allow filters to modify headers and have those headers be sent to
2237      the client.  The idea is that we have an http_header filter that
2238      actually sends the headers to the network.  This removes the need
2239      for the BUFF to send headers.
2240      [Ryan Bloom]
2241
2242   *) Charset translation: mod_charset_lite handles translation of
2243      request bodies.  Get rid of the xlate version of ap_md5_digest()
2244      since we don't compute digests of filtered (e.g., translated) 
2245      response bodies this way anymore.  (Note that we don't do it at
2246      all at the present; somebody needs to write a filter to do so.)
2247      [Jeff Trawick]
2248
2249   *) Input filters and ap_get_brigade() now have a input mode parameter 
2250      (blocking, non-blocking, peek) instead of a length parameter.
2251      [hackathon]
2252
2253   *) Update the mime.types file to the registered media types as
2254      of 2000-10-19. PR#6613 [Carsten Klapp <carsten.klapp@home.net>,
2255      Tony Finch]
2256
2257   *) Namespace protect some macros declared in ap_config.h
2258      [Ryan Bloom]
2259
2260   *) Support HTTP header line folding with input filtering.
2261      [Greg Ames]
2262
2263   *) Mod_include works again.  This should still be re-written, but at
2264      least now we can serve an SHTML page again.
2265      [Ryan Bloom]
2266
2267   *) Begin to remove BUFF from the core.  Currently, we keep a pointer
2268      to both the BUFF and the socket in the conn_rec.  Functions that
2269      want to use the BUFF can, functions that want to use the socket,
2270      can.  They point to the same place.
2271      [Ryan Bloom]
2272
2273   *) apr_psprintf doesn't understand %lld as a format.  Make it %ld.
2274      [Tomas "Ögren" <stric@ing.umu.se>]
2275
2276   *) APR pipes on Unix and Win32 are now cleaned up automatically when the 
2277      associated pool goes away.  (APR pipes on OS/2 were already had this
2278      logic.)  This resolvs a fatal file descriptor leak with CGIs.  
2279      [Jeff Trawick]
2280
2281   *) The final line of the config file was not being read if there was
2282      no \n at the end of it.  This was caused by apr_fgets returning 
2283      APR_EOF even though we had read valid data.  This is solved by
2284      making cfg_getline check the buff that was returned from apr_fgets.
2285      If apr_fgets return APR_EOF, but there was data in the buf, then we
2286      return the buf, otherwise we return NULL.
2287      [Ryan Bloom]
2288
2289   *) Piped logs work again in the 2.0 series.
2290      [Ryan Bloom]
2291
2292   *) Restore functionality broken by the mod_rewrite security fix:
2293      rewrite map lookup keys and default values are now expanded
2294      so that the lookup can depend on the requested URI etc.
2295      PR #6671 [Tony Finch]
2296
2297   *) Tighten up the syntax checking of Host: headers to fix a
2298      security bug in some mass virtual hosting configurations
2299      that can allow a remote attacker to retrieve some files
2300      on the system that should be inaccessible. [Tony Finch]
2301
2302   *) Add a pool bucket type.  This bucket is used for data allocated out
2303      of a pool.  If the pool is cleaned before the bucket is destroyed, then
2304      the data is converted to a heap bucket, allowing it to survive the
2305      death of the pool.
2306      [Ryan Bloom]
2307
2308   *) Add a flush bucket.  This allows modules to signal that the filters
2309      should all flush whatever data they currently have.  There is no way
2310      to actually force them to do this, so if a filter ignores this bucket,
2311      that's life, but at least we can try with this.
2312      [Ryan Bloom]
2313
2314   *) Add an output filter for sub-requests.  This filter just strips the
2315      EOS bucket so that we don't confuse the main request's core output
2316      filter by sending multiple EOS buckets.  This change also makes sub
2317      requests start to send EOS buckets when they are finished.
2318      [Ryan Bloom]
2319
2320   *) Make ap_bucket_(read|destroy|split|setaside) into macros.  Also
2321      makes ap_bucket_destroy a return void, which is okay because it
2322      used to always return APR_SUCCESS, and nobody ever checked its
2323      return value anyway.
2324      [Cliff Woolley <cliffwoolley@yahoo.com>]
2325
2326   *) Remove the index into the bucket-type table from the buckets
2327      structure.  This has now been replaced with a pointer to the
2328      bucket_type.  Also add some macros to test the bucket-type.
2329      [Ryan Bloom]
2330
2331   *) Renamed all MODULE_EXPORT symbols to AP_MODULE_DECLARE and all symbols
2332      for CORE_EXPORT to AP_CORE_DECLARE (namespace protecting the wrapper)
2333      and retitled API_EXPORT as AP_DECLARE and APR_EXPORT as APR_DECLARE.
2334      All _VAR_ flavors changes to _DATA to be absolutely clear.
2335      [William Rowe]
2336
2337   *) Add support for /, //, //servername and //server/sharename 
2338      parsing of <Directory> blocks under Win32 and OS2.
2339      [Tim Costello, William Rowe, Brian Harvard]
2340
2341   *) Remove the function pointers from the ap_bucket type.  They have been
2342      replaced with a global table.  Modules are allowed to register bucket
2343      types and use then use those buckets.
2344      [Ryan Bloom]
2345
2346   *) mod_cgid: In the handler, shut down the Unix socket (only for write) 
2347      once we finish writing the request body to the cgi child process; 
2348      otherwise, the client doesn't hit EOF on stdin.  Small request bodies 
2349      worked without this change (for reasons I don't understand), but large 
2350      ones didn't.  [Jeff Trawick]
2351
2352   *) Remove file bucket specific information from the ap_bucket type.
2353      This has been moved to a file_bucket specific type that hangs off
2354      the data pointer in the ap_bucket type.
2355      [Ryan Bloom]
2356
2357   *) Input filtering now has a third argument.  This is the amount of data
2358      to read from lower filters.  This argument can be -1, 0, or a positive
2359      number.  -1 means give me all the data you have, I'll deal with it and
2360      let you know if I need more.  0 means give me one line and one line
2361      only.  A positive number means I want no more than this much data.
2362
2363      Currently, only 0 and a positive number are implemented.  This allows
2364      us to remove the remaining field from the conn_rec structure, which
2365      has also been done.
2366      [Ryan Bloom] 
2367     
2368   *) Big cleanup of the input filtering.  The goal is that http_filter
2369      understands two conditions, headers and body.  It knows where it is
2370      based on c->remaining.  If c->remaining is 0, then we are in headers,
2371      and http_filter returns a line at a time.  If it is not 0, then we are
2372      in body, and http_filter returns raw data, but only up to c->remaining
2373      bytes.  It can return less, but never more.
2374      [Greg Ames, Ryan Bloom, Jeff Trawick]
2375
2376   *) mod_cgi: Write all of the request body to the child, not just what
2377      the kernel would accept on the first write.  [Jeff Trawick]
2378
2379   *) Back out the change that moved the brigade from the core_output_filters
2380      ctx to the conn_rec.  Since all requests over a given connection
2381      go through the same core_output_filter, the ctx pointer has the
2382      correct lifetime.
2383      [Ryan Bloom]
2384
2385   *) Fix another bug in the send_the_file() read/write loop. A partial
2386      send by apr_send would cause unsent data in the read buffer to
2387      get clobbered. Complete making send_the_file handle partial
2388      writes to the network.
2389      [Bill Stoddard]
2390
2391   *) Fix a couple of type fixes to allow compilation on AIX again
2392      [Victor J. Orlikowski <v.j.orlikowski@gte.net>]
2393
2394   *) Fix bug in send_the_file() which causes offset to be ignored
2395      if there are no headers to send.
2396      [Bill Stoddard]
2397
2398   *) Handle APR_ENOTIMPL returned from apr_sendfile in the core
2399      filter. Useful for supporting Windows 9* with a binary
2400      compiled on Windows NT.
2401      [Bill Stoddard]
2402
2403 Changes with Apache 2.0a7
2404
2405   *) Reimplement core_output_filter to buffer/save bucket brigades
2406      across multiple calls to the core_filter. The brigade will be
2407      sent when either MIN_BYTES_TO_SEND or MAX_IOVEC_TO_WRITE
2408      thresholds are hit or the EOS bucket is received.
2409      [Bill Stoddard]
2410
2411   *) Create experimental filter (buffer_filter) that coalesces bytes 
2412      into one large buffer before invoking the next filter in the
2413      chain. This filter is particularly useful with the current 
2414      implementation of mod_autoindex when it inserted above the
2415      chunk_filter. mod_autoindex generates a lot of brigades that
2416      containing buckets holding just a few bytes each. The
2417      buffer_filter coalesces these buckets into a single large bucket.
2418      [Bill Stoddard]
2419
2420   *) Add apr_sendfile() support into the core_output_filter.
2421      [Bill Stoddard]
2422
2423   *) Add apr_sendv() support into the core_output_filter.
2424      [Bill Stoddard]
2425
2426   *) Fix mod_log_config so that it compiles cleanly with BUFFERED_LOGS
2427      [Mike Abbott <mja@sgi.com>]
2428
2429   *) Remove ap_send_fb.  This is no longer used in Apache, and it doesn't
2430      make much sense, because Apache uses buckets instead of BUFFs now.
2431      [Ryan Bloom]
2432
2433   *) send_the_file now falls back to a read/write loop on platforms that
2434      do not have sendfile.
2435      [Ryan Bloom and Brian Havard]
2436
2437   *) Install apachectl correctly, and substitute the proper values so
2438      that it works again.  [Ryan Bloom]
2439
2440   *) Better(??) handle platforms that lack sendfile().
2441      [Jim Jagielski]
2442
2443   *) APR now has UUID generation/formatting/parsing support.
2444      [Greg Stein]
2445
2446   *) Begin the http_filter.  This is an input filter that understands
2447      the absolute basic amount required to parse an HTTP Request.  The
2448      goal is to be able to split headers from request body before passing
2449      the data back to the other filters.
2450      [Ryan Bloom]
2451
2452   *) Bring forward from 1.3.13 the config directory implementation
2453      [Jim Jagielski]
2454
2455   *) install apxs if it is created
2456      [Ryan Bloom]
2457
2458   *) Added APR_IS_STATUS_condition test macros to eliminate canonical error
2459      conversions.  [William Rowe]
2460
2461   *) Now that we have ap_add_input_filter(), rename ap_add_filter() to 
2462      ap_add_output_filter().  [Jeff Trawick]
2463
2464   *) Multiple build and configuration fixes
2465     Build process:
2466
2467       -add datadir and localstatedir substitutions
2468       -fix layout name
2469       -fix logfilename misspelling
2470       -fix evaluation of installation dir variables and
2471       -replace $foobar by $(foobar) to be usefull in the makefile
2472     
2473     Cross compile:
2474     
2475       -add rules for cross-compiling in rules.mk. Okay, rule to check for
2476        $CC_FOR_BUILD is still missing
2477       -use CHECK_TOOL instead of CHECK_PROG for ranlib
2478       -add missing "AR=@AR@" to severaly Makefile.in's
2479       -cache result for "struct rlimit"
2480       -compile all helper programs with native and cross compiler
2481        and use the native version to generate header file
2482      ["Rüdiger" Kuhlmann <Tadu@gmx.de>]
2483
2484   *) Prepare our autoconf setup for autoconf 2.14a and for cross-
2485      compiling.
2486      ["Rüdiger" Kuhlmann <Tadu@gmx.de>]
2487
2488   *) Fix a bug where a client which only sends \n to delimit header
2489      lines (netcat) gets a strange looking HTTP_NOT_IMPLEMENTED 
2490      message.  Start working on ebcdic co-existance with input 
2491      filtering.
2492      [William Rowe, Greg Ames]
2493
2494   *) If mod_so is enabled in the server always create libexec, even
2495      if there are no modules installed in this directory.  This is a
2496      requirement for APXS to work correctly.
2497      [Ryan Bloom]
2498
2499   *) Connection oriented output filters are now stored in the 
2500      conn_rec instead of the request_rec.  This allows us to add the
2501      output filter in the pre-connection phase instead of the
2502      post_read_request phase, which keeps us from trying to write an
2503      error page before we have a filter to write to the network.
2504      [Ryan Bloom, Jeff Trawick, and Greg Ames]
2505
2506   *) Cleaning up an mmap bucket no longer deletes the mmap.  An
2507      mmap can be used across multiple buckets (default_handler with
2508      byte ranges, mod_file_cache, mod_mmap_static), so cleanup of
2509      the mmap itself can't be associated with the bucket.
2510      [Jeff Trawick]
2511
2512   *) Add .dll caching directive ISAPICacheFile to mod_isapi.
2513      [William Rowe]
2514
2515   *) Radical surgery to improve mod_isapi support under Win32.
2516      Includes a number of newer ServerSupportFunction calls, support
2517      for ReadClient (in order to retrieve POSTs greater than 48KB),
2518      and general bug fixes to more reliably load ISAPI .dll's and
2519      prevent leaking handle resources.  Note: There are still 
2520      discrepancies between IIS's and Apache's ServerVariables, and
2521      async calls are still not supported.  Additional warnings are
2522      logged to facilitate debugging of unsupported ISAPI calls.
2523      [William Rowe]
2524
2525   *) Add input filtering to Apache.  The basic idea for the input
2526      filters is the same as the ideas for output filters.  The biggest
2527      difference is that instead of calling ap_pass_brigade, ap_get_brigade
2528      should be called, and the order of execution for the filter itself is
2529      different.  When writing an output filter, a brigade is passed in,
2530      and filters operate directly on that brigade, when done, they call
2531      ap_pass_brigade.  Input filters are the exact opposite.  Because input
2532      is not a push operation, filters first call ap_get_brigade.  When this
2533      function returns, the input filter will be left with a valid brigade.
2534      The input filter should then operate on the brigade, and return.
2535      [Ryan Bloom]
2536
2537   *) Fix building on BSD/OS using its native make. The build system
2538      falls back to the BSD .include directive on that host platform.
2539      [Sascha Schumann]
2540
2541   *) Expand dbmmanage to allow -d -m -s -p options for Crypt, MD5,
2542      SHA1 and plaintext password encodings.  Make feature tests a
2543      bit more flexible.  [William Rowe]
2544
2545   *) Charset translation: mod_charset_lite handles output content 
2546      translation in a filter.  mod_charset_lite no longer ignores 
2547      subrequests.  A bunch of cruft related to BUFF's support for
2548      translating request and response bodies was removed.  
2549      [Jeff Trawick]
2550
2551   *) Move the addition of the CORE filter to the post_read_request
2552      hook in http_core.c.  This removes the need to add the filter in
2553      multiple places and allows for an SSL module to be added much
2554      simpler. [Ryan Bloom]
2555
2556   *) Fix a security problem that affects certain configurations of
2557      mod_rewrite. If the result of a RewriteRule is a filename that
2558      contains expansion specifiers, especially regexp backreferences
2559      $0..$9 and %0..%9, then it may be possible for an attacker to
2560      access any file on the web server. [Tony Finch]
2561
2562   *) Fix a bug where errors that are detected during early request parsing
2563      don't produce visible HTTP error messages at the browser, because
2564      the core_filter wasn't present.  [Greg Ames]
2565
2566   *) Provide apr_socklen_t as a portability aid. 
2567      [Victor  J. Orlikowski]
2568
2569   *) Overhaul of dbmmanage to allow a groups arg (as in Apache 1.2)
2570      as well as a comment arg to the add, adduser and update cmds.
2571      update allows the user to clear or preserve pw/groups/comment.
2572      Fixed a bug in dbmmanage that prevented the check option from 
2573      parsing a password followed by :group... text.  Corrected the
2574      seed calcualation for Win32 systems, and added -lsdbm support.
2575      [William Rowe]
2576
2577   *) Configured mod_auth_dbm to compile with sdbmlib under Win32.
2578      [William Rowe]
2579
2580   *) Avoid a segfault when parsing .htaccess files.  An 
2581      uninitialized tree pointer was passed to ap_build_config().
2582      [Jeff Trawick]
2583
2584   *) Change the way that inet_addr & inet_network are checked for
2585      in APR's configure process to allow BeOS BONE to correctly
2586      find them. With this change BeOS BONE now builds from source
2587      with no problems.  [David Reid]
2588
2589   *) Fix a bug in apr_create_process() for Unix.  The NULL signifying
2590      the end of the parameters to execve() was stored in the wrong
2591      location, overlaying the storage beyond the newargs[] array and 
2592      also passing uninitialized storage to execve(), which would 
2593      sometimes fail with EFAULT.  [Jeff Trawick]
2594
2595   *) Fix a bug parsing configuration file containers.  With a sequence
2596      like this in the config file
2597
2598        <IfModule mod_kilroy.c>
2599        any stuff
2600        </IfModule>
2601        <IfModule mod_lovejoy.c>
2602        (blank line)
2603        any stuff
2604        </IfModule>
2605
2606      the second container would be terminated at the blank line due to
2607      sediment in the buffer from reading the prior </IfModule> and an 
2608      error message would be generated for the real </IfModule> for the
2609      second container.  Also due to this problem, any two characters 
2610      could be used for "</" in the close of a container.  
2611      [Jeff Trawick]
2612
2613   *) ap_add_filter prototype changed to remove the ctx pointer.  The
2614      pointer still remains in the filter structure, but it can not be
2615      a part of the ap_add_filter prototype.  The reason is that when
2616      the core uses AddFilter to add a filter to the stack it doesn't
2617      know how to allocate the ctx pointer, or even how much memory should
2618      be allocated.  The filters will have to be responsible for allocating
2619      the ctx memory when they need it.
2620      [Ryan Bloom]
2621
2622   *) Add an AddFilter directive.  This directive takes a list of filters
2623      that should be activated for the requested resource.
2624      [Ryan Bloom]
2625
2626   *) apr_snprintf(): Get quad format strings working on OS/390 (and perhaps
2627      some other platforms).  [Jeff Trawick]
2628
2629   *) Modify mod_include to be a filter.  Currently, it has only been tested
2630      on actual files, but it should work for CGI scripts too.
2631      [Ryan Bloom]
2632
2633   *) apr_putc(), apr_puts() for Unix: handle buffered files and interrupted
2634      writes.  apr_flush() for Unix: handle interrupted writes.
2635      [Jeff Trawick]
2636
2637   *) NameVirtualHost can now take "*" as an argument instead of
2638      an IP address. This allows you to create a purely name-based
2639      virtual hosting server that does not have any IP addresses in
2640      the configuration file and which ignores the local address
2641      of any connections. PR #5595, PR #4455 [Tony Finch]
2642
2643   *) Fix some compile warnings in mod_mmap_static.c
2644      [Mike Abbott <mja@sgi.com>]
2645
2646   *) Fix chunking problem with CGI scripts.  The general problem was that
2647      the CGI modules were adding an EOS bucket and then the core added an
2648      EOS bucket.  The chunking filter finalizes the chunked response when it
2649      encounters an EOS bucket.  Because two EOS buckets were sent, we
2650      finalized the response twice.  The fix is to make sure we only send one
2651      EOS, by utilizing a flag in the request_rec.
2652      [Ryan Bloom]
2653
2654   *) apr_put_os_file() now sets up the unget byte appropriately on Unix
2655      and Win32.  Previously, the first read from an apr_file_t set up via
2656      apr_put_os_file() would return a '\0'.  [Jeff Trawick]
2657
2658   *) Mod_cgid now creates a single element bucket brigade, with a pipe
2659      bucket, instead of using BUFF's and ap_r*.
2660      [Ryan Bloom]
2661
2662   *) APRVARS.in no longer overwrites the EXTRA_LIBS variable.
2663      [Mike Abbott <mja@sgi.com>]
2664
2665   *) Remove ap_bopenf from buff code.  This required modifying the file_cache
2666      code to use APR file's directly instead of going through BUFFs.
2667      [Ryan Bloom]
2668
2669   *) Fix compile break on some platforms for mod_mime_magic.c
2670      [John K. Sterling <sterling@covalent.net>]
2671
2672   *) Fix merging of AddDefaultCharset directive.
2673      PR #5872 (1.3) [Jun Kuriyama <kuriyama@imgsrc.co.jp>]
2674
2675   *) Minor revamp of the rlimit sections of code. We now test
2676      explicitly for setrlimit and getrlimit. Also, unixd_set_rlimit()
2677      is now "available" even if the platform doesn't support
2678      the rlimit family (it's just a noop though). [Jim Jagielski]
2679
2680   *) Migrate the pre-selection of which MPM to use for specific
2681      platforms to hints.m4, which contains (or should contain)
2682      all platform specific "hints". [Jim Jagielski]
2683
2684   *) Remove IOLs from Apache.  With filtering, IOLs are no longer necessary
2685      [Ryan Bloom]
2686
2687   *) Add tables with non-string/binary values to APR.
2688      [Ken Coar]
2689
2690   *) Fix some bad calls to ap_log_rerror() in mod_rewrite. 
2691      [Jeff Trawick]
2692
2693   *) Update PCRE to version 3.2.  [Ryan Bloom]
2694
2695   *) Change the way buckets' destroy functions are called so that
2696      they can be more directly used when changing the type of a
2697      bucket in place. [Tony Finch]
2698
2699   *) Add generic support for reference-counting the resources used by
2700      buckets, and alter the HEAP and MMAP buckets to use it. Change
2701      the way buckets are initialised to support changing the type of
2702      buckets in place, and use it when setting aside TRANSIENT buckets.
2703      Change the implementation of TRANSIENT buckets so that it can be
2704      mostly shared with IMMORTAL buckets, which are now implemented.
2705      [Tony Finch]
2706
2707 Changes with Apache 2.0a6
2708
2709   *) Add support to Apache and APR for dsos on OS/390.  [Greg Ames]
2710
2711   *) Add a chunking filter to Apache.  This brings us one step closer
2712      to removing BUFF. [Ryan Bloom]
2713
2714   *) ap_add_filter now adds filters in a LIFO fashion.  The first filter
2715      added to the stack is the last filter to be called.  [Ryan Bloom]
2716
2717   *) Apache 2.0 has been completely documented using Scandoc.  The
2718      docs can be generated by running 'make docs'.  [Ryan Bloom]
2719
2720   *) Add filtered I/O to Apache.  This is based on bucket brigades,
2721      Currently the buckets still use BUFF under the covers, but that
2722      should change quickly.  The only currently written filter is the
2723      core filter which just calls ap_bwrite.  [The Apache Group]
2724
2725   *) APR locks on Unix: Let APR_LOCKALL locks work when APR isn't
2726      built with thread support.  [Jeff Trawick]
2727
2728   *) Abort configuration if --with-layout was specified and there's
2729      no layout definition file.  [Ken Coar]
2730
2731   *) Add support for '--with-port=n' option to configure.  [Ken Coar]
2732
2733   *) Add support for extension methods for the Allow response header
2734      field, and an API routine for accessing r->allowed and the
2735      list of extension methods in a unified manner.  [Ken Coar]
2736
2737   *) mod_cern_meta: fix broken file reading loop in scan_meta_file().
2738      [Rob Simonson <simo@us.ibm.com>]
2739
2740   *) Get xlate builds working again.  The apr renaming in 2.0a5 broke
2741      APACHE_XLATE builds.  [Jeff Trawick]
2742
2743   *) A configuration file parsing problem was fixed.  When the 
2744      configuration file started with an IfModule/IfDefine container, 
2745      only the last statement in the container would be retained.  
2746      [Jeff Trawick]
2747
2748 Changes with Apache 2.0a5
2749
2750   *) Perchild is serving pages after passing them to different child
2751      processes.  There are still a lot of bugs, but this does work.  I
2752      have made requests against the same installation of Apache, and had
2753      different servers use different user IDs to serve the responses.
2754      This change moves to using socketpair instead of an AF_UNIX socket.
2755      [Ryan Bloom]
2756
2757   *) Perchild MPM still doesn't work perfectly, but it is serving pages.
2758      It can't seem to pass between child processes yet, but I think we
2759      are closer now than before.  This moves us back to using Unix
2760      Domain Sockets.  [Ryan Bloom]
2761
2762   *) libapr functions and types renamed with apr_ prefix.
2763      #include "apr_compat.h" for 1.3.x backwards compat
2764      [Perl]
2765
2766   *) Fix problems with APR sockaddr handling on Win32.  It didn't always
2767      return the right information on the local socket address.
2768      [Gregory Nicholls <gnicholls@level8.com>]
2769
2770   *) ap_recv() on Win32: Set bytes-read to 0 on error.  
2771      [Gregory Nicholls <gnicholls@level8.com>]
2772
2773   *) Add an option to not detach from the controlling terminal without
2774      going into single process mode.  This allows for much easier
2775      debugging of the process startup code. [Ryan Bloom]
2776
2777   *) ab: don't use perror() to report the failure of an APR function.
2778      [Jeff Trawick]
2779
2780   *) Make dexter, mpmt_pthread, and perchild MPMs not destroy the
2781      scoreboard on graceful restarts.
2782      [Ryan Bloom]
2783
2784   *) Fix segfault/SIGSEGV when running gzip from mod_mime_magic.c.
2785      An invalid ap_proc_t was passed to ap_create_process().
2786      [Jeff Trawick]
2787
2788   *) Allow modules to register filters.  Those filters are still
2789      never called, but this is a step in the right direction.
2790      [Ryan Bloom and Greg Stein]
2791
2792   *) Register the mod_cgid daemon process for cleanup so that it is
2793      killed at termination if it does not die when the parent gets
2794      SIGTERM.  This change is to fix occasional problems where the
2795      process stays around.  Bugs in similar logic in mod_rewrite and
2796      mod_include were also fixed.  [Jeff Trawick]
2797
2798   *) Fix a bug in the time handling.  Basically, we were imploding a time
2799      in ap_parseHTTPdate, but it had bogus data in the exploded time format.
2800      Namely, tm_usec and tm_gmtoff were not filled out.  ap_implode_time
2801      uses those two fields to adjust the time value.  Because of the HTTP
2802      spec, both of those values can be zero'ed out safely.  This fixes
2803      the bug correctly.  [Ryan Bloom]
2804
2805   *) Fix a couple of place in the Windows code where the wrong error
2806      code was being returned. [Gregory Nicholls <gnicholls@level8.com>]
2807
2808   *) Fix POOL_DEBUG (at least for prefork mpm). [Dean Gaudet]
2809
2810   *) Added the APR_EOL_STR macro for platform dependent differences in 
2811      logfiles and other raw text (such as all APR files).  Fixes logfiles
2812      not terminated with cr/lf sequences in Win32.  [William Rowe]
2813
2814   *) Move all strings functions in APR to src/lib/apr/strings and create
2815      apr_strings.h for the prototypes. [Ryan Bloom]
2816
2817   *) APR lock fixes: when using SysV sems, flock(), or fcntl(), be sure
2818      to repeat the syscall until we stop getting EINTR.  I noticed a
2819      related problem at termination (SIGTERM) on FreeBSD when using
2820      fcntl().  Apache 1.3 had these new loops too.  Also, make the flock() 
2821      implementation work properly with child init.  Previously, ap_lock()
2822      was essentially a no-op because all children were using different
2823      locks and thus nobody ever blocked.  [Jeff Trawick]
2824
2825   *) The htdocs/ tree has been moved out of the CVS source tree into
2826      a separate area for easier development.  This has NO EFFECT on
2827      end-users or Apache installations.  [Ken Coar]
2828
2829   *) Integrate the mod_dav module for WebDAV protocol handling. This
2830      adds the dav and dav_fs modules, the SDBM library, and additional
2831      XML handling utilities. [Greg Stein]
2832
2833   *) Clean out obsolete names (from httpd.h) for the HTTP Status Codes
2834      [Greg Stein]
2835
2836   *) Update the lib/expat-lite/ library (bring forward changes from
2837      the Apache 1.3 repository). [Greg Stein]
2838
2839   *) If sizeof(long long) == sizeof(long), then prefer long in APR
2840      configure.in.  [Dave Hill <ddhill@zk3.dec.com>]
2841
2842   *) Add ap_sendfile for Tru64 Unix.  Also, add an error message for
2843      machines where sendfile is detected, but nobody has written ap_sendfile.
2844      [Dave Hill <ddhill@zk3.dec.com>]
2845
2846   *) Compile fixes in mod_mmap_static.  [Victor J. Orlikowski]
2847
2848   *) ab would start up more connections than needed, then quit when the
2849      desired number were finished. Also fixed a logic error involving
2850      ab keepalives.  [Victor J. Orlikowski]
2851
2852   *) WinNT: Implement non-blocking pipes with timeouts to communicate
2853      with CGIs. Apache 2.0a4 had non-blocking pipes but without 
2854      timeouts (i.e, if a timeout was specified, the pipe reverted to
2855      a full blocking pipe). Now the behaviour is more in line with
2856      Unix non-blocking pipes.
2857      [Bill Stoddard]
2858
2859   *) WinNT: Implement accept socket reuse. Using mod_file_cache to
2860      cache open file handles along with accept socket reuse enables
2861      Apache 2.0 to serve non-keepalive requests for static files at
2862      3x the rate of Apache 1.3.(e.g, Apache 1.3 will serve 400 rps
2863      and Apache 2.0 will serve almost 1200 rps on my system).
2864      [Bill Stoddard]
2865
2866   *) Merge mod_mmap_static function into mod_file_cache. mod_file_cache
2867      supports two config directives, mmapfile (same behavious as
2868      mod_mmap_static) and cachefile. Use the cachefile directive
2869      to cache open file handles. This directive only works on systems
2870      that have implemented the ap_sendfile API. cachefile works today
2871      on Windows NT, but has not been tested on any flavors of Unix.
2872      [Bill Stoddard]
2873
2874   *) Cleanup the configuration.  With the last few changes the
2875      configuration process automatically:
2876          inherits information about how to build from APR.  Allowing
2877          APR to inform Apache that it should or should not use -ldl
2878         
2879          Detects which mod_cgi should be used mod_cgi or mod_cgid,
2880          based on the threading model
2881
2882          Apache calls APR's configure process before finishing it's
2883          configuration processing, allowing for more information flow
2884          between the two.
2885      [Ryan Bloom]
2886          
2887
2888   *) Change Unix and Win32 ap_setsockopt() so that APR_SO_NONBLOCK
2889      with non-zero argument makes the socket non-blocking.  BeOS and
2890      OS/2 already worked this way.  [Jeff Trawick]
2891
2892   *) ap_close() now calls ap_flush() for buffered files, so write
2893      operations work a whole lot better on buffered files.
2894      [Jeff Trawick]
2895
2896   *) Fix error messages issued from MPMs which explain where to change
2897      compiled-in limits (e.g., ThreadsPerChild, MaxClients, StartTreads).
2898      [Greg Ames]
2899
2900   *) ap_create_pipe() now leaves pipes in blocking state.  (This helps 
2901      reduce the number of syscalls on Unix.)  ap_set_pipe_timeout() is
2902      now the way that the blocking state of a pipe is manipulated.
2903      ap_block_pipe() is gone.  [Jeff Trawick]
2904
2905   *) Correct the problem where the only local host name that the IP stack
2906      can discover are 'undotted' private names.  If no fully qualified
2907      domain name can be identified, the default ServerName will be set to
2908      the machine's IP address string. A warning is always provided if the
2909      ServerName not specified, but assumed.  Solves PR6215 [William Rowe]
2910
2911   *) Repair problems with config file processing which caused segfault
2912      at init when virtual hosts were defined and which caused ServerName to
2913      be ignored when there was no valid DNS setup.  [Jeff Trawick]
2914
2915   *) Removed pointless ap_is_aborted macro function. [Roy Fielding]
2916
2917   *) Add ap_sendfile implementation for AIX
2918      [Victor J. Orlikowski]
2919
2920   *) Repair C++ compatibility in ap_config.h, apr_file_io.h, 
2921      apr_network_io.h, and apr_thread_proc.h.  
2922      [Tyler J. Brooks <tylerjbrooks@home.com>, Jeff Trawick]
2923
2924   *) Bring the allocation and pool debugging code back into a working
2925      state.  This will need to be tested as so far it's only been used on
2926      BeOS. [David Reid]
2927
2928   *) Change configuration command setup to be properly typesafe when in
2929      maintainer mode. Note that this requires a compiler that can initialise
2930      unions. [Ben Laurie]
2931
2932   *) Turn on buffering for config file reads.  Part of this was to
2933      repair buffered I/O support in Unix and implement buffered
2934      ap_fgets() for all platforms.  [Brian Havard, Jeff Trawick]
2935
2936   *) Win32: Fix problem where UTC offset was not being set correctly
2937      in the access log. Problem reported on news group by Jerry Baker.
2938      [Bill Stoddard]
2939
2940   *) Fix segfault when reporting this type of syntax error:
2941      "</container> without matching <container> section", where
2942      container is VirtualHost or Directory or whatever.
2943      [Jeff Trawick]
2944
2945   *) Prevent the source code for CGIs from being revealed when using
2946      mod_vhost_alias and the CGI directory is under the document root
2947      and a user makes a request like http://www.example.com//cgi-bin/cgi
2948      as reported in <news:960999105.344321@ernani.logica.co.uk>
2949      [Tony Finch]
2950
2951   *) Add support for the new Beos NetwOrking Environment (BONE)
2952      [David Reid]
2953
2954   *) xlate: ap_xlate_conv_buffer() now tells the caller when the
2955      final input char is incomplete; ap_bwrite_xlate() now handles
2956      incomplete final input chars.  [Jeff Trawick]
2957
2958   *) Yet another update to saferead/halfduplex stuff -- need to ensure
2959      that a bhalfduplex call occurs before logging or else DNS and
2960      such can delay the last packet of the response.  [Dean Gaudet]
2961
2962   *) Some syscall reduction in APR on unix -- don't seek when setting
2963      up an mmap; and don't fcntl() more than once per socket.
2964      [Dean Gaudet]
2965
2966   *) When mod_cgid is started as root, the cgi daemon now switches 
2967      to the configured User/Group (like other httpd processes) 
2968      instead of continuing as root.  [Jeff Trawick]
2969
2970   *) The prefork MPM now uses an APR lock for the accept() mutex.
2971      It has not been getting a lock at all recently.  httpd -V now 
2972      displays APR's selection of the lock mechanism instead of the 
2973      symbols previously respected by prefork.  [Jeff Trawick]
2974
2975   *) Change the mmap() feature test to check only for existence.
2976      The previous check required features not used by Apache.
2977      [Greg Ames]
2978
2979   *) Fix a couple of bugs in mod_cgid:  The cgi arguments were
2980      sometimes mangled.  The len parm to accept() was not 
2981      initialized, leading sometimes to an endless loop of failed
2982      accept() calls on OS/390 and anywhere else that failed the call
2983      if the len was negative.  Use <sys/un.h> for struct sockaddr_un
2984      instead of declaring it ourselves to fix a compilation problem
2985      on Solaris.  [Jeff Trawick]
2986
2987   *) Add Resource limiting code back into Apache 2.0. [Ryan Bloom]
2988
2989   *) Fix zombie process problem with mod_cgi.  [Jeff Trawick]
2990
2991   *) Port mod_mmap_static to 2.0.  Make it go faster.  [Greg Ames]
2992
2993   *) Fix storage overlay when loading dsos.  Symptom: Apache dies at
2994      initialization if ALLOC_DEBUG is defined; no known symptom 
2995      otherwise.  [Jeff Trawick]
2996
2997   *) Fix typo in configure script when checking for mod_so.  bash
2998      doesn't seem to have a problem but /bin/sh on Solaris does.
2999      Symptom: "./configure: test: unknown operator =="
3000      [Jeff Trawick]
3001    
3002   *) Rebind the Win32 NT and 9x services control into the MPM.  
3003      All console, WinNT SCM and Win9x pseudo-service control code is
3004      now wrapped within the WinNT MPM.
3005      [William Rowe]
3006
3007   *) Make a copy of getenv("PATH") before storing for later use.  Some
3008      getenv() implementations use the same storage for successive calls.
3009      CGIs on OS/390 had a bad PATH due to this.  [Jeff Trawick]
3010
3011   *) Server Tokens work in 2.0 again.  This also propogates the change
3012      to allow just the product name in the server string using
3013      PRODUCT_ONLY.
3014      [Ryan Bloom]
3015
3016 Changes with Apache 2.0a4
3017
3018   *) EBCDIC: Rearrange calls to ap_checkconv() so that most handlers
3019      won't need to call it.  [Greg Ames, Jeff Trawick]
3020
3021   *) Move pre_config hook call to between configuration read and config
3022      tree walk.  This allows all modules to implement pre_config hooks
3023      and know that they will be called at an appropriate time.
3024      [Ryan Bloom] 
3025
3026   *) mod_cgi, mod_cgid: Make ScriptLog directive work again.  
3027      [Jeff Trawick]
3028
3029   *) Add pre-config hooks back to all modules.
3030      [Ryan Bloom]
3031
3032   *) Fix a SIGSEGV in ap_md5digest(), which is used when you have
3033      ContentDigest enabled and we can't/don't mmap the file. 
3034      [Jeff Trawick]
3035
3036   *) We now report the correct line number for syntax errors in config
3037      files.  [Ryan Bloom, Greg Stein, Jeff Trawick]
3038
3039   *) Brought mod_auth_digest up to synch with 1.3, fixed ap_time_t-
3040      related bugs, and changed shmem/locking to use apr API. Shared-mem
3041      is currently disabled, however, because of problems with graceful
3042      restarts. [Ronald Tschalär]
3043
3044   *) Fix corruption of IFS variable in --with-module= handling.  
3045      Depending on the user's shell or customization thereof, there 
3046      would be errors generating ap_config_auto.h later in the configure
3047      procedure.  [Jeff Trawick]
3048
3049   *) mod_cgi: Restore logging of stderr from child process when ScriptLog 
3050      isn't used (as in 1.3), except that on Unix it is now logged via 
3051      ap_log_rerror() instead of by the child having STDERR_FILENO refer
3052      to the error log.  [Greg Ames, Jeff Trawick]
3053
3054   *) Add '-D' argument processing for run time configuration defines.
3055      [William Rowe]
3056
3057   *) Organize http_main.c as independent code, such that no code or
3058      global data is exported from it.  WIN32 will dynamically link it
3059      to the server core, so this will prevent mutual dependency.
3060      [William Rowe]
3061
3062   *) Add separate dynamic linkage tags APR_EXPORT(), APR_EXPORT_NONSTD()
3063      and APR_VAR_EXPORT to correctly resolve apr functions and globals.
3064      [William Rowe]
3065
3066   *) Add Win9x service execution and Ctrl+C/Ctrl+Break/Shutdown handlers.
3067      [William Rowe, Jan Just Keijser <KEIJSERJJ@logica.com>]
3068
3069   *) Add mod_charset_lite for configuring character set translation.
3070      [Jeff Trawick]
3071
3072   *) Add '-n' option to htpasswd to make it print its user:pw record
3073      on stdout rather than having to frob a text file.  [Ken Coar]
3074
3075   *) Fix saferead.  Basically, we flush the output buffer if a read on the
3076      input will block.
3077      [Ryan Bloom]
3078  
3079   *) APR: Add ap_xlate_get_sb() so that an app can find out whether or not
3080      a conversion is single-byte only. [Jeff Trawick]
3081
3082   *) BEOS: ap_shutdown should return APR_SUCCESS or errno. Note that
3083      the BeOS 5.0 documentation says that shutdown doesn't work yet.
3084      [Roy Fielding]
3085
3086   *) Fix some minor errors where pid was being manipulated as an int
3087      instead of the portable pid_t.  [Roy Fielding]
3088
3089   *) Fix some error log prints that were printing the pointer to a
3090      structure rather than the pid within the structure.
3091      [Jeff Trawick, Roy Fielding]
3092
3093   *) ab: Fix a command-line processing bug; track bad headers in 
3094      err_response; support reading headers up to 2K. 
3095      [Ask Bjoern Hansen <ask@valueclick.com>]
3096
3097   *) Fix ap_resolve_env() so that it handles new function added in a prior
3098      alpha (see "Added the capability to do ${ENVVAR} constructs in the
3099      config file.") as well as the constructs used by mod_rewrite.
3100      [Paul Reder <rederpj@raleigh.ibm.com>]
3101
3102   *) Apache 2.0 builds and runs on OS/390. [Jeff Trawick, Greg Ames]
3103
3104   *) Change the EBCDIC support in functions for MD5, SHA1, and base 64 to use
3105      APR to perform translation, instead of accessing the hard-coded tables
3106      in 1.3's ebcdic.c. [Jeff Trawick]
3107
3108   *) Fix some bugs (mostly lost 1.3 code) in ab's command-line processing. 
3109      [Jeff Trawick]
3110
3111   *) Add the ability to hook into the config file reading phase.  Basically
3112      if a directive is specified EXEC_ON_READ, then when that directive is
3113      read from the config file, the assocaited function is executed.  This
3114      should only be used for those directives that must muck with HOW the
3115      server INTERPRETS the config.  This should not be used for directives
3116      that re-order or replace items in the config tree.  Those changes should
3117      be made in the pre-config step.
3118      [Ryan Bloom]
3119
3120   *) Add mod_example to the build system.
3121      [Tony Finch]
3122
3123   *) APR: Add ap_xlate_conv_byte() to convert one char between single-
3124      byte character sets. [Jeff Trawick]
3125
3126   *) Pick up various EBCDIC fixes from 1.3 (from Martin
3127      Kraemer and Oliver Reh originally according to the change log).
3128      [Jeff Trawick]
3129
3130   *) Fix a couple of problems in RFC1413 support (controlled by the
3131      IdentityCheck directive).  Apache did not build the request string
3132      properly and more importantly Apache would loop forever if the 
3133      would-be ident server dropped the connection before sending a
3134      properly terminated response. [Jeff Trawick]
3135
3136   *) apxs works in 2.0.
3137      [Ryan Bloom]
3138
3139   *) Reliable piped logs work in 2.0.
3140      [Ryan Bloom]
3141
3142   *) Introduce a hash table implementation into APR to be used for
3143      replacing tables and other random data structures in Apache.
3144      [Tony Finch]
3145
3146   *) Add some more error reporting to htpasswd in the case of problems
3147      generating or accessing the temporary file.  Also, pass in a
3148      buffer if the implementation knows how to use it (i.e., if L_tmpnam
3149      is defined).  [Ken Coar]
3150
3151   *) Configure creates config.nice now containing your configure
3152      options. Syntax: ./config.nice [--more-options]
3153      [Sascha Schumann]
3154
3155   *) Fix various return code problems in APR on Win32.  For most of
3156      these, APR was returning APR_EEXIST instead of GetLastError()/
3157      WSAGetLastError().  [Jeff Trawick]
3158
3159   *) Make piped logs work again in version 2.0
3160      [Ryan Bloom]
3161
3162   *) Add VPATH support to UNIX build system of Apache and APR.
3163      [Sascha Schumann]
3164
3165   *) Fix ap_tokenize_to_argv to respect the const arguments that are
3166      passed to it.
3167      [Ryan Bloom]
3168
3169   *) Fix mm's memcpy/memset macros, pointer arithmetic was broken.
3170      Patch submitted to author.
3171      [Sascha Schumann]
3172
3173   *) Fix mm configuration on Solaris 8 x86 and OS/390.  Don't require
3174      /sbin in PATH on FreeBSD (all submitted to rse previously) 
3175      [Jeff Trawick]
3176
3177   *) Fix building Pthread-based MPMs on OpenBSD
3178      [Sascha Schumann] PR#26
3179
3180   *) Fix ap_readdir() problem on systems where d_name[] field in
3181      struct dirent is declared with only one byte.  (This problem only 
3182      affected multithreaded builds.)  This caused a segfault during
3183      pool cleanup with mod_autoindex on Solaris (Solaris 8 x86, at 
3184      least). [Jeff Trawick]
3185
3186   *) Fix some make-portability problems on at least Tru64, Irix
3187      and UnixWare.
3188      [Sascha Schumann] PR#18, PR#39
3189
3190   *) Add ap_sigwait() to support old-style sigwait() on systems
3191      like OS/390 and UnixWare.
3192      [Sascha Schumann] 
3193
3194   *) Add POSIX-thread flags for more platforms.
3195      [Sascha Schumann]
3196
3197   *) Fix some minor bugs in ap_strerror().  Teach ap_strerror()
3198      (on Unix, at least) to handle resolver errors.  Fix a bug in
3199      the definition of APR_ENOMEM so that ap_strerror() can spit
3200      out the correct error message for it.
3201      [Jeff Trawick]
3202
3203 Changes with Apache 2.0a3
3204
3205   *) mod_so reports ap_os_dso_error() if ap_dso_load() fails
3206      [Doug MacEachern]
3207
3208   *) API: *HOOK* macros now have an AP_ prefix
3209      [Doug MacEachern]
3210
3211   *) Win32: Eliminate redundant calls to initialize winsock.
3212      [Tim Costello <timcostello@ozemail.com.au>]
3213
3214   *) Fix bugs initializing ungetchar for pipes. 
3215      [Chia-liang Kao <clkao@CirX.ORG>]
3216
3217   *) The ab program in the src/support directory is now portable using
3218      APR.
3219      [Ryan Bloom]
3220
3221   *) Support directory is being compiled when the server is built
3222      [Ryan Bloom]
3223
3224   *) The configure option --with-program-name has been added to allow
3225      developers to rename the executable at configure time.  This also
3226      changes the name of the config files to match the executable's name.
3227      [Ryan Bloom]
3228
3229   *) mod_autoindex: Add `IndexOptions +VersionSort', to nicely sort filenames
3230      containing version numbers. [Martin Pool]
3231
3232   *) ap_open(..,APR_OS_DEFAULT,..) uses perms 0666 instead of 0777 on
3233      Unix; access_log and error_log now created with these perms; non-
3234      Unix is unaffected [Jeff Trawick]
3235      
3236   *) Finished move of ap_md5 routines to apr_md5.  Removed ap_md5.h.
3237      Replaced more magic numbers with MD5_DIGESTSIZE.
3238      [William Rowe, Roy Fielding]
3239
3240   *) Win32: Get mod_auth_digest compiling and added to the Windows
3241      build environment. Not tested and I'd be suprised if it 
3242      actually works. [Bill Stoddard]
3243
3244   *) Revamp the Win32 make environment. Makefiles have been removed and
3245      Apache.dsw created to bring together all the pieces. Create new file
3246      os/win32/BaseAddr.ref to define module base addresses (to prevent
3247      dll relocation at start-up).
3248      [William Rowe, Greg Marr, Tim Costello, Bill Stoddard]
3249
3250   *) [EBCDIC] Port Paul Gilmartin's CRLF patch from 1.3.  This replaces most
3251      of the \015, \012, and \015\012 constants with macros.
3252      [Greg Ames <gregames@us.ibm.com>]
3253      
3254   *) Add ap_xlate_open() et al for translation of text between different 
3255      character sets.  The initial implementation requires iconv().
3256      [Jeff Trawick]
3257
3258   *) More FAQs and answers from comp.infosystems.www.servers.unix.
3259      [Joshua Slive <slive@finance.commerce.ubc.ca>]
3260
3261   *) CGI output is being timed out now.
3262      [Ryan Bloom]
3263
3264   *) Fix the problem with dieing quietly.  dupfile now takes a pool which
3265      is used by the new apr file.  There is no reason to create a new file
3266      with the same lifetime as the original file.
3267      [Ryan Bloom] 
3268
3269   *) Win32: Attempt to eliminate dll relocation at start-up by specifying
3270      module base addresses. This will help shooting seg faults
3271      in the field. [William Rowe <wrowe@lnd.com>]
3272
3273   *) Update Apache on Windows documentation. Add new document
3274      describing how to compile Apache on Windows.
3275      [William Rowe <wrowe@lnd.com>]
3276
3277   *) ap_set_pipe_timeout(), ap_poll(), and APR_SO_TIMEOUT now take 
3278      microseconds instead of seconds.  Some storage leaks and other
3279      minor bugs in related code were fixed.  [Jeff Trawick]
3280
3281   *) Win32: First cut at getting mod_isapi working under 2.0
3282      [William Rowe <wrowe@lnd.com>]
3283
3284   *) First stab at getting mod_auth_digest working under 2.0
3285      quick change summary:
3286      - moved the random byte generation (ap_generate_random_bytes) into APR
3287      - now uses ap_time_t
3288      - compiles and runs on linux
3289      - tested with amaya
3290      [Brian Martin <bmartin@penguincomputing.com>]
3291
3292   *) Win32: Move the space stripping of physical service names
3293      fix up from Apache 1.3. #include'ing "ap_mpm.h" fixes up an
3294      unresolved symbol. Add dependency checking to the
3295      CreateService call to ensure TCPIP and AFP (winsock) is started
3296      before Apache.
3297      [William Rowe <wrowe@lnd.com>]
3298
3299   *) Win32: Add code to perform latebinding on functions that may
3300      not exist on all levels of Windows where Apache runs. This
3301      is needed to allow Apache to start-up on Win95/98. All calls
3302      to non portable functions should be protected with
3303      ap_oslevel checks to prevent runtime segfaults. 
3304      [William Rowe <wrowe@lnd.com>]
3305
3306   *) Fix fallback default values for SHM_R and SHM_W [Martin Kraemer]
3307
3308   *) Get lingering_close() working again. [Dean Gaudet, Jeff Trawick]
3309
3310   *) Win32: Get non-blocking CGI pipe reads working under Windows NT.
3311      This addresses PR 1623. Still need to address timing out runaway
3312      CGI scripts. [Bill Stoddard]
3313  
3314   *) Win32: Make ap_stat Windows 95/98 friendly
3315      [William Rowe <wrowe@lnd.com>]                                            
3316
3317   *) Win32: Fix a bug in ap_get_oslevel which causes GetVersionEx() to 
3318      always fail. Need to initialise the dwOSVersionInfoSize member of the 
3319      OSVERSIONINFO struct before calling GetVersionEx, so GetVersionEx 
3320      always fails. 
3321
3322      The patch also enhances ap_get_oslevel (and the associated enum) to 
3323      handle selected service packs for NT4, and adds recognition for 
3324      Windows 2000. This is useful, eg. if we can recognise NT4 SP2 then 
3325      we can use ReadFileScatter and WriteFileGather in readwrite.c. 
3326      [Tim Costello <Tim.Costello@BTFinancialgroup.com>]
3327
3328   *) Get mod_rewrite building and running, and mod_status building for Win NT
3329      [Allan Edwards <ake@raleigh.ibm.com>]
3330
3331   *) Patch to port mod_auth_db to the 2.0 api and also to support 
3332      Berlekey DB 3.0. It works for me with both Berkeley DB 3.0.55 and 
3333      2.7.7.  It should work with version 1 as well but I haven't tested it.  
3334      [Brian Martin <bmartin@penguincomputing.com>]
3335
3336   *) Get APR DSO code working under Windows. Includes cross platform
3337      fixes to mod_so.c.
3338      [Tim.Costello@BTFinancialgroup.com]
3339
3340   *) Fix some of the Windows APR time functions.
3341      [William Rowe]
3342
3343   *) FAQ changes related to tidying up historical documents on the web site.
3344      [Joshua Slive <slive@finance.commerce.ubc.ca>]
3345
3346   *) Move Windows DSO code into APR.
3347      [Bill Stoddard]
3348
3349   *) Eliminate apr_win.h and apr_winconfig.h (and the ugly #ifdefs they cause).
3350      Now, apr.h and apr_config.h are generated from apr.hw and apr_config.hw
3351      at build time. At this point, the server will not compile on Windows because
3352      of the recent DSO commits. Fixing those next.
3353      [Bill Rowe & Bill Stoddard]
3354
3355   *) Added error checking for file I/O APR routines.
3356      [Jon Travis <jtravis@covalent.net>]
3357
3358   *) APR: Don't use the values of resolver error codes for the 
3359      corresponding APR error codes.  On Unix and Win32, return the 
3360      proper APR error code after a resolver error. [Jeff Trawick]
3361
3362 Changes with Apache 2.0a2
3363
3364   *) Renamed the executable back to httpd on all platforms other 
3365      than Win32
3366      [Ryan Bloom]
3367
3368   *) Allow BeOS to survive restarts, log properly and a few
3369      small things it had problems with due to the way it setup
3370      users and groups. [David Reid]
3371
3372   *) Get mod_rewrite working with APR locks
3373      [Paul Reder <rederpj@raleigh.ibm.com>]
3374
3375   *) Actually remove the sempahore when the lock cleanup routine
3376      is called on BeOS. [David Reid]
3377
3378   *) Clear hook registrations between reads of the config file.
3379      When DSOs are unloaded and re-loaded the old hook pointers may
3380      no longer be valid. This fix eliminates potential segfaults.
3381      [Allan Edwards <ake@raleigh.ibm.com>]
3382
3383   *) Fix a problem with Sigfunc not being defined or bypassed
3384      if sigaction() wasn't found. [Jim Jagielski]
3385
3386   *) Fix the locking mechanism on BSD variants.  They now use fcntl
3387      locks.  This allows the server to start and serve pages.
3388      [Ryan Bloom]
3389
3390   *) First cut at getting the Win32 installer to work
3391      [William Rowe <wrowe@lnd.com>]
3392
3393   *) Get htpasswd compiling under Windows
3394      [William Rowe <wrowe@lnd.com>]
3395
3396   *) Change the log message for a bind() failure to show the
3397      interface and port number. [Jeff Trawick]
3398
3399   *) Import the documentation from 1.3.12 and bring parts of it
3400      up-to-date with respect to the changes that have occurred
3401      in 2.0.
3402      [Tony Finch]
3403
3404   *) BeOS MPM updated.  CGI bug on BeOS fixed.  IP addresses
3405      now logged correctly on BeOS.
3406      [David Reid]
3407
3408   *) Create one makefile for all Win32 distributions (NT/2000/95/98).
3409      Makefile.win includes the same user interface as the old 
3410      Makefile.nt 
3411      [William Rowe <wrowe@lnd.com>, Jeff Trawick <trawick@us.ibm.com>]
3412
3413   *) Win32 exec now uses COMSPEC environment string for command 
3414      shell path resolution.
3415      [William Rowe <wrowe@lnd.com>] PR#3715
3416
3417   *) Win32: ap_connect() was not returning correct error condition
3418      PR5866
3419      [Allen Prescott <allen@clanprescott.com>]
3420
3421   *) Win32: ap_open() was broken on Win9x because an NT-specific
3422      flag was passed to CreateFile.  ap_puts() added an unnecessary
3423      '\n'.
3424      [Jeff Trawick <trawick@us.ibm.com>]
3425
3426   *) Put in Korean and Norwegian index.html pages (2.0 and 1.3)
3427      which where donated by Lee Kuk Hyun and Lorant Czaran. 'Fixed'
3428      confusing ee/et name and made all extensions language/dialect
3429      rather than country reflecting. Changed example files to
3430      explicit reflect the ISO charset and added a few common 
3431      ones to the example config [dirkx]
3432
3433   *) Extend external module capability.  To use this, you call
3434      configure with --with-module=path/to/mod1,path/to/mod2,etc.
3435      [Ryan Bloom]
3436
3437   *) Backported the various "default charset" fixes from 1.3.12,
3438      including the AddDefaultCharset directive. [Jim Jagielski]
3439
3440   *) Added the capability to do ${ENVVAR} constructs in the
3441      config file. E.g. 'ServerAdmin ${POSTMASTER}'. As commited
3442      it does this on a line by line basis; i.e. if the envvar
3443      expands to something with spaces you have to protect it
3444      by adding quotes around it (Unless of course you expect it
3445      to contains more than one argument. Alternatively you
3446      can compile it on a per token basis; which is what people
3447      usually expect by setting RESOLVE_ENV_PER_TOKEN. But this
3448      hampers fancier hacks.
3449      [Dirk-Willem van Gulik]
3450
3451   *) Changed the 'ErrorDocument' syntax in that it NO longer
3452      supports the asymetric
3453
3454                 ErrorDocument 301 "Some message
3455
3456      Note the opening " quote, without a closing quote. It now
3457      has either the following syntaxes
3458
3459                 ErrorDocument XXX /local/uri
3460                 ErrorDocument XXX http://valid/url
3461                 ErrorDocument XXX "Some Message"
3462
3463      The recognition heuristic is: if it has a space it
3464      is a message. If it has no spaces and starts with a /
3465      or is a valid URL then treat it that way. Otherwise it
3466      is assumed to be a message.
3467
3468      This breaks backward compatibility but makes live a hell
3469      of a lot easier for GUI's and config file parsers.
3470      [Dirk-Willem van Gulik]
3471
3472   *) Changed 'CacheNegotiatedDocs' from its present/not-present
3473      syntax into a 'on' or 'off' syntax. As it currently is the
3474      only non nesting token which uses NO_ARGS and thus is an
3475      absolute pain for any config interface automation. This
3476      breaks backward compatibility. [Dirk-Willem van Gulik]
3477
3478   *) Add ability to add external modules to the build process.  This is
3479      done with --with-module=/path/to/module.  Modules can only be added
3480      as static modules at this point.
3481      [Ryan Bloom]
3482
3483 Changes with Apache 2.0a1
3484
3485   *) Fix FreeBSD 3.3 core dump.
3486      Basically, ap_initialize() needs to get called before 
3487      create_process(), since create_process() passes op_on structure
3488      to semop() to get a lock, but op_on isn't initialized until 
3489      ap_initialize() calls setup_lock().  Here is a slight
3490      rearrangement to main() which calls ap_initialize() earlier...
3491      [Jeff Trawick <trawick@us.ibm.com>]
3492
3493   *) Enable Apache to use sendfile/TransmitFile API
3494      [Bill Stoddard, David Reid, Paul Reder]
3495
3496   *) Re-Implement Win32 APR network I/O APIs and most of the file I/O
3497      APIs.
3498      [Bill Stoddard]
3499
3500   *) Make file I/O and network I/O writev/sendv APIs consistent.
3501      Eliminate use of ap_iovec_t and use Posix struct iovec.
3502      Use seperate variable on ap_writev to set the number of iovecs
3503      passed in and number of bytes written.
3504      [Bill Stoddard]
3505
3506   *) Adapt file iol to use APR functions. Replaced ap_open_file() 
3507      with ap_create_file_iol(). ap_create_file_iol() requires that 
3508      the file be opened prior to the call using ap_open().
3509      [Bill Stoddard]
3510
3511   *) Port mod_include and mod_cgi to 2.0
3512      [Paul Reder, Bill Stoddard]
3513
3514   *) ap_send{,v}, ap_recv, ap_sendfile API clarification --
3515      bytes_read/bytes_written is always valid (never -1).  Plus
3516      some fixes to buff.c to correct problems introduced by the
3517      errno => ap_status_t changes a while back.  Plus a fix to
3518      chunked encoding introduced right at the beginning of 2.0.
3519      [Dean Gaudet]
3520
3521   *) Revamped UNIX build system to use autoconf and libtool.
3522      [Manoj Kasichainula, Sascha Schumann]
3523
3524   *) port mod_rewrite to 2.0. [Paul J. Reder <rederpj@raleigh.ibm.com>]
3525
3526   *) More rigorous checking of Host: headers to fix security problems
3527      with mass name-based virtual hosting (whether using mod_rewrite
3528      or mod_vhost_alias).
3529      [Ben Hyde, Tony Finch]
3530   
3531   *) Add back support for UseCanonicalName in <Directory> containers.
3532      [Manoj Kasichainula]
3533
3534   *) Added APLOG_STARTUP log type.  This allows us to write an error
3535      message without any of the date and time information.  As a part
3536      of this change, I also removed all of the calls to fprintf(stderr
3537      and replaced them with calls to ap_log_error using APLOG_STARTUP
3538      writing to stderr is no longer portable, because we don't direct 
3539      stderr to the error log on all platforms.
3540      [Ryan Bloom] 
3541  
3542   *) Convert error logging functions to take errno as an argument.
3543      This makes our error logs more portable, because some Windows API's 
3544      don't set errno.  This change allows us to still output a valid
3545      message on all of our platforms.
3546      [Ryan Bloom]
3547
3548   *) mod_mime_magic runs in 2.0-dev now.
3549      [Paul Reder <rederpj@raleigh.ibm.com>]
3550
3551   *) sendfile has been added to APR.
3552      [John Zedlewski <zedlwski@Princeton.EDU>]
3553
3554   *) buff.c has been converted to no longer use errno.
3555      [Manoj Kasichainula]
3556
3557   *) mod_speling runs in 2.0-dev now: a bug in readdir_r handling and
3558      interface adaption to APR functions did it. [Martin Kraemer]
3559
3560   *) Support DSOs properly on 32-bit HP-UX 11.0
3561      [Dilip Khandekar <dilip@cup.hp.com>]
3562
3563   *) Updated MM in APR source tree from version 1.0.8 to 1.0.11
3564      [Ralf S. Engelschall]
3565
3566   *) Cleaned APR build environment integration and bootstrap APR 
3567      automatically for developers from src/Configure.
3568      [Ralf S. Engelschall]
3569
3570   *) Fixed building of src/support/htpasswd.c
3571      [Ralf S. Engelschall]
3572
3573   *) When generating the Location: header, mod_speling forgot
3574      to escape the spelling-fixed uri. (Forw-Port from 1.3)
3575      [Martin Kraemer]
3576
3577   *) Moved mod_auth_digest.c from experimental to standard. [Roy Fielding]
3578
3579   *) Change all pools to APR contexts.  This is the first step to
3580      incorporating APR into Apache. [Ryan Bloom]
3581
3582   *) Move "handler not found" warning message to below the check
3583      for a wildcard handler.  [Dirk <dirkm@teleport.com>, Roy Fielding]
3584      PR#2584, PR#2751, PR#3349, PR#3436, PR#3548, PR#4384, PR#4795, PR#4807
3585
3586   *) Support line-continuation feature in config.option file and
3587      allow the loading of multiple option sections at once via
3588      ``--with-option=<section1>,<section2>,...''
3589      [Ralf S. Engelschall]
3590
3591   *) Rebuilt CVS repository with Apache 1.3.9 as basis.  [Roy Fielding]
3592
3593 Changes with Apache MPM
3594
3595   *) Use asynchronous AcceptEx() and a completion port to accept and
3596      dispatch connections to threads in Windows NT/2000. 
3597      [Bill Stoddard]
3598
3599   *) Implement WINNT Win32 MPM from original Win32 code in http_main.c
3600      [Bill Stoddard]  
3601
3602   *) Implement the APACI --with-option facility 
3603      (per default used the config.option file).
3604      [Ralf S. Engelschall]
3605
3606   *) MPM BEOS port.  [David Reid <abb37@dial.pipex.com>]
3607
3608   *) Start to implement module-defined hooks that are a) fast and b) typesafe.
3609      Replace pre_connection module call with a register_hook call and
3610      implement pre_connection as a hook. The intent is that these hooks will
3611      be extended to allow Apache to be multi-protocol, and also to allow the
3612      calling order to be specified on a per-hook/per-module basis.
3613      [Ben Laurie]
3614
3615   *) Implement mpm_* methods as "modules". Each method gets its own
3616      subdir in src/modules (eg: src/modules/prefork). Selection
3617      of method uses Rule MPM_METHOD.  [Jim Jagielski]
3618
3619   *) Port the hybrid server from the apache-apr repository as
3620      mpm_mpmt_pthread.  [Manoj Kasichainula]
3621
3622   *) os/unix/unixd.[ch]: detach, setuid, setgid, stuff which will be common
3623      amongst the unix MPMs.
3624
3625   *) mpm_prefork: throw away all the alarm/timeout crud; and clean up the
3626      signal handling for the new world order.  [Dean Gaudet]
3627
3628   *) Crude ap_thread_mutex abstraction so that we get the pthread stuff out
3629      of alloc.c for now.  [Dean Gaudet]
3630
3631   *) Handle partial large writes correctly.  [Ben Laurie]
3632
3633   *) Eliminate conn_rec's pointer to server. All it knows is the base server
3634      based on IP/port.  [Ben Laurie]
3635
3636   *) Port a bunch of modules to the new module structure.
3637      ["Michael H. Voase" <mvoase@midcoast.com.au>]
3638
3639   *) I/O layering and BUFF revamp.  See docs/buff.txt.  [Dean Gaudet]
3640
3641   *) Basic restructuring to introduce the MPM concept; includes various
3642      changes to the module API... better described by
3643      docs/initial_blurb.txt.  [Dean Gaudet]
3644
3645 Changes with Apache pthreads
3646
3647   *) New buff option added: BO_TIMEOUT. It describes the timeout for
3648      buff operations (generally over a network).
3649      [Dean Gaudet, Ryan Bloom, Manoj Kasichainula]
3650
3651   *) Created http_accept abstraction. Added 4 new functions (not exported):
3652      init_accept(), begin_accepting_requests(), get_request(), 
3653      stop_accepting_requests() [Bill Stoddard]
3654
3655   *) Fix to ap_rprintf call that allows mod_info to work properly.
3656      [James Morris <jmorris@intercode.com.au>]
3657
3658   *) user and ap_auth_type fields were moved from connection_rec to 
3659      request_rec. [Ryan Bloom] 
3660
3661   *) Removed the ap_block_alarms and ap_unblock_alarm calls.  These aren't
3662      needed in a threaded server.
3663
3664   *) Initial pthread implementation from from Dean's apache-nspr code.
3665      [Bill Stoddard, Ryan Bloom]
3666
3667
3668 Changes with Apache 1.3.9
3669
3670   *) Remove bogus error message when a redirect doesn't set Location.
3671      Instead, use an empty string to avoid coredump if the error message
3672      was supposed to include a location.  [Roy Fielding]
3673
3674   *) Don't allow configure to include mod_auth_digest unless it is
3675      explicitly requested, even if the user asked for all modules.
3676      [Roy Fielding]
3677
3678   *) Translate module names to dll names for OS/2 so that they are no more
3679      than 8 characters long and have an extension of "dll" instead of "so".
3680      [Brian Havard]
3681
3682   *) Print out pointer to Rule DEV_RANDOM when truerand lib not found.
3683      Fix test-compile check to check for randbyte instead of trand32.
3684      Use ap_base64encode_binary/decode instead of copy in mod_auth_digest.c
3685      and tweak to make Amaya happier.  [Ronald Tschalär]
3686
3687   *) Ensure that the installed expat include files are world readable,
3688      just like the other header files.  [Martin Kraemer]
3689
3690   *) Fixed generated AddModule adjustments in APACI's `configure' script
3691      in order to allow (new) modules like mod_vhost_alias to be handled
3692      correctly (which was touched by the adjustments for mod_alias).
3693      [Ralf S. Engelschall]
3694
3695   *) For binary builds, add -R flag to apachectl to work around the lack of
3696      an absolute path to the ./libexec directory where the libhttp.ep file
3697      is needed for SHARED_CORE architectures.  [Randy Terbush]
3698
3699   *) WIN32: Create the CGI script process as DETACHED.  This may solve the
3700      problem observed by some Win95/98 users where they get CGI script
3701      output sent to the console.  [Bill Stoddard]
3702
3703   *) Fix (re)naming in the uuencode/decode section. The ap/ap_
3704      routines are now called ap_base64* and are 'plain' (i.e., no 
3705      pool access or anything clever). Inside util.c the routines acting
3706      like pstrdup are called ap_pbase64encode() and ap_pbase64decode().
3707      The oddly named ap_uuencode(), ap_uudecode() are kept around for
3708      now but deprecated.  [dirkx]
3709
3710   *) Clean up the base64 and SHA1 additions and make sure they are
3711      represented in the ApacheCore.def, ApacheCoreOS2.def, and httpd.exp
3712      files.  [Roy Fielding]
3713
3714   *) WIN32: Migrate to InstallShield 5.5 and provide a bit more error
3715      checking.  Allow compiling on VS 6.0.  [Randy Terbush]
3716
3717   *) Fixed assumption of absolute paths in binbuild.sh.  [Tony Finch]
3718
3719   *) Use TestCompile to search for the truerand library (rather than blindly
3720      assuming its existence). If it is not found, complain (but do not
3721      exit - yet).  [Martin Kraemer]
3722
3723   *) We forgot to add the new exported function names to
3724      src/support/httpd.exp.  [Bill Stoddard, Randy Terbush]
3725
3726   *) Add description of -T command-line option to usage().
3727      [Ralf S. Engelschall]
3728
3729   *) For "some" platforms (notably, EBCDIC based ones), libos needs to be
3730      searched only AFTER libap has been searched, because libap needs
3731      some symbols from libos.  [Martin Kraemer]
3732
3733   *) Fix conflict with original mod_digest related to the symbol of the
3734      module dispatch list (which has to be unique for DSO and follow the
3735      usual conventions for the installation procedure).
3736      [Ralf S. Engelschall]
3737
3738   *) Add a dbm-library check for the "usual places" (-ldbm, -lndbm, -ldb)
3739      for other platforms as well.  [Martin Kraemer]
3740
3741   *) Make ap_sha1.c compile for EBCDIC platforms: replace remaining LONG
3742      types by AP_LONG and replace reference to renamed variable 'ubuf'
3743      by 'buffer'.  [Martin Kraemer]
3744
3745 Changes with Apache 1.3.8 [not released]
3746
3747   *) Flush the output buffer immediately after sending an error or redirect
3748      response, since the result may be needed by the client to abort a
3749      long data transfer or restart a series of pipelined requests.
3750      [Tom Vaughan <tvaughan@aventail.com>, Roy Fielding]
3751
3752   *) PORT: Improved compilation and DSO support on Sequent DYNIX/ptx.
3753      [Ian Turner <iant@sequent.com>] PR#4735
3754
3755   *) Local struct mmap in http_core.c conflicted with system structure
3756      name on DYNIX -- changed to mmap_rec.  [Roy Fielding] PR#4735
3757
3758   *) Added updated mod_digest as modules/experimental/mod_auth_digest.
3759      [Ronald Tschalär <ronald@innovation.ch>]
3760
3761   *) Fix a memory leak where the module counts were getting messed
3762      up across restarts.  [David Harris <dharris@drh.net>]
3763
3764   *) CIDR addresses such as a.b.c.d/24 where d != 0 weren't handled
3765      properly in mod_access.
3766      ["Paul J. Reder" <rederpj@raleigh.ibm.com>] PR#4770
3767
3768   *) RewriteLock/RewriteMap didn't work properly with virtual hosts.
3769      [Dmitry Khrustalev <dima@bog.msu.su>] PR#3874
3770
3771   *) PORT: Support for compaq/tandem/com.
3772      [Michael Ottati <michael.ottati@compaq.com>, dirkx]
3773
3774   *) Added SHA1 password encryption support to easy migration from 
3775      Netscape servers. See support/SHA1 for more information.
3776      Caused the separation of ap_md5.c into md5, sha1 and a general
3777      ap_checkpass.c with just a validate_passwd routine. Added a
3778      couple of flags to support/htpasswd. Some reuse of the to64()
3779      function; hence renamed to ap_to64().
3780      [Dirk-Willem van Gulik, Clinton Wong <clintdw@netcom.com>]
3781
3782   *) Change for EBCDIC platforms (TPF and BS2000) to correctly deal
3783      with ASCII/EBCDIC conversions in "ident" query.
3784      [David McCreedy <McCreedy@us.ibm.com>]
3785
3786   *) Get rid of redefinition warning on MAC_OS_X_SERVER platform.
3787      Change "Power Macintosh" to Power* so if uname prints "Power Book"
3788      we're still happy on Rhapsody platforms.  [Wilfredo Sanchez]
3789
3790   *) Fix SIGSEGV on some systems because the Vary fix below included
3791      a call to table_do with a variable argument list that was not
3792      NULL terminated.  Replaced with better implementation. [Roy Fielding]
3793
3794 Changes with Apache 1.3.7 [not released]
3795
3796   *) The "Vary" response header field is now sanitised right before
3797      the header is sent back to the client.  Multiple "Vary" fields
3798      are combined, and duplicate tokens (e.g., "Vary: host, host" or
3799      "Vary: host, negotiate, host, accept-language") are reduced to
3800      single instances.  This is a better solution than the force-no-vary
3801      one (which is still valid for clients that can't cope with Vary
3802      at all).  PR#3118 [Dean Gaudet, Roy Fielding, Ken Coar]
3803
3804   *) Portability changes for BeOS. [David Reid abb37@dial.pipex.com]
3805
3806   *) Link DSO's with "gcc -shared" instead of "ld -Bshareable" at 
3807      least on Linux and FreeBSD for now.  
3808      [Rasmus Lerdorf]
3809
3810   *) Win32: More apache -k restart work. Restarts are now honored
3811      immediately and connections in the listen queue are -not- lost.
3812      This is made possible by the use of the WSADuplicateSocket()
3813      call.  The listeners are opened in the parent, duplicated, then
3814      the duplicates are passed to the child. The original listen sockets 
3815      are not closed by the parent across a restart, thus the listen queue 
3816      is preserved.
3817      [Bill Stoddard <stoddard@raleigh.ibm.com>]
3818
3819   *) Fix handling of case when a client has sent "Expect: 100-continue"
3820      and we are going to respond with an error, but get stuck waiting to
3821      discard the body in the pointless hope of preserving the connection.
3822      [Roy Fielding, Joe Orton <jeo101@york.ac.uk>] PR#4499, PR#3806
3823
3824   *) Fix 'configure' to work correctly with SysV-based versions of
3825      'tr' (consistent with Configure's use as well). [Jim Jagielski]
3826
3827   *) apxs: Add "-S var=val" option which allows for override of CFG_*
3828      built-in values. Add "-e" option which works like -i but doesn't
3829      install the DSO; useful for editing httpd.conf with apxs. Fix
3830      editing code so that multiple invocations of apxs -a will not
3831      create duplicate LoadModule/AddModule entries; apxs can now be
3832      used to re- enable/disable a module.  [Wilfredo Sanchez]
3833
3834   *) Win32: Update the server to use Winsock 2. Specifically, link with
3835      ws2_32.lib rather than wsock32.lib.  This gives us access to 
3836      WSADuplcateSocket() in addition to some other enhanced comm APIs.
3837      Win 95 users may need to update their TCP/IP stack to pick up
3838      Winsock 2. (See http://www.microsoft.com/windows95/downloads/)
3839      [Bill Stoddard stoddard@raleigh.ibm.com]
3840
3841   *) Win32: Redirect CGI script stderr (script debug info) into the 
3842      error.log when CGI scripts fail. This makes Apache on Win32 
3843      behave more like Unix.      
3844      [Bill Stoddard stoddard@raleigh.ibm.com]
3845
3846   *) Fixed `httpd' usage display: -D was missing.
3847      [Ralf S. Engelschall] PR#4614
3848
3849   *) Fix `make r' test procedure in src/regex/: ap_isprint was not found.
3850      [Ralf S. Engelschall] PR#4561, PR#4562
3851
3852   *) OS/2: Fix problem with accept lock semaphores where server would die with
3853      "OS2SEM: Error 105 getting accept lock. Exiting!" 
3854      [Brian Havard] PR#4505
3855
3856   *) Add DSO support for DGUX 4.x using gcc. Tested on x86 platforms.
3857      [Randy Terbush <randy@covalent.net>]
3858  
3859   *) Add the new mass-vhost module (mod_vhost_alias.c) developed and
3860      used by Demon Internet, Ltd. [Tony Finch <fanf@demon.net>]
3861
3862   *) Better GCC detection for DSO flags under Solaris 2 where the `cc' 
3863      command potentially _is_ GCC. [Ralf S. Engelschall]
3864
3865   *) Fix apxs build issues on AIX 
3866      [Rasmus Lerdorf <rasmus@raleigh.ibm.com>]
3867
3868   *) DocumentRoot Checking: Under previous versions, when Apache
3869      first started up, it used to do a stat of each DocumentRoot to
3870      see if it existed and was a directory. If not, then an error
3871      message was printed. THIS HAS BEEN DISABLED. If DocumentRoot
3872      does not exist, you will get error messages in error_log. If
3873      the '-t' command line option is used (to check the configuration)
3874      the check of DocumentRoot IS performed. An additional command
3875      line option, '-T', has been added if you want to avoid the
3876      DocumentRoot check even when checking the configuration.
3877      [Jim Jagielski]
3878
3879   *) Win32: The query switch "apache -S" didn't exit after showing the
3880      vhost settings. That was inconsistent with the other query functions.
3881      [Bill Stoddard - Fixed by Martin on Unix in 1.3.4]
3882
3883   *) Win32: Changed behaviour of apache -k restart. 
3884      Previously, the server would drain all connections in the stack's
3885      listen queue before honoring the restart. On a busy server, this
3886      could take hours.  Now, a restart is honored almost immediately. 
3887      All connections in Apache's queues are handled but connections in 
3888      the stack's listen queue are discarded. Restart triggered by 
3889      MaxRequestPerChild is unchanged.
3890      [Bill Stoddard <stoddard@raleigh.ibm.com>]
3891
3892   *) Win32: Eliminated unnecessary call to wait_for_multiple_objects in
3893      the accept loop. Good for a 5% performance boost. Cleaned up 
3894      parent/child process management code. 
3895      [Bill Stoddard <stoddard@raleigh.ibm.com>]
3896
3897   *) Added ceiling on file size for memory mapped files.
3898      [John Giannandrea <jg@meer.net>] PR#4122
3899
3900   *) Fix ndbm.h include problems with brain-dead glibc >= 2.1 which 
3901      has ndbm.h in a non-standard db1/ subdir. PR#4431, PR#4528
3902      [Henri Gomez <gomez@slib.fr>, Ralf S. Engelschall] 
3903
3904   *) Determine AP_BYTE_ORDER for ap_config_auto.h and already
3905      use this at least for Expat. [Ralf S. Engelschall]
3906
3907   *) Allow .module files to specify libraries with Lib:.
3908      [Ben Laurie]
3909
3910   *) Allow SetEnvIf[NoCase] to test environment variables as well
3911      as header fields and request attributes.  [Ken Coar]
3912
3913   *) Fix mod_autoindex's handling of ScanHTMLTitles when file
3914      content-types are "text/html;parameters".  PR#4524  [Ken Coar]
3915
3916   *) Remove "mxb" support from mod_negotiation -- it was a draft feature
3917      never accepted into any standard, and it opens up certain DoS
3918      attacks.  [Koen Holtman <Koen.Holtman@cern.ch>]
3919
3920   *) TestCompile updated. We can now run programs and output the
3921      results during the Configure process. [ Jim Jagielski]
3922
3923   *) The source is now quad (long long) aware as needed. Specifically,
3924      the Configure process determines the correct size of off_t and
3925      *void. When the OS/platform/compiler supports quads, ap_snprintf()
3926      provides for the 'q' format qualifier (if quads are not available,
3927      'q' is silently "demoted" to long). [Jim Jagielski]
3928
3929   *) When the username or password fed to htpasswd is too long, include the
3930      size limit in the error message.  Also report illegal characters
3931      (currently only ':') in the username.  Add the size restrictions
3932      to the man page.  [Ken Coar]
3933
3934   *) Fixed the configure --without-support option so it doesn't result in
3935      an infinite loop.  [Marc Slemko]
3936
3937   *) Piped error logs could cause a segfault if an error occured
3938      during configuration after a restart.
3939      [Aidan Cully <aidan@panix.com>] PR#4456
3940
3941   *) If a "Location" field was stored in r->err_headers_out rather
3942      than r->headers_out, redirect processing wouldn't find it and
3943      the server would core dump on ap_escape_html(NULL).  Check both
3944      tables and raise HTTP_INTERNAL_SERVER_ERROR with a log message
3945      if Location isn't set.  [Doug MacEachern, Ken Coar]
3946
3947   *) Add RULE_EXPAT, the src/lib/ directory structure, and a modified copy
3948      of the Expat 1.0.2 distribution. [Greg Stein]
3949
3950   *) Replace regexec() calls with calls to a new API stub function
3951      ap_regexec().  This solves problems with DSO modules which use the regex
3952      library. [Jens-Uwe Mager <jum@helios.de>, Ralf S. Engelschall]
3953
3954   *) Add 'Request_Protocol' special keyword to mod_setenvif so that
3955      environment variables can be set according to the protocol version
3956      (e.g., HTTP/0.9 or HTTP/1.1) of the request.  [Ken Coar]
3957
3958   *) Add DSO support for OpenStep (Mach 4.2) platform.
3959      [Ralf S. Engelschall, Rex Dieter <rdieter@math.unl.edu>] PR#3997
3960
3961   *) Fix sed regex for generating ap_config_auto.h in src/Configure.
3962      [Jan Gallo <gallo@pvt.sk>] PR#3690, PR#4373
3963  
3964   *) Switch to /bin/sh5 in APACI on Ultrix and friends to avoid problems with
3965      their brain-dead /bin/sh. [Ralf S. Engelschall] PR#4372
3966
3967   *) Better DSO flags recognition on NetBSD platforms using ELF.
3968      [Todd Vierling <tv@pobox.com>] PR#4310
3969
3970   *) Always log months in english format for %t in mod_log_config.
3971      [Petr Lampa <lampa@fee.vutbr.cz>] PR#4366, 679
3972
3973   *) Support for server-parsed and multiview-determined ReadmeName and
3974      HeaderName files in mod_autoindex. Removed the restriction on
3975      "/"s in ReadmeName and HeaderName directives since the *sub_req*
3976      routines will deal with the access issues. (It's now possible to
3977      have {site|group|project|customer|...} wide readmes and headers.)
3978      [Raymond S Brand <rsbx@rsbx.net>, Ken Coar] PR#1574, 3026, 3529,
3979      3569, 4256
3980
3981   *) When stat() fails, don't assume anything about the contents of
3982      the struct stat.  [Ed Korthof <ed@bitmechanic.com>]
3983
3984   *) It's OK for a semop to return EINTR, just loop around and try
3985      again.  [Dean Gaudet]
3986
3987   *) Fix configuration engine re-entrant hangups, which solve a
3988      handful of problems seen with mod_perl <Perl> configuration sections
3989      [Salvador Ortiz Garcia <sog@msg.com.mx>]
3990
3991   *) Mac OS and Mac OS X Server now use the appropriate custom layout
3992      by default when building with APACI; allow for platform-specific
3993      variable defaults in configure. [Wilfredo Sanchez]
3994
3995   *) Do setgid() before initgroups() in http_main; some platforms
3996      zap the grouplist when setgid() is called.  This was fixed in
3997      suexec earlier, but the main httpd code missed the change.
3998      [Rob Saccoccio <robs@InfiniteTechnology.com>]  PR#2579
3999
4000   *) Add recognition of .tgz as a gzipped tarchive.
4001      [Bertrand de Singly <bertrand.de-singly@polytechnique.fr>]  PR#2364
4002
4003   *) mod_include's fsize/flastmod should allow only relative paths, just
4004      like "include file".  [Jaroslav Benkovsky <benkovsk@pha.pvt.cz>]
4005
4006   *) OS/2: Add support for building loadable modules using DLLs.
4007      [Brian Havard]
4008
4009   *) Add iconsdir, htdocsdir, and cgidir to config.layout.
4010      [Wilfredo Sanchez]
4011
4012   *) Fix minor but annoying bug with the test for Configuration.tmpl
4013      being newer than Configuration so that it is less likely to fail
4014      when using APACI and shadow sources. [Wilfredo Sanchez]
4015
4016   *) PORT: Add initial support for Mac OS (versions 10.0 and
4017      greater). Use Mac OS X Server layout for now. Clean up dyld code
4018      in unix/os.c, and don't install the dyld error handlers, which
4019      are no longer needed in Mac OS. [Wilfredo Sanchez]
4020
4021   *) Rename Rhapsody layout to "Mac OS X Server". Change install
4022      locations to appropriate ones for user-built (as opposed to
4023      system) installs. [Wilfredo Sanchez]
4024
4025   *) Modify mod_autoindex's handling of AddDescription so that the
4026      behaviour matches the documentation.  [Ken Coar] PR#1898, 3072.
4027
4028   *) Add functionality to the install-bindist.sh script created by
4029      binbuild.sh to use tar when copying distribution files to the
4030      serverroot. This allows upgrading an existing installation
4031      without nesting the new distribution in the old.
4032
4033      install-bindist.sh now detects the local perl5 path to install
4034      apxs and dbmmanage with proper path to perl interpreter.
4035
4036      Add an install-binsupport target which copies the source files
4037      for apxs and dbmmanage to bindist to allow these scripts to
4038      be properly installed relative to the destination serverroot.
4039      [Randy Terbush, Covalent Technologies, randy@covalent.net]
4040
4041   *) Fix intermittent SEGV in ap_proxy_cache_error() in
4042      src/modules/proxy_util.c where a NULL filepointer and
4043      temporary filename were closed and unlinked.
4044      [Graham Leggett <minfrin@sharp.fm>,
4045      Tim Costello <tjcostel@socs.uts.edu.au>] PR#3178
4046
4047   *) Fix inconsistent error messages reported by mod_proxy.
4048      [Graham Leggett <minfrin@sharp.fm>]
4049
4050   *) OS/2: Fix terminating CGIs that aren't compiled by EMX GCC when a 
4051      connection is aborted.  [Brian Havard]
4052
4053   *) Force the LANG envariable to the known state of "C" so that we
4054      have assurance about how string manipulators (e.g., tr) will
4055      function.  [Ken Coar]  PR#1630
4056
4057   *) Add a directive to allow customising of the tracking cookie name.
4058      [Ken Coar]  PR#2921, 4303
4059
4060   *) Add "force-no-vary" envariable to allow servers to work around
4061      clients that choke on "Vary" fields in the response header.
4062      [Ken Coar, Dmitry Khrustalev <dima@zippy.machaon.ru>]  PR#4118
4063
4064   *) Fixed a bug in mod_dir that causes a child process will infinitely
4065      recurse when it attemps to handle a request for a directory wnd the
4066      value of the DirectoryIndex directive is a single dot. Also likely
4067      to happen for anyother values of DirectoryIndex that will map back
4068      to the same directory. The handler now only considers regular files
4069      as being index candidates. No PR#s found.
4070      [Raymond S Brand <rsbx@rsbx.net>]
4071
4072   *) Ease configuration debugging by making TestCompile fall back to
4073      using "make" if the $MAKE variable is unset [Martin Kraemer]
4074
4075   *) Fixed the ServerSignature directive to work as documented.
4076      [Raymond S Brand <rsbx@rsbx.net>] PR#4248
4077
4078   *) Add "opt" (SysV-style) layout to config.layout. [Raymond S Brand
4079      <rsbx@rsbx.net>]
4080
4081   *) Add APACI --without-execstrip option which can be used to disable the
4082      stripping of executables on installation.  This is very important for DSO
4083      and debugging situations. [Ralf S. Engelschall]
4084
4085   *) Add support for OS/2 (case insenstive filesystem, .exe suffix, etc)
4086      to APACI files and related scripts. 
4087      [Yitzchak Scott-Thoennes <sthoenna@efn.org>, Ralf S. Engelschall] PR#4269
4088
4089   *) Add support for standalone mode in TPF
4090      [Joe Moenich <moenich@us.ibm.com>]
4091
4092   *) Fix number of bytes copied by read_connection() in src/support/ab.c
4093      [Jim Cox <jc@superlink.net>] PR#4271
4094
4095   *) Fix special RewriteCond "-s" pattern matching.
4096      [Bob Finch <bob@nas.com>]
4097
4098   *) Fix value quoting in src/Configure script for ap_config_auto.h 
4099      [Paul Sutton <paul@awe.com>]
4100
4101   *) Make sure RewriteLock can be used only in the global context, (i.e.
4102      outside of any <VirtualHost> sections) because it's a global facility of
4103      the rewrite engine. [Ralf S. Engelschall]
4104
4105   *) Fix the ownership delegation for proxy directory under `make install'.
4106      [Ralf S. Engelschall]
4107
4108   *) APACI would not correctly build suexec. [Maria Verina
4109      <mariav@icgeb.trieste.it>] PR#4260
4110
4111   *) mod_mime_magic passed only the first 4k of a file to
4112      uncompress/gzip, but those tools sometimes do not produce
4113      any output unless a sufficient portion of the compressed
4114      file is input.  Change to pass the entire file -- but
4115      only read 4k of output.
4116      [Marcin Cieslak <saper@system.pl>] PR#4097
4117
4118   *) "IndexOptions None" generated extra spaces at the end of each
4119      line.  [inkling@firstnethou.com] PR#3770
4120
4121   *) The "100 Continue" response wasn't being sent after internal
4122      redirects. [Jose KAHAN <kahan@w3.org>] PR#3910, 3806, 3575
4123
4124   *) When padding the name with spaces for display, mod_autoindex would
4125      count &, <, and > in their escaped width, messing up the display.
4126      [Dean Gaudet] PR#4075, 3758
4127
4128   *) PORT: fixed a compilation problem on NEXT.
4129      [Jacques Distler <distler@golem.ph.utexas.edu>] PR#4130
4130
4131   *) r->request_time wasn't being set properly in certain error conditions.
4132      [Dean Gaudet] PR#4156
4133
4134   *) PORT: deal with UTS compiler error in http_protocol.c
4135      [Dave Dykstra <dwd@bell-labs.com>] PR#4189
4136
4137   *) Add ap_vrprintf() function.  [John Tobey <jtobey@banta-im.com>] PR#4246
4138
4139   *) Fix the mod_mime hash table to work properly with locales other
4140      than C.  [Dean Gaudet] PR#3427
4141
4142   *) Fix a memory leak which is exacerbated by certain configurations.
4143      [Dean Gaudet] PR#4225
4144
4145   *) Prevent clobbering saved IFS values in APACI. [Jim Jagielski]
4146
4147   *) Fix buffer overflows in ap_uuencode and ap_uudecode pointed out
4148      by "Peter 'Luna' Altberg <peter@altberg.nu>" and PR#3422
4149      [Peter 'Luna' Altberg <peter@altberg.nu>, Ronald Tschalär]
4150
4151   *) Make {Set,Unset,Pass}Env per-directory instead of per-server.
4152      [Ben Laurie]
4153
4154   *) Correct an apparent typo: on the Windows and MPE platforms, the
4155      htpasswd utility was limiting passwords to only 8 characters.
4156      [Ken Coar]
4157
4158   *) EBCDIC platforms: David submitted patches for two bugs in the
4159      MD5 digest port for EBCDIC machines:
4160      a) the htdigest utility overwrote the old contents of the digest file
4161      b) the Content-MD5 header value (ContentDigest directive) was wrong
4162      when the returned file was not converted from EBCDIC, but was a
4163      binary (e.g., image file) in the first place.
4164      [David McCreedy <mccreedy@us.ibm.com>]
4165
4166   *) support/htpasswd now permits the password to be specified on the
4167      command line with the '-b' switch.  This is useful when passwords
4168      need to be maintained by scripts -- particularly in the Win32
4169      environment.  [Ken Coar]
4170
4171   *) Win32: Win32 multiple services patch. Added capability to install and
4172      run multiple copies of apache as individual services.
4173
4174      Example 1:
4175      apache -n apache1 -i -f c:/httpd.conf
4176         Installs apache as service 'apache1' and associates c:/httpd.conf
4177         with that service.
4178      net start apache1
4179         Starts apache1 service.
4180      net stop apache1
4181         Stops apache1 service
4182
4183      Example 2:
4184      apache -n apache2 -i
4185         Installs apache as service 'apache2'. httpd.conf is located under
4186         the default server root (/apache/conf/httpd.conf).
4187      net start apache2
4188         Starts apache2 service.
4189
4190      Example 3:
4191      apache -n apache3 -i -d c:/program files/apache
4192         Install apache as service 'apache3' and sets server root to
4193         c:/program files/apache.
4194
4195      Example 4:
4196      apache -n apache2 -k restart
4197         Restart apache2 service 
4198
4199      [Keith Wannamaker, Ken Parzygnat, Bill Stoddard]
4200
4201   *) Correct the signed/unsigned character handling for the MD5 routines;
4202      mismatches were causing compilation problems with gcc -pedantic and
4203      in the TPF cross-compilation.  [Ken Coar]
4204
4205   *) OS/2: Rework CGI handling to use spawn*() instead of fork/exec, achieving
4206      a roughly 5 fold speed up. [Brian Havard]
4207
4208   *) proxy ftp: instead of using the hardwired string "text/plain" as
4209      a fallback type for files served by the ftp proxy, use the
4210      ap_default_type() function to determine the configured type.
4211      This allows for special configurations like
4212         <Directory proxy:ftp://some.host>
4213         DefaultType gargle/blurb
4214         </Directory>
4215      Additionally, add the Content-Encoding: header to FTP proxy replies
4216      when the encoding is defined (by the AddEncoding directive).
4217      Because it was missing, it was almost impossible to browse compressed
4218      files using the FTP proxy (works now perfectly in Communicator).
4219      The ftp proxy now also returns the Date: and Server: header lines (if not
4220      much else... This code is "somewhat" broken) like normal requests do.
4221      [Martin Kraemer]
4222
4223   *) Be more smart in APACI's configure script when determining the UID/GID
4224      for User/Group directives and use the determined UID/GID to initialize
4225      the permissions on the proxycachedir.
4226      [Dirk-Willem van Gulik, Ralf S. Engelschall]
4227
4228   *) Changed the forking-prior-to-cleanup in the proxy module to first
4229      check wether it actually needs to collect garbage. This reduces 
4230      the number of fork()s from one/request to just the odd one an hour.
4231      [Dirk-Willem van Gulik]
4232
4233   *) Added proxy, auth and header support to src/support/ab.c. Added a
4234      README file to src/support/
4235      [Dirk-Willem van Gulik]
4236
4237   *) Don't hard-code the path to AWK in --shadow bootstrapping Makefile.
4238      [Ralf S. Engelschall] PR#4050
4239
4240   *) Add support for DSO module compilation on BSD/OS 3.x.
4241      [Randy Terbush, Covalent Technologies]
4242
4243   *) Fix sed-substitutions in `make install': path elements like `httpd/conf'
4244      (for instance from an APACI configure --sysconfdir=/etc/httpd/conf
4245      option) were substituted with $(TARGET).conf, etc. Same for other strings
4246      with dots where the dot wasn't matched as plain text. 
4247      [Ralf S. Engelschall]
4248
4249   *) PORT: Add support for FreeBSD 4.x [Ralf S. Engelschall]
4250
4251   *) Fix verbose output of APACI configure (option -v) 
4252      [Martin Kraemer, Ralf S. Engelschall]
4253
4254 Changes with Apache 1.3.6
4255
4256   *) Removed new PassAllEnv code due to DSO problems. [Lars Eilebrecht]
4257
4258 Changes with Apache 1.3.5 [not released]
4259
4260   *) M_INVALID needed a value within the scope of METHODS so that unknown
4261      methods can be access controlled.  [Roy Fielding] PR#3821
4262
4263   *) Added PassAllEnv; makes server's entire environment available
4264      to CGIs and SSIs executed within directive's scope.  [Ken Coar]
4265
4266   *) ap_uuencode() always added two trailing '='s and encoding of
4267      8 bit characters on a machine with signed char may produced
4268      incorrect results. Additionally ap_uuencode() should now
4269      work correctly on EBCDIC platforms.
4270      [Ronald Tschalär <ronald@innovation.ch>] PR#3411
4271
4272   *) WIN32: Binary installer now runs the configuration DLL before
4273      the reboot prompt (which is only given if MSVCRT.DLL system
4274      DLL is new or updated). This should avoid the configuration
4275      directory being empty after installation. [Paul Sutton]
4276      PR#3767, 3800, 3827, 3850, 3900, 3953, 3988
4277
4278   *) WIN32: Binary installer now creates Start menu options to start
4279      and stop Apache as a console application and to uninstall
4280      the Apache service on NT. [Paul Sutton] PR#3741
4281
4282   *) WIN32: Apache.exe now contains an icon. [Paul Sutton]
4283
4284   *) PORT: Switch back to using fcntl() locking on Linux -- instabilities
4285      have been reported with flock() locking (probably related to kernel
4286      version).  [Dean Gaudet] PR#2723, 3531
4287
4288   *) Using APACI, the main config file (usually httpd.conf) was
4289      not being adjusted as $(TARGET).conf. [Wilfredo Sanchez
4290      <wsanchez@apple.com>]
4291
4292   *) PORT: AIX does not require the SHARED_CODE "hack"
4293      [Ryan Bloom <rbb@raleigh.ibm.com>]
4294
4295   *) Set-Cookie headers were being doubled up for some CGIs by the O(n^2)
4296      avoidance code added in 1.3.3.
4297      [Dean Gaudet, Jeff Lewis <lewis@stanford.edu>] PR#3872
4298
4299   *) ap_isxdigit was somehow neglected when adding the ap_isfoo() macros
4300      for 8-bit safeness.  [Dean Gaudet]
4301
4302   *) PORT: Use -fPIC instead of -fpic on Solaris and SunOS for compiling DSOs
4303      because SPARCs have a small machine-specific maximum size for the Global
4304      Offset Table which is often exceeded when compiling one of the larger
4305      third-party modules with Apache. [Peter Urban <Peter.Urban@epfl.ch>] PR#3977
4306
4307   *) Move the directive `ExtendedStatus' in httpd.conf-dist-win _after_ the
4308      DSO/DLL section because it's a directive from mod_status and isn't
4309      available before the DLL of mod_status is loaded.
4310      [Martin POESCHL <mpoeschl@gmx.net>] PR#3936
4311
4312   *) SECURITY: Fix a bug in the calculation of the buffer size for the line 
4313      continuation facility in Apache's configuration files which could 
4314      lead to a buffer overflow situation.
4315      [Thomas Devanneaux <Thomas.Devanneaux@enst.fr>] PR#3617
4316
4317   *) Make documentation and error messages of APACI's --activate-module=FILE 
4318      option more clear. [Jan Wolter <janc@wwnet.net>] PR#3995
4319
4320   *) Fix the gcc version check (for enabling the `inline' facility) to 
4321      really support all future gcc versions >= 2.7 until we know more.
4322      [John Tobey <jtobey@banta-im.com>] PR#3983
4323
4324   *) Let APACI's configure script correctly complain for unknown --enable-XXX
4325      and --disable-XXX options. [Ralf S. Engelschall] PR#3958
4326
4327   *) Link the shared core bootstrap program (``Rule SHARED_CORE=yes'') also
4328      against libap.a and use its ap_snprintf() instead of sprintf() to avoid
4329      possible buffer overflows. [Ralf S. Engelschall]
4330
4331   *) Remove no longer used non-API function ap_single_module_init().
4332      [Ralf S. Engelschall]
4333
4334   *) Add Apple's Mac OS X Server Layout "Rhapsody" to config.layout.
4335      [Wilfredo Sanchez]
4336
4337   *) Add cgidir, htdocsdir, iconsdir variables to Makefile.tmpl in order
4338      to make platform installations easier.  [Wilfredo Sanchez]
4339
4340   *) In configure, do not append the target name to the directory path if
4341      the path already contains "apache".  [Ralf S. Engelschall]
4342
4343   *) SIGPIPE is now ignored by the server core.  The request write routines
4344      (ap_rputc, ap_rputs, ap_rvputs, ap_rwrite, ap_rprintf, ap_rflush) now
4345      correctly check for output errors and mark the connection as aborted.
4346      Replaced many direct (unchecked) calls to ap_b* routines with the
4347      analogous ap_r* calls.  [Roy Fielding]
4348
4349   *) Enhanced mod_rewrite's mapfile handling: The in-core cache for text and
4350      DBM format mapfiles now uses a 4-way hash table with LRU functionality.
4351      Furthermore map lookups for non-existent keys are now cached as well.
4352      Additionally "txt" maps are now parsed with simple string functions
4353      instead of using ap_pregcomp(). As a side effect a bug that prevented
4354      the usage of keys containing the "," character was fixed.
4355      The changes drastically improve the performance when large rewrite maps
4356      are in use.
4357      [Michael van Elst <mlelstv@serpens.swb.de>, Lars Eilebrecht] PR#3160
4358
4359   *) Added ap_sub_req_method_uri() for doing a subrequest with a method
4360      other than GET, and const'd the definition of method in request_rec.
4361      [Greg Stein]
4362
4363   *) Use proper pid_t type for saving PIDs in alloc.c.  [John Bley]
4364
4365   *) Replaced use of WIN32 define with HAVE_DRIVE_LETTERS to indicate
4366      when the OS allows a DOS drive letter within pathnames.  [Brian Havard]
4367
4368   *) Add %V to mod_log_config, this logs the hostname according to the
4369      UseCanonicalName setting (this is the pre-1.3.4 behaviour of
4370      %v).  Useful for mass vhosting.  [Tony Finch <dot@dotat.at>]
4371
4372   *) Add support for \n and \t to mod_log_config, can be used to produce
4373      more reliable logs with multiline entries.  [Tony Finch <dot@dotat.at>]
4374
4375   *) Fixed a few compiler nits.  [John Bley <jbb6@acpub.duke.edu>]
4376
4377   *) Added informative error messages for failed munmap() and fseek() calls
4378      in http_core.c. [John Bley, Roy Fielding]
4379
4380   *) Added some informative error messages for some failed malloc()
4381      calls. [John Bley <jbb6@acpub.duke.edu>, Jim Jagielski]
4382
4383   *) OS/2 ap_os_canonical_filename()'s behaviour is improved: ap_assert()
4384      is removed. This allows <Directory proxy:*> directives to work and
4385      prevents invalid requests from killing the process.
4386      [Brian Havard <brianh@kheldar.apana.org.au>]
4387
4388   *) Reorganised FAQ document.
4389      [Joshua Slive <slive@finance.commerce.ubc.ca>] PR#2497
4390
4391   *) src/support/: The ApacheBench benchmark program was overhauled by
4392      David N. Welton: you can now have it generate an HTML TABLE, presumably
4393      for integration into other HTML sources. David updated the ab man page
4394      as well and added some missing descriptions. Thanks!
4395      [David N. Welton <davidw@prosa.it>]
4396
4397   *) Win32: The filename validity checker now allows filenames containing
4398      characters in the range 0x80 to 0xff (for example accented characters).
4399      [Paul Sutton] PR#3890
4400
4401   *) Added conditional logging based upon environment variables to
4402      mod_log_config.  mod_log_referer and mod_log_agent
4403      are now deprecated.  [Ken Coar]
4404
4405   *) Allow apache acting as a proxy server to relay the real
4406      reason of a failure to a client rather than the "internal
4407      server error" it does currently. The general exposure mechanism
4408      can be triggered by any module by setting the "verbose-error-to"
4409      note to "*"; this allows more than just proxy errors to be exposed.
4410      [Cliff Skolnick, Roy Fielding, Martin Kraemer] Related to PR#3455, 4086
4411
4412   *) Moved man pages for ab and apachectrl to section 8.
4413      [Wilfredo Sanchez, Roy Fielding]
4414
4415   *) Added -S option to install.sh so that options can be passed to
4416      strip on some platforms. [Ralf S. Engelschall, Wilfredo Sanchez]
4417
4418   *) Tweak modules Makefile generated by Configure so that it handles
4419      the test case of no modules being selected. [chaz@reliant.com]
4420
4421   *) Added a <LimitExcept method ...> sectioning directive that allows
4422      the user to assign authentication control to any HTTP method that
4423      is *not* given in the argument list; i.e., the logical negation
4424      of the <Limit> directive.  This is particularly useful for controlling
4425      access on methods unknown to the Apache core, but perhaps known by
4426      some module or CGI script. [Roy Fielding, Tony Finch]
4427
4428   *) Prevent apachectl from complaining if the PIDFILE exists but
4429      does not contain a process id, as might occur if the server is
4430      being rapidly restarted. [Wilfredo Sanchez]
4431
4432   *) Win32: Add global symbols missing from ApacheCore.def. [Carl Olsen]
4433
4434   *) Entity tag comparisons for If-Match and If-None-Match were not being
4435      performed correctly -- weak tags might cause false positives.  Also,
4436      strong comparison wasn't properly enforced in all cases.
4437      [Roy Fielding, Ken Coar, Dean Gaudet] PR#2065, 3657
4438
4439   *) OS/2: Supply OS/2 error code instead of errno on semaphore errors.
4440      [Brian Havard]
4441
4442   *) Work around a bug in Lynx regarding its sending "Negotiate: trans"
4443      even though it doesn't understand TCN.  [Koen Holtman, Roy Fielding]
4444
4445   *) Added ap_size_list_item(), ap_get_list_item(), and ap_find_list_item()
4446      to util.c for parsing an HTTP header field value to extract the next
4447      list item, taking into account the possible presence of nested comments,
4448      quoted-pairs, and quoted-strings. ap_get_list_item() also removes
4449      insignificant whitespace and lowercases non-quoted tokens.
4450      [Roy Fielding] PR#2065
4451
4452   *) proxy: The various calls to ap_proxyerror() can return HTTP/1.1 status
4453      code different from 500. This allows the proxy to, e.g., return
4454      "403 Forbidden" for ProxyBlock'ed URL's. [Martin Kraemer] Related to PR#3455
4455
4456   *) Fix ordering of language variants for the case where the traditional
4457      negotiation algorithm is being used with multiple language variants
4458      and no Accept-Language. [James Treacy <treacy@debian.org>] PR#3299, 3688
4459
4460   *) Do not round the TCN quality calculation to 5 decimal places,
4461      unlike RFC 2296, because the calculation might need 12 decimal places
4462      to get the right result.  [Roy Fielding]
4463
4464   *) Remove unused code to disable transparent negotiation when
4465      negotiating on encoding only, as we now handle encoding too
4466      (though this is nonstandard for TCN), remove charset=ISO-8859-1
4467      fiddle from the fiddle-averse RVSA comparison, and fix bugs in
4468      some debugging statements within mod_negotiation. [Koen Holtman]
4469
4470   *) Fixed a rare memory corruption possibility in mod_dir if the index
4471      file is negotiable and no acceptable variant can be found.
4472      [Dean Gaudet, Roy Fielding, Martin Kraemer]
4473
4474   *) Win32: Add new config directive, ScriptInterpreterSource, to enable
4475      searching the Win32 registry for script interpreters.
4476      [Bill Stoddard]
4477
4478   *) Win32: The compiled-in default filename for the error log is now
4479      error.log, which matches the default in the distributed httpd.conf.
4480      [Paul Sutton]
4481
4482   *) Win32: Any error messages from -i or -u command line options are now
4483      displayed on the console output rather than sent to the error log.
4484      Also the "Running Apache..." message is not output unless Apache is
4485      going to serve requests. [Paul Sutton]
4486
4487   *) Rework the MD5 authentication scheme to use FreeBSD's algorithm,
4488      and use a private significator ('$apr1$') to mark passwords as
4489      being smashed with our own algorithm.  Also abstract the password
4490      checking into a new ap_validate_password() routine.  [Ken Coar]
4491
4492   *) Win32: The filename validity checker now allows "COM" but refuses 
4493      access to "COM1" through "COM4". This allows filenames such
4494      as "com.name" to be served. [Paul Sutton] PR#3769.
4495
4496   *) BS2000: Adapt to the new ufork() system call interface which will
4497      make subtasking easier on the OSD/POSIX mainframe environment.
4498      [Martin Kraemer]
4499
4500   *) Add a compatibility define for escape_uri() -> ap_escape_uri() to
4501      ap_compat.h. [David White <david@persimmon.com>] PR#3725
4502
4503   *) Make NDBM file suffix determination for mod_rewrite more accurate, i.e.
4504      use `.db' instead of `.pag' not only for FreeBSD, but also when
4505      the NDBM library looks like Berkeley-DB based.
4506      [Ralf S. Engelschall] PR#3773
4507
4508   *) Add ability to handle DES or MD5 authentication passwords.
4509      [Ryan Bloom <rbb@Raleigh.IBM.Com>]
4510
4511   *) Fix O(n^2) memory consumption in mod_speling.  [Dean Gaudet]
4512
4513   *) SECURITY: Avoid some buffer overflow problems when escaping
4514      quoted strings.  (This overflow was on the heap and we believe
4515      impossible to exploit.)  [Rick Perry <perry@ece.vill.edu>]
4516
4517   *) Let src/Configure be aware of CFLAGS options starting with plus
4518      signs as it's the case for the HP/UX compiler.
4519      [Doug Yatcilla <yatcilda@umdnj.edu>] PR#3681
4520
4521   *) Remove the hard-wire of TAR=tar (we now check for gtar and gnutar first)
4522      and check to see if the tar we wind up with supports '-h'.
4523      [Jim Jagielski] PR#3671
4524
4525   *) A consistent and conservative style for all shell scripts has been
4526      implemented. Basically, all shell string tests use the traditional
4527      hack of 'if [ "x$var" != "x" ]' or 'if [ "x$var" = "xstring" ]'
4528      to protect against bare null variable strings (ie: wrapping both
4529      sides with double quotes and prepending 'x'). 'x' was chosen
4530      because it's more universal and hopefully easier for old shell
4531      prgrammers, as well as being easier to search for in 'vi' (/x\$) :)
4532      [Jim Jagielski]
4533
4534   *) The status module now prints out both the main server generation as
4535      well as the generation of each process. Also, the vhost info is
4536      printed with '?notable'. [Jim Jagielski]
4537
4538   *) Move src/main/md5c.c to src/ap/ap_md5c.c; it's httpd-neutral
4539      and this makes its functions available to things in src/support.
4540      [Ken Coar]
4541
4542 Changes with Apache 1.3.4
4543
4544   *) Renamed macros status_drops_connection to ap_status_drops_connection
4545      and vestigial scan_script_header to ap_scan_script_header_err,
4546      mostly for aesthetic reasons. [Roy Fielding]
4547
4548   *) The query switch "httpd -S" didn't exit after showing the
4549      vhost settings. That was inconsistent with the other query functions.
4550      [Martin Kraemer]
4551
4552   *) Moved the MODULE_MAGIC_COOKIE from before the versions and
4553      filename to the end of the STANDARD_MODULE_STUFF.  Its
4554      presence at the beginning prevented reporting of the filename
4555      for modules compiled before 1 January 1999.  [Ken Coar]
4556
4557   *) SECURITY: ap_os_is_filename_valid() has been added to Win32
4558      to detect and prevent access to special DOS device file names.
4559      [Paul Sutton, Ken Parzygnat]
4560      
4561   *) WIN32: Created new makefiles Makefile_win32.txt (normal build)
4562      and Makefile_win32_debug.txt (debug build) that work on Win95.
4563      Run each of the following from the src directory:
4564         nmake /f Makefile_win32.txt           # compiles normal build
4565         nmake /f Makefile_win32.txt install   # compiles and installs
4566         nmake /f Makefile_win32.txt clean     # removes compiled junk
4567         nmake /f Makefile_win32_debug.txt     # compiles debug build
4568         nmake /f Makefile_win32_debug.txt install
4569         nmake /f Makefile_win32_debug.txt clean
4570      [Roy Fielding]
4571
4572   *) Added binbuild.sh and findprg.sh helpers to make it easier for us
4573      to build binary distributions. [Lars Eilebrecht]
4574
4575   *) IndexOptions SuppressColumnSorting only turned off making
4576      the column headers anchors; you could still change the display
4577      order by manually adding a '?N=A' or similar query string to the
4578      URL.  Now SuppressColumnSorting locks in the sort order so
4579      it can't be overridden this way.  [Ken Coar]
4580
4581   *) Added IndexOrderDefault directive to supply a default sort order
4582      for FancyIndexed directory listings.  [Ken Coar] PR#1699
4583
4584   *) Change the ap_assert macro to a variant that works on all platforms.
4585      [Richard Prinz <richard.prinz@cso.net>] PR#2575
4586
4587   *) Make sure under ELF-based NetBSD (now) and OpenBSD (future) we don't
4588      search for an underscore on dlsym() (as it's already the case
4589      for FreeBSD 3.0). [Todd Vierling <tv@pobox.com>] PR#2462
4590   
4591   *) Small fix for mod_env.html: The module was documented as to be _not_
4592      compiled into Apache per default, although it _IS_ compiled into 
4593      Apache per default. [Sim Harbert <sim@mindspring.com>] PR#3572
4594
4595   *) Instead of fixing a bug in the generation procedure for config.status (a
4596      backslash was missing) we remove the bug together with it's complete
4597      context because the special cases of the past can now no longer occur
4598      because of the recent magic for the --with-layout default.
4599      [Ralf S. Engelschall] PR#3590
4600  
4601   *) Make top-level Makefile aware of a parallel build procedures (make -j) by
4602      making sure the src/support/ tools are _forced_ to be build last (they
4603      depend on other libraries).
4604      [Markus Theissinger <markus.theissinger@gmx.de>]
4605
4606   *) Fix installation procedure: Now that os-inline.c is actually used (a
4607      recently fixed bug prevented this) we need to also install os-include.c
4608      in addition to os.h into the PREFIX/include/ location or building of
4609      module DSOs with APXS fails. [Ralf S. Engelschall] PR#3527
4610
4611   *) Added MODULE_MAGIC_COOKIE as the first field in a module structure to
4612      allow us to distinguish between a garbled DSO (or even a file which isn't
4613      an Apache module DSO at all) and a DSO which doesn't match the current
4614      Apache API. [Ralf S. Engelschall] PR#3152
4615  
4616   *) Two minor enhancements to mod_rewrite: First RewriteRule now also
4617      supports the ``nocase|NC'' flag (as RewriteCond already does for ages) to
4618      match case insensitive (this especially avoids nasty patterns like
4619      `[tT][eE][sS][tT]'). Second two additional internal map functions
4620      `escape' and `unescape' were added which can be used to escape/unescape
4621      to/from hex-encodings in URLs parts (this is especially useful in
4622      combination with map lookups). 
4623      [Magnus Bodin, Ian Kallen, Ralf S. Engelschall]
4624
4625   *) Renamed the macro escape_uri() to ap_escape_uri() which was
4626      forgotten (because it was a macro) in the symbol renaming process.
4627      [Ralf S. Engelschall]
4628
4629   *) Fix some inconsistencies related to the scopes of directives. The only
4630      user visible change is that the directives `UseCanonicalName' and
4631      `ContentDigest' now use the (more correct) `Options' scope instead of
4632      (less correct) `AuthConfig' scope.  [Ralf S. Engelschall]
4633
4634   *) Using DSO, the Server token was being mangled. Specifically, the
4635      module's token was being added first before the Apache token. This
4636      has been fixed. [Jim Jagielski]
4637
4638   *) Major overhaul of mod_negotiation.c, part 2.
4639      - properly handle "identity" within Accept-Encoding.
4640      - allow encoded variants in RVSA negotiation and let them appear in
4641        the Alternates field using the non-standard "encoding" tag-list.
4642      - fixed both negotiation algorithms so that an explicitly accepted
4643        encoding is preferred over no encoding if "identity" is not
4644        included within Accept-Encoding.
4645      - added ap_array_pstrcat() to alloc.c for efficient concatenation
4646        of large substring sequences.
4647      - replaced O(n^2) memory hogs in mod_negotiation with ap_array_pstrcat.
4648      [Roy Fielding]
4649
4650   *) Major overhaul of mod_negotiation.c, part 1.
4651      - cleanups to mod_negotiation comments and code structure
4652      - made compliant with HTTP/1.1 proposed standard (rfc2068) and added
4653        support for everything in the upcoming HTTP/1.1
4654        revision (draft-ietf-http-v11-spec-rev-06.txt).
4655          - language tag matching also handles tags with more than 2
4656            levels like x-y-z
4657          - empty Accept, Accept-Language, Accept-Charset headers are
4658            processed correctly; previously an empty header would make all
4659            values acceptable instead of unacceptable.
4660          - allowed for q values in Accept-Encoding
4661      - added support for transparent content negotiation (rfc2295 and
4662        rfc2296) (though we do not implement all features in these drafts,
4663        e.g. no feature negotiation).  Removed old experimental version.
4664      - implemented 'structured entity tags' for better cache correctness
4665        (structured entity tags ensure that caches which can deal with Vary
4666        will (eventually) be updated if the set of variants on the server
4667        is changed)
4668          - this involved adding a vlist_validator element to request_rec
4669          - this involved adding the ap_make_etag() function to the global API
4670      - modified guessing of charsets used by Apache negotiation algorithm 
4671        to guess 'no charset' if the variant is not a text/* type
4672      - added code to sort multiviews variants into a canonical order so that
4673        negotiation results are consistent across backup/restores and mirrors
4674      - removed possibility of a type map file resolving to another type map
4675        file as its best variant
4676      [Koen Holtman, Roy Fielding, Lars Eilebrecht] PR#3451, 3299, 1987
4677
4678   *) RFC2396 allows the syntax http://host:/path (with no port number)
4679      but the proxy disallowed it (ap_proxy_canon_netloc()).
4680      [David Kristol <dmk@bell-labs.com>] PR#3530
4681
4682   *) When modules update/modify the file name in the configfile_t structure,
4683      syntax errors will report the updated name, not the original one.
4684      [Fabien Coelho <coelho@cri.ensmp.fr>] PR#3573
4685
4686   *) Correct some filename case assumptions from WIN32 to
4687      CASE_BLIND_FILESYSTEM.  [Brian Havard <brianh@kheldar.apana.org.au>]
4688
4689   *) For %v log ServerName regardless of the UseCanonicalName
4690      setting (similarly for %p).  [Dean Gaudet]
4691
4692   *) Configure was initializing the variables $OSDIR, $INCDIR and $SHELL
4693      rather late (too late for some invocations of TestCompile).
4694      This improves the make environment available to TestCompile and
4695      the *.module scripts. [Martin Kraemer]
4696
4697   *) The hashbang emulation code in ap_execve.c would interpret
4698      #!/hashbang/scripts correctly, but failed to fall back to a
4699      standard shell for scripts which did NOT start with #!
4700      Now SHELL_PATH is started in these cases. [Martin Kraemer]
4701
4702   *) PORT: Added the Cyberguard V2 port [Richard Stagg <stagg@lentil.org>]
4703      PR#3336
4704
4705   *) Update APXS manual page: some -q option arguments were missing
4706      and another was incorrect. [Mark Anderson <mda@discerning.com>] PR#3553
4707
4708   *) Cleanup the command line options: `-?' was documented to show
4709      the usage list but does it with an error because `?' is not a valid
4710      command. OTOH a lot of users expect `-h' to print such a usage list and
4711      instead are annoyed for ages by our huge unreadable list of directives.
4712      So we now changed the command line options this way:
4713      1. `-L' => `-R' 
4714         Intent: we need `-L' to be free, and `-R' for the DSO run-time path is
4715         very similar to the popular linker option.
4716      2. `-h' => `-L'
4717         Intent: while -l gives the small list of modules, -L now gives the
4718         large list of directives implemented by these modules.  This is also
4719         consistent with -v (short version info) and -V (large version info).
4720      3. `-?' => `-h' 
4721         Intent: it's now the expected option ;-)
4722      The manual page was adjusted accordingly. 
4723      [Ralf S. Engelschall] PR#2714
4724
4725   *) Fixed problem of fclose() on an unopened file in suexec if LOG_EXEC
4726      wasn't defined.  [Rick Franchuk <rickf@transpect.net>]
4727
4728   *) Removed recently introduced bugs and disfigurements in APACI:
4729      o fixed argument line processing: using $args was broken: It was not
4730        initialized and using args="$args $apc_option" and even args="$args
4731        \"$apc_option\"" fails in the second processing round for any arguments
4732        containing whitespaces. The only correct way is to use the construct
4733        "$@" (but not possible here) or iterate _both_ times over the implicit
4734        argument line (no argument to for-loop) which is what we now use.
4735      o make --with-layout=Apache the default without creating
4736        redundancy (copying the --with-layout block in the argument parsing
4737        loop).  We achieve this by using the "$@" construct together with the
4738        `set' command to prepend --with-layout=Apache to the command line in
4739        case --with-layout is not used.
4740      o fixed auto-suffix handling now that config.layout exists.
4741        Paths which are auto-suffixed are marked with a trailing plus sign in
4742        config.layout and every path now can be marked this way (not only the
4743        four paths for which we do it currently).  Additionally the suffix is
4744        no longer a static one. Instead it's now `/<target>' where <target> is
4745        the argument of the --target option or per default `httpd'.
4746      o allow also tabs (and only spaces) where we match whitespaces
4747      o various fixes and cleanups related to used shell coding style
4748      o made Jim happy by replacing `Written by' with `Initially written by' ;-)
4749      o trimmed output of --help to fit into 80 columns
4750      [Ralf S. Engelschall]
4751
4752   *) Added two new core API functions, ap_single_module_configure() and
4753      ap_single_module_init(), which are now used by mod_so to configure a module
4754      after loading. [Ralf S. Engelschall]
4755
4756   *) PORT: Add defines for USE_FLOCK_SERIALIZED_ACCEPT and
4757      SINGLE_LISTEN_UNSERIALIZED_ACCEPT to NetBSD/OpenBSD section
4758      of ap_config.h to allow serialized accept for multiport listens.
4759      [Roy Fielding, Curt Sampson] PR#3120
4760
4761   *) PORT: Fixed a misplaced #endif for NetBSD/OpenBSD section
4762      of ap_config.h that would skip several defines if DEFAULT_GROUP
4763      was overridden. [Roy Fielding]
4764
4765   *) PORT: The I86 version of DGUX has support for strncasecmp and 
4766      strcasecmp, so allow it in ap_config.h. [Amiel Lee Yee] PR#3247
4767
4768   *) Fix ordering of definitions in ap_config.h so that ap_inline is
4769      defined before it might be used. [Victor Khimenko]
4770
4771   *) PORT: Add Dynamic Shared Object (DSO) support for BSDI (v4.0).
4772      [Tom Serkowski <tks@bsdi.com>] PR#3453
4773
4774   *) Make generation of src/Configuration.apaci more robust: It failed to
4775      differenciate between modules when one module name was a postfix of
4776      another (e.g. cgi vs. fastcgi). We now check for mod_XXX, libXXX and even
4777      just XXX (think about totally non-standard names like "apache_ssl", too).
4778      [Ralf S. Engelschall] PR#3380
4779
4780   *) In src/Configure remove the SERVER_SUBVERSION support (already deprecated
4781      since 1.3b7) and make whitespace handling more robust (it failed horrible
4782      when whitespaces were present in the arguments of -D options).
4783      [Ralf S. Engelschall] PR#3240
4784
4785   *) Add APACI --shadow=DIR variant (in addition to --shadow). This now first
4786      creates an external package shadow tree in DIR before the local build
4787      shadow tree is generated under DIR. This way one can have the extracted
4788      Apache distribution tree read-only on NFS or CDROM and still build Apache
4789      from these sources. An automatically triggered VPATH-like mechanism is
4790      provided through the TOP variable, too.
4791      [Ralf S. Engelschall, Wilfredo Sanchez <wsanchez@apple.com>]
4792
4793   *) Fix negotiation so that a Vary response header is correctly 
4794      generated when, for a particular dimension, variants only vary
4795      in having or not having a value for that dimension. [Paul Sutton]
4796
4797   *) Fix negotiation so that we prefer an encoded variant over an
4798      unencoded variant if the user-agent explicitly says it can
4799      accept that encoding. Previously we always preferred the unencoded
4800      variant.
4801      [Paul Ausbeck <paula@alumni.cse.ucsc.edu>, Paul Sutton] PR#3447
4802  
4803   *) Fix APXS tool: query variables LIBS_SHLIB and TARGET were not recognized
4804      and the usage page was inconsistent with the functionality and manpage.
4805      [Ralf S. Engelschall]
4806
4807   *) Allow special options -Wc,xxx and -Wl,xxx on APXS compile/link command.
4808      They can occur multiple times and their arguments (`xxx') are passed AS
4809      IS to the compiler/linker command.  [Ralf S. Engelschall]
4810
4811   *) Fixed possible (but harmless in practice) bug in the DBM lookup
4812      procedure of mod_rewrite: very long keys were truncated.
4813      [Ralf S. Engelschall]
4814
4815   *) Added a generic --with-layout=[FILE:]ID option. ID here is a layout
4816      identifier, currently "Apache" and "GNU" are pre-defined in the file
4817      config.layout.  Custom layouts are possible by using FILE:ID as the
4818      argument where the layout ID is taken from FILE.
4819
4820      The config.layout file consists of <Layout ID>..</Layout> sections
4821      where inside those sections "path_variable: path_value" pairs can be
4822      specified. These lines are converted to path_variable='path_value'.
4823
4824   *) Add a DefaultLanguage directive so that files missing a language
4825      extension (e.g., .fr, .de) can be labelled as being some other
4826      default language. DefaultLanguage can appear in <Directory> and 
4827      <Files> containers as well as .htaccess files.  [Paul Sutton]
4828      PR#1180
4829
4830   *) Fix TARGET configuration when configuring and installing using
4831      APACI configure. TARGET now defines the basename of the configuration
4832      file, startup script, manual page, etc. log_error_core() now reports
4833      the server binary name given by argv[0]. TARGET can now also be defined
4834      with --target=TARGET parameter passed to APACI configure.
4835      [Ralf Engelschall, Randy Terbush]
4836
4837   *) mod_include.c:handle_perl() now properly tests for OPT_INCNOEXEC
4838      rather than OPT_INCLUDES [Rainer Schoepf <schoepf@uni-mainz.de>]
4839
4840   *) ap_md5_binary() was using sprintf() rather than a table lookup
4841      to convert binary bytes to hex digits.
4842      [Ronald Tschalär <ronald@innovation.ch>] PR#3409
4843
4844   *) Fix SEGV in TCN negotiation if no variants are acceptable.
4845      [Martin Plechsmid <plechsmi@karlin.mff.cuni.cz>] PR#1987
4846
4847   *) API: ap_exists_config_define() function is now "public" [Doug MacEachern]
4848
4849   *) Fix documentation of `Action' directive: It can activate a CGI script
4850      when either a handler or a MIME content type is triggered by the request.
4851      [Andrew Pimlott <pimlott@math.harvard.edu>] PR#3340
4852
4853   *) Document the `add' command of `dbmmanage' in `dbmmanage.1' manpage.
4854      [David MacKenzie <djm@uu.net>] PR#3394
4855
4856   *) Ignore a "ErrorDocument 401" directive with a full URL and write a
4857      notice to the error log. It is not possible to send a 401 response
4858      and a redirect at the same time.  [Lars Eilebrecht]
4859
4860   *) Fallback to native compilers for IRIX-32 platform. It seems that
4861      a gcc 2.8.1 compiled apache is logging client addresses with all
4862      bits set (255.255.255.255). This is the second such problem caused
4863      by gcc 2.8.1 compiler. The first being broken semaphore locking.
4864      [Randy Terbush]
4865
4866   *) Updated mime.types to reflect current Internet media types
4867      and include a URL to the registry.
4868      [Manoj Kasichainula, Roy Fielding] PR#2380, 2286, 2246
4869
4870   *) SECURITY: Do a more complete check in mod_include to avoid 
4871      an infinite loop of recursive SSI includes.  [Marc Slemko] PR#3323
4872
4873   *) Add APACI --suexec-docroot and --suexec-logfile options which can be
4874      used to set the document root directory (DOC_ROOT) and the suexec
4875      logfile (LOG_EXEC), respectively. Additionally the --layout option
4876      was changed to show more information about the suEXEC setup.
4877      [Lars Eilebrecht] PR#3316, 3357, 3361
4878
4879   *) Added the last two WebDAV status codes of 424 (Failed Dependency)
4880      and 507 (Insufficient Storage) for use by third-party modules.
4881      [Roy Fielding]
4882
4883   *) Enabled all of the WebDAV method names for use by third-party
4884      modules, Limit, and Script directives.  That includes PATCH,
4885      PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, and UNLOCK.
4886      Improved mod_actions.c so that it can use any of the methods
4887      defined in httpd.h.  Added ap_method_number_of(method) for
4888      getting the internal method number.  [Roy Fielding]
4889
4890   *) PORT: Add a port to the TPF OS. [Joe Moenich <moenich@us.ibm.com> and
4891      others at IBM]
4892
4893   *) Fix problems with handling of UNC names (e.g., \\host\path)
4894      on Win32.  [Ken Parzygnat <kparz@us.ibm.com>]
4895
4896   *) Rework os_canonical_*() on Win32 so it's simpler, more
4897      robust, and works.  [Ken Parzygnat <kparz@us.ibm.com>]
4898      PR#2555, 2915, 3064, 3232
4899
4900   *) Work around incomplete implementation of strftime on Win32.
4901      [Manoj Kasichainula, Ken Parzygnat <kparz@us.ibm.com>]
4902
4903   *) Move a typedef to fix compile problems on Linux with 1.x kernels.
4904      [Manoj Kasichainula] PR#3177
4905
4906   *) PORT: Add a port to the Concurrent PowerMAX OS. [Tom Horsley
4907      <Tom.Horsley@mail.ccur.com>]
4908
4909   *) WIN32: Log more explicit error messages if spawning an interpreted 
4910      script failed, including the command line used to attempt to execute 
4911      the interpreter and the Win32 error code returned.  [Marc Slemko]
4912
4913   *) Disable sending of error-notes on a 500 (Internal Server Error) response
4914      since it often includes file path info.  Enable sending of error-notes
4915      on a 501 (Method Not Implemented).  [Roy Fielding] PR#3173
4916
4917   *) http_config.c would respond with 501 (Method Not Implemented) if a
4918      content type handler was specified but could not be found, which
4919      should have been a 500 response.  Likewise, mod_proxy.c would responsd
4920      with a 501 if the URI scheme is unrecognized instead of the correct
4921      response of 403 (Forbidden).  [Roy Fielding]
4922
4923   *) SECURITY: Eliminate DoS attack when a bad URI path contains what
4924      looks like a printf format escape.  [Marc Slemko, Studenten Net Twente]
4925
4926   *) Fix in mod_autoindex: for files where the last modified time stamp was
4927      unavailable, an empty string was printed which was 2 bytes short.
4928      The size and description columns were therefore not aligned correctly.
4929      [Martin Kraemer] (no PR#)
4930
4931   *) Update BS2000 OS code to work with recent versions. Starting with
4932      release A17, the child fork() must be replaced by a _rfork().
4933      (BS2000 only) [Martin Kraemer]
4934
4935   *) Add the actual server_rec structure of the specific Vhost to the
4936      scoreboard file and avoid a string copy (as well as allow some
4937      further future enhancements). [Harrie Hazewinkel
4938      <harrie.hazewinkel@jrc.it>]
4939
4940   *) Add APACI --permute-module=foo:bar option which can be used to
4941      on-the-fly/batch permute the order of two modules (mod_foo and mod_bar)
4942      in the Configuration[.apaci] file. Two special and important variants are
4943      supported for the option argument: first BEGIN:foo which permutes module
4944      mod_foo with the begin of the module list, i.e. it `moves' the module to
4945      the begin of the list (gives it lowest priority).  And second foo:END
4946      which permutes mod_foo with the end of the module list, i.e. it `moves'
4947      the module to the end of the list (gives it highest priority). 
4948      [Ralf S. Engelschall]
4949
4950   *) Fix problem with 'apache -k shutdown' and startup event
4951      synchronisation (Win32).  [Ken Parzygnat <kparz@raleigh.ibm.com>]
4952      PR#3255
4953
4954   *) The config parser wasn't correctly noticing a missing '>'
4955      on container start lines (e.g., it wouldn't spot
4956      "<Directory /" as a syntax error).  [Ryan Bloom <rbbloom@us.ibm.com>]
4957      PR#3279
4958
4959   *) Add a 'RemoveHandler' directive which will selectively remove
4960      all handler associations for the specified file extensions.
4961      [Ryan Bloom <rbbloom@us.ibm.com>] PR#1799.
4962
4963   *) Properly handle & allow "nul" and ".*/null" in AccessConfig and
4964      ResourceConfig directives on Win32.  Also add a note to the effect
4965      of 'useless User directive ignored on Win32' to the errorlog if
4966      a User directive is encountered on Win32.
4967      [Ken Parzygnat <kparz@raleigh.ibm.com>] PR#2078, 2303.
4968
4969   *) Fix multiple whitespace handling in imagemaps for mod_imap which was
4970      broken since Apache 1.3.1 where we took out compressing of multiple
4971      spaces in ap_cfg_getline().
4972      [Ivan Richwalski <ivan@seppuku.net>] PR#3249
4973
4974   *) Fix Berkeley-DB/2.x support in mod_auth_db: The data structures were not
4975      initialized correctly and the db_open() call used an invalid mode
4976      parameter. [Ron Klatchko <ron@ckm.ucsf.edu>] PR#3171
4977
4978   *) PORT: DSO support for UnixWare 7
4979      [Ralf S. Engelschall, Ron Record <rr@sco.com>]
4980
4981   *) Merge the contents of the {srm,access}.conf-dist* files into the
4982      httpd.conf-dist* files.  The srm and access files now contain
4983      only comments, and httpd.conf has all the combined contents in
4984      a rational order.  [Ken Coar]
4985
4986   *) PORT: DSO/ELF support for FreeBSD 3.0.
4987      [Ralf S. Engelschall, Dirk Froemberg <ibex@physik.TU-Berlin.DE>]
4988   
4989   *) Add a "default-handler" handler that calls the default_hander()
4990      function which is normally called for static content.  This allows
4991      you to override a specific handler.  [Marc Slemko]
4992
4993   *) Further simplify checking for absolute paths by replacing an
4994      hard-coded syntax check with a call to a routine we already created to
4995      do this.  [Ken Parzygnat <kparz@raleigh.ibm.com>] PR#2976, 3074
4996
4997   *) Log an error if we encounter a malformed "require" directive 
4998      in mod_auth if we know that we know that no other module can
4999      deal with it.  [Marc Slemko]
5000
5001   *) Remove ap_private_extern method of hiding conflicting symbols
5002      on the NEXT platform because it is not correct for all versions,
5003      and the versions for which it is correct are unknown.
5004      [Wilfredo Sanchez <wsanchez@apple.com>]
5005
5006   *) Fix inheritance of IndexOptions NameWidth and remove unintended
5007      restriction on +NameWidth, +IconHeight, and +IconWidth.  [Ken Coar]
5008
5009   *) Fix per-directory config merging for cases in which a 500 error
5010      is encountered in an .htaccess file somewhere down the tree.
5011      [Ken Coar]  PR#2409
5012
5013   *) Minor performance improvement to ap_escape_html(). [Roy Fielding]
5014
5015   *) Fixed a segmentation violation in mod_proxy when a response is
5016      non-cachable.  [Roy Fielding, traced by Doug Bloebaum]. PR#2950, 3056
5017
5018 Changes with Apache 1.3.3
5019
5020   *) Added a complete implementation of the Expect header field as
5021      specified in rev-05 of HTTP/1.1.  Disabled the 100 Continue
5022      response when we already know the final status, which is mighty
5023      useful for PUT responses that result in 302 or 401. [Roy Fielding]
5024
5025   *) Remove extra trailing whitespace from the getline results as part
5026      of the protocol processing, which is extra nice because it works
5027      between continuation lines, is almost no cost in the normal case
5028      of no extra whitespace, and saves memory. [Roy Fielding]
5029
5030   *) Added new HTTP status codes and default response bodies from the
5031      revised HTTP/1.1 (307, 416, 417), WebDAV (102, 207, 422, 423), and 
5032      HTTP Extension Framework (510) specifications.  Did not add the
5033      WebDAV 424 and 425 codes because they are bogus.  We don't use any
5034      of these codes yet, but they are now available to 3rd-party modules.
5035      [Roy Fielding]
5036
5037   *) Fix a possible race condition between timed-out requests and the
5038      ap_bhalfduplex select that might result in an infinite loop on
5039      platforms that do not validate the descriptor. [Roy Fielding]
5040
5041   *) WIN32: Add "-k shutdown" and "-k restart" options to signal a
5042      running Apache server [Paul Sutton]
5043
5044   *) Fix mod_autoindex bug where directories got a size of "0k" instead
5045      of "-".  [Martin Plechsmid <plechsmi@karlin.mff.cuni.cz>, Marc Slemko]
5046      PR#3130
5047
5048   *) PORT: DRS 6000 machine. [Paul Debleecker <pdebleecker@jetair.be>]
5049
5050   *) Add the server signature text (from the core ServerSignature directive)
5051      to the list of envariables available to scripts, SSI, and the like.
5052      [Ken Coar]
5053
5054   *) PORT: Fix sys/resource.h handling for SCO 3.x platform.
5055      [M. Laak <maert@proinv.ee>] PR#3108
5056  
5057   *) Fallback from sysconf-based to plain HZ-based `ticks per second'
5058      calculation in mod_status for all systems which don't have POSIX
5059      sysconf() (like UTS 2.1) and not only for the NEXT platform.
5060      [Dave Dykstra <dwd@bell-labs.com>] PR#3055
5061
5062   *) Fix `require ...' directive parsing in mod_auth, mod_auth_dbm and
5063      mod_auth_db by using ap_getword_white() (which uses ap_isspace()) 
5064      instead of ap_getword(..., ' ') (which parses only according to spaces 
5065      but not tabs).  [James Morris <jmorris@intercode.com.au>, 
5066      Ralf S. Engelschall] PR#3105
5067
5068   *) Fix the SERVER_NAME variable under sub-request situations (where
5069      `UseCanonicalName off' is used) like CGI's called from SSI pages or
5070      RewriteCond variables by adopting r->hostname to sub-requests.
5071      [James Grinter <jrg@blodwen.demon.co.uk>] PR#3111
5072
5073   *) Fix stderr redirection under syslog-based error logging situation.
5074      [Youichirou Koga <y-koga@jp.FreeBSD.org>] PR#3095
5075
5076   *) Document `ErrorLog syslog:facility' variant of error logging.
5077      [Youichirou Koga <y-koga@jp.FreeBSD.org>] PR#3096
5078
5079   *) Fix http://localhost/ hints in top-level INSTALL document.
5080      [Rob Jenson <robjen@spotch.com>, Ralf S. Engelschall] PR#3088
5081
5082   *) Quote paths in default configuration files.  [Wilfredo Sanchez]
5083
5084   *) PORT: Remove extra HAVE_SYS_RESOURCE_H define for RHAPSODY since
5085      it is now taken care of properly by the header file tests.
5086      [Wilfredo Sanchez <wsanchez@apple.com>]
5087
5088   *) Fix problem with scripts and filehandle inheritance on Win32.
5089      [Ken Parzygnat <kparz@raleigh.ibm.com>]  PR#2884, 2910
5090
5091   *) Win32 name canonicalisation could end up using the server's
5092      working directory to fill in some blanks.  [Ken Parzygnat
5093      <kparz@raleigh.ibm.com>] PR#3001
5094
5095   *) Correct invalid assumption by ap_sub_req_lookup_file() that all
5096      absolute paths begin with "/" -- because they don't on Win32.
5097      [Ken Parzygnat <kparz@raleigh.ibm.com>] PR#2976, 3074
5098
5099   *) Add [REDIRECT_]VARIANTS environment variable to mod_speling
5100      so that ErrorDocument 300 processors can reformat the list
5101      if desired.  [Ken Coar] PR#2859
5102
5103   *) Add +/- incremental prefixes to IndexOptions keywords, and
5104      enable merging of multiple IndexOptions directives.  [Ken Coar]
5105
5106   *) PORT: Allow GuessOS to recognize Unixware 7.0.1 [Steve Cameron
5107      <steve.cameron@compaq.com>]
5108
5109   *) Reconstructed the loop through multiple htaccess file names so
5110      that missing files are not confused with unreadable files.
5111      [Roy Fielding]
5112
5113   *) The ap_pfopen and ap_pfdopen routines were failing to protect the
5114      errno on an error, which leads to one error being mistaken for
5115      another when reading non-existent .htaccess files.
5116      [Jim Jagielski]
5117
5118   *) OS/2: The new header tests get things right, need to update
5119      ap_config.h.  [Brian Havard]
5120
5121   *) The Perl %ENV hash will now be setup by default when using the
5122      mod_include `perl' command [Doug MacEachern]
5123
5124   *) PORT: Add Pyramid DC/OSx support to configuration mechanism.
5125      [Earle Ake <akee@wpdiss1.wpafb.af.mil>]
5126
5127   *) PORT: Fix sys/resource.h handling for Amdahl's UTS 2.1
5128      [Dave Dykstra <dwd@bell-labs.com>] PR#3054
5129
5130   *) Correct comment in mod_log_config.c about its internals.
5131      [Elf Sternberg <elf@halcyon.com>]
5132
5133   *) Avoid possible line overflow in Configure: Use an awkfile to
5134      handle the creation of modules.c [Jim Jagielski]
5135
5136 Changes with Apache 1.3.2
5137
5138   *) Fix bug in ap_remove_module(), which caused problems for dso's 
5139      who were the top_module.  [Doug MacEachern]
5140
5141   *) Add support for Berkeley-DB/2.x (in addition to Berkeley-DB/1.x) to
5142      mod_auth_db to both be friendly to users who wants to use this version
5143      and to avoid problems under platforms where only version 2.x is present.
5144      [Dan Jacobowitz <drow@false.org>, Ralf S. Engelschall]
5145
5146   *) When using ap_log_rerror(), make the error message available to the
5147      *ERROR_NOTES envariables by default.  [Ken Coar]
5148
5149   *) BS2000 platform only: get rid of the nasty BS2000AuthFile.
5150      You now must define a BS2000Account name for the server User.
5151      This has fewer security implications than the old approach.
5152      [Martin Kraemer]
5153
5154   *) Fix SHARED_CORE feature for HPUX platform: We now use extension `.sl'
5155      instead of `.so' and `SHLIB_PATH' instead of `LD_LIBRARY_PATH' on this
5156      platform to make the braindead HPUX linker happy. Notice, for the module
5157      DSOs we don't have to use this, because these are loaded manually (and
5158      not via HPUX' dld). [Ralf S. Engelschall] PR#2905, PR#2968
5159
5160   *) Remove 64 thread limit on Win32.
5161      [Bill Stoddard <stoddard@raleigh.ibm.com>]
5162
5163   *) Remove redundant substitutions in top-level Makefile.tmpl.
5164      [Ralf S. Engelschall]
5165
5166   *) Fix APACI's `Group' configuration adjustment - especially for Linux
5167      platforms where `nogroup' exists in /etc/group. [Ralf S. Engelschall]
5168  
5169   *) Make PrintPath work generically instead of having one version
5170      strictly for OS/2. [Jim Jagielski, Brian Havard]
5171
5172   *) Fix the recently introduced C header file checking: We now use the C
5173      pre-processor pass only (and no longer the complete compiler pass) to
5174      determine whether a C header file exists or not. Because only this way
5175      we're safe against inter-header dependencies (which caused horrible
5176      portability problems). The only drawback is that we now have a CPP
5177      configuration variable which has to be determined first (we do a similar
5178      approach as GNU Autoconf does here). When all fails the user still has
5179      the possibility to override it manually via APACI or src/Configuration.
5180      As a fallback for the header check itself we can directly check the
5181      existance of the file under /usr/include, too.
5182      [Ralf S. Engelschall] PR#2777
5183
5184   *) PORT: Added RHAPSODY (Mac OS X Server) support. MAP_TMPFILE defined
5185      as an alternate mechanism for mmap'd shared memory for RHAPSODY.
5186      ap_private_extern defined to hide symbols that conflict with loaded
5187      dynamic libraries on the NEXT and RHAPSODY platforms.
5188      [Wilfredo Sanchez <wsanchez@apple.com>]
5189
5190   *) Delete PID file on clean shutdowns.
5191      [Charles Randall <crandall@matchlogic.com>] PR#2947
5192
5193   *) Fix mod_auth_*.html documents: NSCA -> NCSA
5194      [Youichirou Koga <y-koga@jp.FreeBSD.org>] PR#2991
5195
5196   *) Fix INSTALL document: www.gnu.ai.mit.edu -> www.gnu.org
5197      [Karl Berry <karl@gnu.org>] PR#2994
5198
5199   *) Fix dbmmanage.1 manual page.
5200      [Youichirou Koga <y-koga@jp.FreeBSD.org>] PR#2992
5201      
5202   *) Fix possible buffer overflow situation in suexec.c.
5203      [Jeff Stewart <jws@purdue.edu>] PR#2790
5204
5205   *) Add some more LIBS for the SCO5 platform which are needed for the already
5206      used -lprot. It's actually a bug in SCO5, of course.
5207      [Ronald Record <rr@sco.com>] PR#2533
5208
5209   *) Fix documentation of ProxyPass/ProxyPassReverse according to the
5210      trailing slash problem. [Jon Drukman <jsd@gamespot.com>] PR#2933
5211   
5212   *) Remove `-msym' option from LDFLAGS_SHLIB for the Digital UNIX (OSF/1)
5213      platform, because it's only supported under version 4.0 and higher. But
5214      because our GuessOS is still unaware of Digital UNIX versions and the
5215      -msym is just to optimize the DSO statup time a little bit it's safe and
5216      best when we leave it out now.  [Ralf S. Engelschall] PR#2969
5217
5218   *) Fix the ap_log_error_old(), ap_log_unixerr() and ap_log_printf()
5219      functions: First all three functions no longer fail on strings containing
5220      "%" chars and second ap_log_printf() no longer does a double-formatting
5221      (instead it directly passes through the message to be formatted to the
5222      real internal formatting function). [Ralf S. Engelschall] PR#2941
5223
5224   *) Allow "Include" directives anywhere in the server config
5225      files (but not .htaccess files).  [Ken Coar] PR#2727
5226
5227   *) The proxy was refusing to serve CONNECT requests except to
5228      port 443 (https://) and 563 (snews://). The new AllowCONNECT
5229      directive allows the configuration of the ports to which a
5230      CONNECT is allowed.  [Sameer Parekh, Martin Kraemer]
5231
5232   *) mod_expires will now act on content that is not sent from a file
5233      on disk.  Previously it would never add an Expires: header to
5234      any response that did not come from a file on disk; the only
5235      case where it still doesn't (and can't) add one for that type of 
5236      content is if you are using a modification date based setting.  
5237      [Marc Slemko, Paul Phillips <paulp@go2net.com>]
5238
5239   *) Problems encountered during .htaccess parsing or CGI execution
5240      that lead to a "500 Server Error" condition now provide explanatory
5241      text (in the *ERROR_NOTES envariable) to ErrorDocument 500 scripts.
5242      [Ken Coar] PR#1291
5243
5244   *) Add NameWidth keyword to IndexOptions directive so that the
5245      width of the filename column is customisable.  [Ken Coar, Dean Gaudet]
5246      PR#1949, 2324.
5247
5248   *) Recognize lowercase _and_ uppercase `uname' results under
5249      SCO OpenServer. [David Coelho <drc@ppt.com>]
5250
5251   *) As duplicate "HTTP/1.0 200 OK" lines within the header seem to be
5252      a common problem of (mis-administrated?) IIS servers, make the apache
5253      proxy immune to these errors (and ignore the duplicates, but log
5254      the fact to error_log). [Martin Kraemer], after the proposal in PR#2914 
5255      
5256   *) The <IfModule and <IfDefine block starting directives now only
5257      allow exactly one argument. Previously, the optional negation
5258      character '!' could be separated by whitespace without a syntax
5259      error being reported, albeit defeating the IfModule functionality
5260      (enclosed directives would ALWAYS be executed). By using the
5261      stricter syntax, these hard-to-track errors can be avoided.
5262      [Martin Kraemer]
5263
5264   *) Simplify handling of IndexOptions in mod_autoindex -- and BTW
5265      cause the standalone FancyIndexing directive to logically OR
5266      into any existing IndexOptions settings rather than wiping
5267      them out.  [Ken Coar]
5268
5269   *) Changes in ftp proxy: make URL parsing simpler by using the
5270      parsed_uri stuff.
5271      + Add display of the "current directory" in cases where it's
5272      different from the supplied path (e.g., ftp://user@host/ lives
5273      in /home/user, not in /, therefore clicking on "../" in the
5274      starting directory might send us to /home/).
5275      + When ftp login fails, (esp. when a user name was part of the
5276      URL already), we now return [401 Unauthorized ] to allow the
5277      browser to pop up an authorization dialog. This makes passwords
5278      slightly less visible (they don't appear in the regular log files)
5279      and implements a functionality that other www proxy servers
5280      already offered.
5281      [Martin Kraemer]
5282
5283   *) Triggered by the recent "Via:" header changes, the proxy module would
5284      dump core for replies with invalid headers (e.g., duplicate
5285      "HTTP/1.0 200 OK" lines). These errors are now logged and the
5286      core dump is avoided. Also, broken replies are not cached.
5287      [Martin Kraemer] PR#2914
5288
5289   *) new `GprofDir' directive when compiled with -DGPROF, where gprof can
5290      plop gmon.out profile data for each child [Doug MacEachern]
5291    
5292   *) Use the construct ``"$@"'' instead of ``$*'' in the generated
5293      config.status script to be immune against arguments with whitespaces.
5294      [Yves Arrouye <yves@apple.com>] PR#2866
5295
5296   *) Replace the inlined information grabbing stuff for the configuration
5297      adjustment feature (no --without-confadjust) with calls to a new helper
5298      script `buildinfo.sh' which is both more flexible and already proofed to
5299      be more robust against platform differences. This mainly fixes the
5300      recently occured ``sed: command garbled: ...'' problems.
5301      [Ralf S. Engelschall] PR#2776, PR#2848
5302
5303   *) Make ab.c again pass ``gcc -Wall -Wshadow -Wpointer-arith -Wcast-align
5304      -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline''
5305      without complains after we recently added the POST feature.
5306      [Ralf S. Engelschall]
5307
5308   *) Renamed is_HTTP_xxx() macros to ap_is_HTTP_xxx() name. They are used inside
5309      modules as API functions and we forgot them at the big symbol renaming.
5310      [Ralf S. Engelschall]
5311
5312   *) Remove bad reference to non-existing SERVER_VERSION in mod_rewrite.html
5313      [Youichirou Koga <y-koga@jp.FreeBSD.ORG>] PR#2895
5314
5315   *) Dynamically size the filename column of mod_autoindex output.
5316      [Dean Gaudet]
5317
5318   *) Add the ability to do POST requests to the ab benchmarking tool.
5319      [Kurt Sussman <kls@best.com>] PR#2871
5320
5321   *) Bump up MAX_ENV_FLAGS in mod_rewrite.h from the too conservatice limit of
5322      5 to 10 because there are some users out there who always have 5 to 8
5323      variables in one RewriteRule and had to patch mod_rewrite.h for every
5324      release. So 15 should be now more than enough, even for them. (I never
5325      needed more than 4 in my RewriteRules ;-)
5326      [Ralf S. Engelschall]
5327
5328   *) Make the proxy generate and understand Via: headers
5329      [Martin Kraemer]
5330
5331   *) Change the proxy to use tables instead of array_headers for
5332      the header lines. [Martin Kraemer]
5333
5334   *) Make sure the config.status file is not overridden when just
5335      ``configure --help'' is used. [Ralf S. Engelschall] PR#2844
5336
5337   *) Split MODULE_MAGIC_NUMBER into _MAJOR/_MINOR numbers. This should
5338      provide a way to trace API changes that add functionality but do
5339      not create a compatibility issue for precompiled modules, etc.
5340      See include/ap_mmn.h for more details.  [Randy Terbush]
5341
5342   *) Fix suexec installation under `make install root=xxx' situation.
5343      [Ralf S. Engelschall]
5344
5345   *) Extend the output of the -V switch to include the paths of all
5346      compiled-in configuration files, if they were overridden at
5347      compile time, for least astonishment of the user.
5348      [Martin Kraemer]
5349
5350   *) When READing a request in ExtendedStatus mode, the "old"
5351      vhost, request and client information is not displayed.
5352      [Jim Jagielski]
5353
5354   *) STATUS is no longer available. Full status information now
5355      run-time configurable using the ExtendedStatus directive.
5356      [Jim Jagielski]
5357
5358   *) SECURITY: Eliminate O(n^2) space DoS attacks (and other O(n^2)
5359      cpu time attacks) in header parsing.  Add ap_overlap_tables(),
5360      a function which can be used to perform bulk update operations
5361      on tables in a more efficient manner.  [Dean Gaudet]
5362
5363   *) SECURITY: Added compile-time and configurable limits for
5364      various aspects of reading a client request to avoid some simple
5365      denial of service attacks, including limits on maximum request-line
5366      size (LimitRequestLine), number of header fields (LimitRequestFields),
5367      and size of any one header field (LimitRequestFieldsize).  Also added
5368      a configurable directive LimitRequestBody for limiting the size of the
5369      request message body.  [Roy Fielding]
5370
5371   *) Make status module aware of DNS and logging states, even if
5372      STATUS not defined.  [Jim Jagielski]
5373
5374   *) Fix a problem with the new OS/2 mutexes.  [Brian Havard]
5375
5376   *) Enhance mod_speling so that CheckSpelling can be used in
5377      <Directory> containers and .htaccess files.  [Ken Coar]
5378
5379   *) API: new ap_custom_response() function for hooking into the
5380      ErrorDocument mechanism at runtime [Doug MacEachern]
5381
5382   *) API: new ap_uuencode() function [Doug MacEachern]
5383
5384   *) API: scan_script_header_err_core() now "public" and renamed
5385      ap_scan_script_header_err_core() [Doug MacEachern]
5386
5387   *) The 'status' module will now show the process pid's and their
5388      state even without full STATUS accounting. [Jim Jagielski]
5389
5390   *) Restore the client IP address to the error log messages, this
5391      was lost during the transition from 1.2 to 1.3.  Add a new
5392      function ap_log_rerror() which takes a request_rec * and
5393      formats it appropriately.  [Dean Gaudet] PR#2661
5394
5395   *) Cure ap_cfg_getline() of its nasty habit of compressing internal
5396      whitespace in input lines -- including within quoted strings.
5397      [Ken Coar]
5398      but leading and trailing whitespace should continue to be
5399      stripped [Martin Kraemer]
5400
5401   *) Cleanup of the PrintPath/PrintPathOS2 helper functions. Avoid
5402      the ugly use of an env. variable and use command-line args for
5403      alternate $PATH. Make more like advanced 'type's as well.
5404      [Jim Jagielski]
5405
5406   *) The IRIXN32 Rule was being ignored. Configure now correctly adds
5407      -n32 only if IRIXN32 says to. [Jim Jagielski, Alain St-Denis
5408      <alain.st-denis@ec.gc.ca>] PR#2736
5409
5410   *) Clean up a warning in mod_proxy. [Ralf S. Engelschall]
5411
5412   *) Renamed __EMX__ (internal define of the gcc port under OS/2) to OS2
5413      following the same idea as "MSVC vs WIN32". Additionally the src/os/emx/
5414      directory was renamed to src/os/os2/ for consistency.
5415      [Brian Havard, Ralf S. Engelschall]
5416
5417   *) Add new Rule SHARED_CHAIN which can be used to enable linking of DSO
5418      files (here modules) against other DSO files (here shared libraries).
5419      This is done by determining a subset of LIBS which can be safely used for
5420      linking the DSOs, i.e. PIC libs and shared libs.  Currently the rule is
5421      disabled for all platforms to avoid problems with this (experimental)
5422      rule. But we provide it now for those people how ran into problems and
5423      want to came out by forcing linking against DSOs.
5424      [Ralf S. Engelschall] PR#2587
5425
5426   *) Fix suEXEC start message: Has to be of `notice' level to really get
5427      printed together with the standard startup message because the `notice'
5428      level is handled special inside ap_log_error() for startup messages.
5429      [Ralf S. Engelschall] PR#2761 PR#2761 PR#2765
5430
5431   *) Add correct `model' MIME types from RFC2077 to mime.types file.
5432      [Ralf S. Engelschall] PR#2732
5433
5434   *) Fixed examples in mod_rewrite.html document. 
5435      [Youichirou Koga <y-koga@jp.FreeBSD.org>, Ralf S. Engelschall] PR#2756
5436
5437   *) Allow ap_read_request errors to propagate through the normal request
5438      handling loop so that the connection can be properly closed with
5439      lingering_close, thus avoiding a potential TCP reset that would
5440      cause the client to miss the HTTP error response.  [Roy Fielding]
5441
5442   *) One more portability fix for APACI shadow tree support: Swap order of awk
5443      and sed in top-level configure script to avoid sed fails on some
5444      platforms (for instance SunOS 4.1.3 and NCR SysV) because of the
5445      non-newline-termined output of Awk. [Ralf S. Engelschall] PR#2729
5446
5447   *) PORT: NEC EWS4800 support.
5448      [MATSUURA Takanori <t-matsuu@protein.osaka-u.ac.jp>]
5449
5450   *) Fix a segfault in the proxy on OS/2.  [Brian Havard]
5451
5452   *) Fix Win32 part of ap_spawn_child() by providing a reasonable child_info
5453      structure instead of just NULL. This fixes at least the RewriteMap
5454      programs under Win32. [Marco De Michele <mdemichele@tin.it>] PR#2483
5455
5456   *) Add workaround to top-level `configure' script for brain dead 
5457      `echo' commands which interpet escape sequences per default.
5458      [Ralf S. Engelschall] PR#2654
5459
5460   *) Make sure that the path to the Perl interpreter is correctly
5461      adjusted under `make install' also for the printenv CGI script.
5462      [Ralf S. Engelschall] PR#2595
5463  
5464   *) Update the mod_rewrite.html document to correctly reflect the situation
5465      of the `proxy' (`[P]') feature. [Ralf S. Engelschall] PR#2679
5466
5467   *) Fix `install-includes' sub-target of `install' target in top-level
5468      Makefile.tmpl: The umask+cp approach didn't work as expected (especially
5469      for users which extracted the distribution under 'umask 077'), so replace
5470      it by an explicit cp+chmod approach.
5471      [Richard Lloyd, Curt Sampson, Ralf S. Engelschall] PR#2656 PR#2626
5472  
5473   *) Fix `distclean' and `clean' targets in src/Makefile.tmpl to have same
5474      behavior and to cleanup correctly even under enabled SHARED_CORE rule.
5475      [Ralf S. Engelschall]
5476
5477   *) Use a more straight forward and thus less problematic Sed command in
5478      src/helper/mkdir.sh script.  [Ralf S. Engelschall]
5479
5480   *) Make sure the `configure' scripts doesn't fail when trying to guess the
5481      domainname of the machine and there are multiple `domainname' and
5482      `search' entries in /etc/resolv.conf.
5483      [Ralf S. Engelschall] PR#2710
5484
5485   *) Add note about the SHARED_CORE requirement on some platforms also to the
5486      INSTALL file because a lot of users don't read htdocs/manual/dso.html
5487      first. [Ralf S. Engelschall] PR#2701
5488
5489   *) Fix document "hyperlink" for dso.html in src/Configuration.tmpl
5490      [Knut A.Syed <Knut.Syed@nhh.no>] PR#2674
5491
5492   *) Modify mod_rewrite to update the Vary response field if the URL rewriting
5493      engine does any manipulations or decisions based upon request fields. 
5494      [Ken Coar] PR#1644
5495
5496   *) Document the special APACI behavior for installation paths where
5497      ``/apache'' is appended to paths under some (well defined, of course)
5498      situations to prevent pollution of system locations with Apache files.
5499      [Ralf S. Engelschall] PR#2660
5500
5501   *) Fixed problem with buffered response message not being sent for
5502      the read_request error conditions of URI-too-long (414) and
5503      malformed header fields (400).  [Roy Fielding] PR#2646
5504
5505   *) Add support for the Max-Forwards: header line required by RFC2068 for
5506      the TRACE method. This allows apache to TRACE along a chain of proxies
5507      up to a predetermined depth. [Martin Kraemer]
5508
5509   *) Fix SHARED_CORE rule: The CFLAGS_SHLIB variable is no longer doubled
5510      (compilers complained) and the .so.V.R.P filename extension was adjusted
5511      to correctly reflect the 1.3.2 version.
5512      [Ralf S. Engelschall] PR#2644
5513
5514   *) SECURITY: Plug "..." and other canonicalization holes under OS/2.
5515      [Brian Havard]
5516   
5517   *) PORT: implement serialized accepts for OS/2.  [Brian Havard]
5518
5519   *) mod_include had problems with the fsize and flastmod directives
5520      under WIN32.  Fix also avoids the minor security hole of using
5521      ".." paths for fsize and flastmod.
5522      [Manoj Kasichainula <manojk@raleigh.ibm.com>] PR#2355
5523
5524   *) Fixed some Makefile dependency problems.  [Dean Gaudet]
5525
5526 Changes with Apache 1.3.1
5527
5528   *) Disable the incorrect entry for application/msword in the 
5529      mod_mime_magic "magic" file because it also matches other Office
5530      documents.  [Ralf S. Engelschall] PR#2608
5531
5532   *) Fix broken RANLIB handling in src/Configure (the entry from
5533      src/Configuration.tmpl was ignored) and additionally force RANLIB to
5534      /bin/true under HP/UX where ranlib exists but is deprecated.
5535      [Ralf S. Engelschall] PR#2627
5536      
5537   *) 'apachectl status' failed on some systems.
5538      [Steve VanDevender <stevev@darkwing.uoregon.edu>, Lars Eilebrecht] PR#2613
5539
5540   *) Add new flags for ap_unparse_uri_components() to make it generate
5541      the scheme://sitepart string only, or to omit the query string.
5542      [Martin Kraemer]
5543
5544   *) WIN32: Canonicalize ServerRoot before checking to see if it
5545      is a valid directory.  The failure to do this caused certain
5546      ServerRoot settings (eg. "ServerRoot /apache") to be improperly
5547      rejected.  [Marc Slemko]
5548
5549   *) Global renaming of C header files to both get rid of conflicts with third
5550      party packages and to again reach consistency:
5551        1. conf.h      -> ap_config.h
5552        2. conf_auto.h -> ap_config_auto.h \ these are now merged
5553        3. ap_config.h -> ap_config_auto.h / in the config process
5554        4. compat.h    -> ap_compat.h
5555        5. apctype.h   -> ap_ctype.h
5556      Backward compatibility files for conf.h and compat.h were created.
5557
5558   *) mod_mmap_static will no longer take action on requests unless at 
5559      least one "mmapfile" directive is present in the configuration. 
5560      This experimental module has to do some black magic to operate 
5561      inside the current API and thus creates side-effects for other 
5562      modules under some circumstances.
5563      [Ralf S. Engelschall]
5564  
5565   *) Add conservative ticks around more egrep arguments in top-level configure
5566      to avoid problems under brain-dead platforms like Digital UNIX (OSF1).
5567      [Ralf S. Engelschall] PR#2596
5568
5569   *) mod_rewrite created RewriteLock files under the UID of the parent
5570      process, thus the child processes had no write access to the files.
5571      Now a chown() is done on the file to the uid of the children,
5572      if applicable.  [Lars Eilebrecht, Ralf S. Engelschall] PR#2341
5573
5574   *) Autogenerate some HAVE_XXXXX_H defines in conf_auto.h (determined via
5575      TestCompile) instead of defining them manually in conf.h based on less
5576      accurate platform definitions.  This way we no longer have to fiddle with
5577      OS-type and/or OS-version identifiers to discover whether a system header
5578      file exists or not.  Instead we now directly check for the existence of
5579      those esoteric ones. 
5580      [Ralf S. Engelschall] PR#2093, PR#2361, PR#2377, PR#2434,
5581                            PR#2524, PR#2525, PR#2533, PR#2569
5582
5583   *) mod_setenvif (BrowserMatch* and friends) will now match a missing
5584      field with "^$".  [Ken Coar]
5585
5586   *) Set the RTLD_GLOBAL dlopen mode parameter to allow dynamically loaded
5587      modules to load their own modules dynamically.  This improves mod_perl
5588      and mod_php3 when these modules are loaded dynamically into Apache.
5589      [Rasmus Lerdorf]
5590
5591   *) Cache a proxied request in the event that the client cancels the
5592      transfer, provided that the configured percentage of the file has
5593      already been transfered. It works for HTTP transfers only.  The 
5594      new configuration directive is called CacheForceCompletion. 
5595      [Glen Parker <glenebob@nwlink.com>] PR#2277
5596
5597   *) Add the "<!DOCTYPE HTML" magic cookie used by modern documents (and
5598      required by HTML 3.2 and later) to mod_mime_magic's conf/magic.
5599      [Anna Shergold <anna@inext.co.uk>]
5600
5601   *) Fix yet another signal-based race condition involving nested timers.
5602      Signals suck.  [Dean Gaudet]
5603
5604   *) suexec's error messages have been clarified a little bit.  [Ken Coar]
5605
5606   *) Clean up some, but perhaps not all, 8-bit character set problems
5607      with config file parsing, and URL parsing.  We now define
5608      ap_isdigit(), ap_isupper(), ... which cast to an (unsigned char).
5609      This should work on most modern unixes.
5610      [Dean Gaudet] PR#800, 2282, 2553  (and others)
5611
5612   *) The "handler not found" error was issued in cases where the handler
5613      really did exist, but was just declining to serve the request.
5614      [John Van Essen <jve@gamers.org>] PR#2529
5615
5616   *) Add Dynamic Shared Object (DSO) support for SCO5 (OpenServer 5.0.x).
5617      [Ronald Record <rr@sco.com>] PR#2533
5618
5619   *) The APACI libexecdir was not extended with an "apache/" subdir
5620      if the installation prefix didn't already contain "apache", but
5621      it should be because the DSO files are Apache-specific.  Now
5622      libexecdir is treated the same way sysconfdir, datadir, localstatedir
5623      and includedir are already treated.
5624      [Charles Levert <charles@comm.polymtl.ca>] PR#2551
5625
5626   *) The <Limit> parsing routine was incorrectly treating methods as
5627      case-insensitive.  [Ken Coar]
5628
5629   *) The ap_bprintf() code neglected to test if there was an error on
5630      the connection.  ap_bflush() misdiagnosed a failure as a success.
5631      [Dean Gaudet]
5632
5633   *) add support for #perl arg interpolation in mod_include
5634      [Doug MacEachern]
5635
5636   *) API: Name changes of table_elts to ap_table_elts, is_table_empty
5637      to ap_is_table_empty and bgetflag to ap_bgetflag. [Ben Laurie]
5638
5639   *) PORT: Add UnixWare 7 support
5640      [Vadim Kostoglodoff <vadim@olly.ru>] PR#2463
5641
5642   *) Fix the Guess-DSO-flags-from-Perl stuff in src/Configure: "perl" was
5643      used instead of "$PERL" which contains the correctly determined Perl
5644      interpreter (important for instance on systems where "perl" and "perl5"
5645      exists, like BSDI or FreeBSD, etc).
5646      [Ralf S. Engelschall] PR#2505
5647
5648   *) Move the initial suEXEC-related startup message from plain
5649      fprintf()/stderr to a delayed ap_log_error()-based one to avoid problems
5650      when Apache is started from inetd (instead of standalone). Under this
5651      situation startup messages on stderr lead to problems (the line is sent
5652      to the client in front of the requested document).
5653      [Ralf S. Engelschall] PR#871, PR#1318
5654
5655   *) Add a flag so ap_fnmatch() can be used for case-blind pattern matching.
5656      [Ken Coar, Dean Gaudet]
5657
5658   *) WIN32: Don't collapse multiple slashes in PATH_INFO.
5659      [Ben Laurie, Bill Stoddard <wgstodda@us.ibm.com>] PR#2274
5660
5661   *) WIN32 SECURITY: Eliminate trailing "."s in path components. These are
5662      ignored by the Windows filesystem, and so can be used to bypass security.
5663      [Ben Laurie, Alexei Kosut].
5664
5665   *) We now attempt to dump core when we get SIGILL. [Jim Jagielski]
5666
5667   *) PORT: remove broken test for MAP_FILE in http_main.c.
5668      [Wilfredo Sanchez <wsanchez@apple.com>]
5669
5670   *) PORT: Change support/apachectl to use "kill -0 $pid" to test if the
5671      httpd is running.  This should be more portable than figuring out
5672      which of three dozen different versions of "ps" are installed.
5673      [a cast of dozens]
5674
5675   *) WIN32: If we can't figure out how to execute a file in a script
5676      directory, bail out of the request with an error message.  [W G Stoddard]
5677
5678   *) WIN32 SECURITY: Eliminate directories consisting of three or more dots;
5679      these are treated by Win32 as if they are ".." but are not detected by
5680      other machinery within Apache. This is something of a kludge but
5681      eliminates a security hole. [Manoj Kasichainula, Ben Laurie]
5682
5683   *) Move ap_escape_quotes() from src/ap to src/main/util.c; it uses
5684      pools and thus pollutes libap (until the pool stuff is moved there).
5685      [Ken Coar]
5686
5687   *) IndexIgnore should be case-blind on Win32 (and any other case-aware
5688      but case-insensitive platforms).  New #define for this added to conf.h
5689      (CASE_BLIND_FILESYSTEM).  [Ken Coar] PR#2455
5690
5691   *) Enable DSO support for OpenBSD in general, not only for 2.x, because it
5692      also works for OpenBSD 1.x. [Ralf S. Engelschall]
5693
5694   *) PORT: Fix compilation problem on ARM Linux.
5695      [Sam Kington <sam@illuminated.co.uk>] PR#2443
5696
5697   *) Let APACI's configure script determine some configuration parameters
5698      (Group, Port, ServerAdmin, ServerName) via some intelligent tests to
5699      remove some of the classical hurdles for new users when setting up
5700      Apache. This is done per default because it is useful for the average
5701      user. Package authors can use the --without-confadjust option to disable
5702      these configuration adjustments.
5703      [Ralf S. Engelschall]
5704
5705   *) Added an EXTRA_DEPS configuration parameter which can be used
5706      to add an extra Makefile dependency for the httpd target, for instance
5707      to external third-party libraries, etc.
5708      [Ralf S. Engelschall]
5709
5710   *) Add <IfDefine>..</IfDefine> sections to the core module (with same spirit
5711      as <IfModule>..</IfModule> sections) which can be used to skip or process
5712      contained commands dependend of ``-D PARAMETER'' options on the command
5713      line. This can be used to achieve logical conditions like <IfDefine
5714      ReverseProxy> instead of physically ones (e.g. <IfModule mod_proxy.c>)
5715      and thus especially can be used for conditionally loading DSO-based
5716      modules via LoadModule, etc. [Ralf S. Engelschall]
5717
5718   *) PORT: clean up a warning in mod_status for OS/2.  [Brian Havard]
5719
5720   *) Make table elements const. This may prevent obscure errors. [Ben Laurie]
5721
5722   *) Fix parsing of FTP `SIZE' responses in proxy module: The newline was not
5723      truncated which forced following HTTP headers to be data in the HTTP
5724      reponse. [Ralf S. Engelschall, Charles Fu <ccwf@bacchus.com>] 
5725      PR#2412, 2367
5726
5727   *) Portability fix for APACI shadow tree support: Swap order of awk and sed
5728      in top-level configure script to avoid sed fails on some platforms (for
5729      instance SunOS 4.1.3 and NCR SysV) because of the non-newline-termined
5730      output of Awk. [Bill Houle <bhoule@sandiegoca.ncr.com>] PR#2435
5731
5732   *) Improve performance of directory listings (mod_autoindex) by comparing
5733      integer keys (last-modified and size) as integers rather than converting
5734      them to strings first.  Also use a set of explicit byte tests rather
5735      than strcmp() to check for parent directory-ness of an entry.  Oh, and
5736      make sure the parent directory (if displayed) is *always* listed first
5737      regardless of the sort key.  Overall performance winnage should be good
5738      in CPU time, instruction cache, and memory usage, particularly for large
5739      directories.  [Ken Coar]
5740
5741   *) Add a tiny but useful goody to APACI's configure script: The generation
5742      of a config.status script (as GNU Autoconf does) which remembers the used
5743      configure command and hence can be used to restore the configuration by
5744      just re-running this script or for remembering the configuration between
5745      releases.
5746      [Ralf S. Engelschall]
5747
5748   *) Add httpd -t (test) option for running configuration syntax tests only.
5749      If something is broken it complains and exits with a return code
5750      non-equal to 0. This can be used manually by the user to check the Apache
5751      configuration after editing and is also automatically used by apachectl
5752      on (graceful) restart command to make sure Apache doesn't die on restarts
5753      because of a configuration which is now broken since the last (re)start.
5754      This way `apachectl restart' can be used inside cronjobs without having
5755      to expect Apache to be falling down. Additionally the httpd -t can be run
5756      via `apachectl configtest'.
5757      [Ralf S. Engelschall] PR#2393
5758   
5759   *) Minor display fix for "install" target of top-level Makefile:
5760      the displayed installation command was incorrect although the
5761      executed command was correct. Now they are in sync.
5762      [Ralf S. Engelschall] PR#2402
5763
5764   *) Correct initialization of variable `allowed_globals' in http_main.c
5765      [Justin Bradford <justin@ukans.edu>] PR#2400
5766
5767   *) Apache would incorrectly downcase the entire Content-Type passed from
5768      CGIs.  This affected server-push scripts and such which use
5769      multipart/x-mixed-replace;boundary=ThisRandomString.
5770      [Dean Gaudet] PR#2394
5771
5772   *) PORT: QNX update to properly guess 32-bit systems.
5773      [Sean Boudreau <seanb@qnx.com>] PR#2390
5774
5775   *) Make sure the DSO emulation code for HPUX finds the proprietary shl_xxx()
5776      functions which are in libdld under HPUX 9/10.
5777      [Ralf S. Engelschall] PR#2378
5778
5779   *) Make sure the "install" target of the top-level Makefile doesn't break
5780      because of a return code of 1 from an "if" (for instance under braindead
5781      Ultrix the result code of an "if" construct is 1 if the "then" clause
5782      didn't match). [Ralf S. Engelschall]
5783
5784   *) Add an additional "dummy" target to the "$(LIB)" target in generated
5785      modules/xxx/Makefile's to avoid problems with SVR4 Make under "full-DSO"
5786      situation (no libxxx.a built, only mod_xxx.so's) where LIB and OBJS are
5787      empty. [Ralf S. Engelschall, Dean Gaudet, Martin Kraemer]
5788
5789   *) Replace two bad sprintf() calls with ap_snprintf() variants in
5790      mod_rewrite. [Ralf S. Engelschall]
5791
5792   *) Fix missing usage description for MetaFiles directive.
5793      [David MacKenzie <djm@va.pubnix.com>] PR#2384
5794
5795   *) mod_log_config wouldn't let vhosts use log formats defined in the
5796      main server.  [Christof Damian <damian@mediaconsult.com>] PR#2090
5797
5798   *) mod_usertrack was corrupting the client hostname.  As part of the
5799      fix, the cookie values were slightly extended to include the
5800      fully qualified hostname of the client.
5801      [Dean Gaudet] PR#2190, 2229, 2366
5802
5803   *) Fix a typo in pool debugging code.  [Alvaro Martinez Echevarria]
5804
5805   *) mod_unique_id did not work on alpha linux (in general on any
5806      architecture that has 64-bit time_t).
5807      [Alvaro Martinez Echevarria]
5808
5809   *) PORT: Make SCO 5 (and probably 3) compile again. [Ben Laurie]
5810
5811   *) PORT: NCR MPRAS systems have the same bug with SIGHUP restart that
5812      Solaris systems experience.  So define WORKAROUND_SOLARIS_BUG.
5813      [Klaus Weber <kweber@chephren.germany.ncr.com>] PR#1973
5814
5815   *) Change "Options None" to "Options FollowSymLinks" in the 
5816      <Directory /> section of the default access.conf-dist
5817      (and -win even though it doesn't matter there).  This has better
5818      performance, and more intuitive semantics.  [Dean Gaudet]
5819
5820   *) PORT: Updated support for UTS 2.1.2.
5821      [Dave Dykstra <dwd@bell-labs.com>] PR#2320
5822
5823   *) Fix symbol export list (src/support/httpd.exp) after recent
5824      API changes in the child spawning area.
5825      [Jens-Uwe Mager <jum@helios.de>]
5826
5827   *) Workaround for configure script and old `test' commands which do not
5828      support the -x flag (for instance under platforms like Ultrix). This is
5829      solved by another helper script findprg.sh which searches for Perl and
5830      Awk like PrintPath but _via different names_.
5831      [Ralf S. Engelschall]
5832
5833   *) Remove the system() call from htpasswd.c, which eliminates a system
5834      dependancy.  ["M.D.Parker" <mdpc@netcom.com>] PR#2332
5835
5836   *) PORT: Fix compilation failures on NEXTSTEP.
5837      [Rex Dieter <rdieter@math.unl.edu>] PR#2293, 2316
5838
5839   *) PORT: F_NDELAY is a typo, should have been FNDELAY.  There's also
5840      O_NDELAY on various systems.  [Dave Dykstra <dwd@bell-labs.com>] PR#2313
5841
5842   *) PORT: helpers/GuessOS updates for various versions for NCR SVR4.
5843      [juerg schreiner <j.schreiner@zh.ch>,
5844      Bill Houle <Bill.Houle@SanDiegoCA.NCR.COM>] PR#2310
5845
5846   *) Fix recently introduced Win32 child spawning code in mod_rewrite.c which
5847      was broken because of invalid ap_pstrcat() -> strcat() transformation.
5848      [Ralf S. Engelschall]
5849
5850   *) Proxy Cache Fixes: account for directory sizes, fork off garbage collection
5851      to continue in background, use predefined types (off_t, size_t, time_t),
5852      log the current cache usage percentage at LogLevel debug
5853      [Martin Kraemer, based on discussion between Dean Gaudet & Dirk vanGulik]
5854
5855 Changes with Apache 1.3.0
5856
5857   *) Using a type map file as a custom error document was not possible.
5858      [Lars Eilebrecht] PR#1031
5859
5860   *) Avoid problems with braindead Awks by additionally searching for gawk 
5861      and nawk in APACI's configure script.
5862      [Dave Dykstra <dwd@bell-labs.com>, Ralf S. Engelschall] PR#2319
5863
5864   *) Rename md5.h to ap_md5.h to avoid conflicts with native MD5 on
5865      some systems. [Randy Terbush]
5866
5867   *) Change usage of perror()+fprintf(stderr,...) in mod_rewrite to
5868      more proper ap_log_error() variants.
5869      [Ralf S. Engelschall]
5870
5871   *) Make sure the argument for the --add-module option to APACI's configure
5872      script is of type [path/to/]mod_xxx.c because all calculations inside
5873      configure and src/Configure depend on this.
5874      [Ralf S. Engelschall] PR#2307
5875
5876   *) Changes usage of perror/fprintf to stderr to more proper ap_log_error
5877      in mod_mime, mod_log_referer, mod_log_agent, and mod_log_config.
5878      [Brian Behlendorf]
5879
5880   *) Various OS/2 cleanups ["Brian Havard" <brianh@kheldar.apana.org.au>]
5881
5882   *) PORT: QNX needed a #include <sys/mman.h>; and now it uses flock
5883      serialized accept to handle multiple sockets.
5884      [Rob Saccoccio <robs@InfiniteTechnology.com>] PR#2295, 2296
5885  
5886   *) Have NT properly set the directory for CGI scripts 
5887      (& other spawned children)
5888      [W G Stoddard <wgstodda@us.ibm.com>]
5889
5890   *) Propagate environment to CGI scripts correctly in Win32.
5891      [W G Stoddard <wgstodda@us.ibm.com>] PR#2294
5892
5893   *) Some symbol renaming:
5894      ap_spawn_child_err became ap_spawn_child
5895      ap_spawn_child_err_buff became ap_bspawn_child
5896      spawn_child was obsoleted and moved to compat.h
5897      [Brian Behlendorf]
5898
5899   *) Upgrade the child spawning code in mod_rewrite for the RewriteMap
5900      programs: ap_spawn_child_err() is used and the Win32 case now uses
5901      CreateProcess() instead of a low-level execl() (which caused problems in
5902      the past under Win32).
5903      [Ralf S. Engelschall]
5904
5905   *) A few cosmetics and trivial enhancements to APXS to make the
5906      generated Makefile more user friendly. [Ralf S. Engelschall]
5907
5908   *) Proxy Fix: The proxy special failure routine ap_proxyerror()
5909      was updated to use the normal apache error processing, thereby allowing
5910      proxy errors to be treated by ErrorDocument's as well. For this
5911      purpose, a new module-to-core communication variable "error-notes"
5912      was introduced; the proxy (and possibly other modules) communicates
5913      its error text using this variable. Its content is copied to a new
5914      cgi-env-var REDIRECT_ERROR_NOTES for use by ErrorDocuments.
5915      The old proxy special error routine ap_proxy_log_uerror()
5916      was replaced by regular ap_log_error() calls, many messages were made
5917      more informative. 
5918      [Martin Kraemer] PR#494, 1259
5919
5920   *) SECURITY: A possible buffer overflow in the ftp proxy was fixed.
5921      [Martin Kraemer]
5922
5923   *) Transform the configure message "You need root privileges for suEXEC"
5924      from a fatal error into a (more friendly) warning because the building
5925      ("make") of Apache we can allow, of course. Root privileges are needed
5926      only for the installation step ("make install"). So make sure the
5927      user is aware of this fact but let him proceed as long as he can.
5928      [Ralf S. Engelschall] PR#2288
5929   
5930   *) Renamed three more functions to common ap_ prefix which we missed at the
5931      Big Symbol Renaming because they're #defines and not real C functions:
5932      is_default_port(), default_port(), http_method().
5933      [Ralf S. Engelschall]
5934
5935   *) A zero-length name after a $ in an SSI document should cause
5936      just the $ to be in the expansion.  This was broken during the
5937      security fixes in 1.2.5.  [Dean Gaudet] PR#1921, 2249
5938
5939   *) Call ap_destroy_sub_req() in ap_add_cgi_vars() to reclaim some
5940      memory.  [Rob Saccoccio <robs@InfiniteTechnology.com>] PR#2252
5941
5942   *) Fix src/support/httpd.exp (DSO export file which is currently only
5943      used under AIX) because of recent changes to function names.
5944      [Ralf S. Engelschall]
5945
5946 Changes with Apache 1.3b7
5947
5948   *) Make sure a MIME-type can be forced via a RewriteRule even when no
5949      substitution takes place, for instance via the following rule:
5950      ``RewriteRule ^myscript$ - [T=application/x-httpd-cgi]'' This was often
5951      requested by users in the past to force a single script without a .cgi
5952      extension and outside any cgi-bin dirs to be executed as a CGI program.
5953      [Ralf S. Engelschall] PR#2254
5954
5955   *) A fix for protocol issues surrounding 400, 408, and
5956      414 responses. [Ed Korthof]
5957
5958   *) Ignore MaxRequestsPerChild on WIN32. [Brian Behlendorf]
5959
5960   *) Fix discrepancy in proxy_ftp.c which was causing failures when 
5961      trying to connect to certain ftpd's, such as anonftpd.  
5962      [Rick Ohnemus <rick@ecompcon.com>]
5963
5964   *) Make mod_rewrite use ap_open_piped_log() for RewriteLog directive's
5965      logfile instead of fiddling around itself with child spawning stuff.
5966      [Ralf S. Engelschall]
5967
5968   *) Made RefererIgnore case-insensitive.
5969
5970   *) Mod_log_agent, mod_log_referer now use ap_open_piped_log for piped logs.
5971      [Brian Behlendorf]
5972
5973   *) Replace use of spawn_child with ap_spawn_child_err_buff, to make everything
5974      "safe" under Win32.  In: mod_include.c, mod_mime_magic.c
5975      [Brian Behlendorf]
5976
5977   *) Improve RFC1413 support. [Bob Beck <beck@bofh.ucs.ualberta.ca>]
5978
5979   *) Fix support script `dbmmanage': It was unable to handle some sort
5980      of passwords, especially passwords with "0" chars.
5981      [Ralf S. Engelschall] PR#2242
5982
5983   *) WIN32: Clicking on "Last Modified" in a fancy index caused a crash. Fixed.
5984      [Ben Laurie] PR#2238
5985
5986   *) WIN32: CGIs could cause a hang (because of a deadlock in the standard C
5987      library), so CGI handling has been changed to use Win32 native handles
5988      instead of C file descriptors.
5989      [Ben Laurie and Bill Stoddard <wgstodda@us.ibm.com>] PR#1129, 1607
5990
5991   *) The proxy cache would store an incorrect content-length in the cached
5992      file copy after a cache update. That resulted in repeated fetching
5993      of the original copy instead of using the cached copy.
5994      [Ernst Kloppenburg <kloppen@isr.uni-stuttgart.de>] PR#2094
5995
5996   *) The Makefiles assumed that DSO files are build via $(LD). This
5997      is broken for two reasons: First we never defined at least LD=ld
5998      somewhere to make sure this works (it was silently assumed that most Make
5999      provide a built-in LD definition - ARGL!) and second using the generic LD
6000      variable is not the truth. Instead a special variable named LD_SHLIB is
6001      reasonable because although "ld" is usually the default, the command for
6002      building DSO files can be "libtool" or even "cc" on some systems.
6003      [Ralf S. Engelschall]
6004
6005   *) Replace the AddVersionPlatform directive with ServerTokens which
6006      provides for more control over the format of the Server:
6007      header line. SERVER_SUBVERSION is no longer supported;
6008      all module should use the ap_add_version_component()
6009      API function instead. [Jim Jagielski]
6010
6011   *) Support for the NCR MP/RAS 3.0
6012      [John Withers <withers@semi.kcsc.mwr.irs.gov>]
6013
6014   *) The LDFLAGS_SHLIB_EXPORT variable of src/Configuration[.tmpl] was
6015      not retrieved in src/Configure and thus was not useable.
6016      [Ralf S. Engelschall]
6017  
6018   *) Various Makefile consistency cleanups:
6019      - make OSDIR also automatically be relative to src/ like INCDIR
6020      - SUBDIRS is now generated in src/Makefile only and not in
6021        Makefile.config because it is a local define for this location.
6022      - remove BROKEN_BPRINTF_FLAGS because is it no longer used inside
6023        any Makefile but make sure that at least the "-K inline" is kept in
6024        CFLAGS for SCO 5.
6025      - update the "depend" targets in Makefile.tmpl files to use $(OSDIR), too.
6026      - updated the dependencies theirself
6027      - removed not existing SHLIB variable from "clean" targets
6028      - replaced SHLIB_OBJS/SHLIBS_OBJ consistently with OBJS_PIC because OBJS
6029        already exists and OBJS_PIC are also just plain objects and have not
6030        directly to do with "shared" things. The only difference is that they
6031        contain PIC. So OBJS_PIC is the more canonical name.
6032      - Updated the Makefile-dependency lines for OBJS_PIC
6033      - Removed the Makefile-dependency line in Configure to avoid double
6034        definitions
6035      - replaced ugly xx-so.o/xx.so-o hack with a clean and consistent usage
6036        of xxx.lo as GNU libtool does with its PIC objects
6037      - reduce local complexity in modules Makefile.tmpl by moving the last
6038        existing target "depend" to the generation section in Configure, too.
6039      - removed the historical $(SPACER) which was used in the past together
6040        with BROKEN_BPRINTF_FLAGS to avoid zig-zags in the build process. This
6041        is no longer needed.
6042      - force the build and run of the gen_xxx programs under main/ as the
6043        first step before building the objects because it looks cleaner
6044      [Ralf S. Engelschall]
6045
6046   *) WIN32: Make Win32 work again after the /dev/null DoS fix.
6047      [Ben Laurie]
6048
6049   *) WIN32: Check for buffer overflows in ap_os_canonical_filename.
6050      [Ben Laurie]
6051
6052   *) WIN32: Don't force ISAPI headers to finish with \n.
6053      [Jim Patterson <Jim.Patterson@Cognos.COM>, Ben Laurie] PR#2060
6054
6055   *) When opening "configuration" files (like httpd.conf, htaccess
6056      and htpasswd), Apache will not allow them to be non-/dev/null
6057      device files. This closes a DoS hole. At the same time,
6058      we use ap_pfopen to open these files to handle timeouts.
6059      [Jim Jagielski, Martin Kraemer]
6060
6061   *) Apache will now log the reason its httpd children exit if they exit
6062      due to an unexpected signal.  (It requires a new porting define,
6063      SYS_SIGLIST, which if defined should point to a list of text
6064      descriptions of the signals available.  See PORTING.)  [Dean Gaudet]
6065
6066   *) WIN32: chdir() doesn't make sense in a multithreaded environment 
6067      like WIN32.  Before, Win32 CGI's could have had sporadic failures 
6068      if a chdir call from one thread was made between another chdir call 
6069      and a spawn in another thread.  So, for now don't chdir for CGI scripts 
6070      in WIN32.  The current CGI "spec" is unclear as to whether it's 
6071      necessary.  Long-term fix is to either serialize the chdir/spawn combo 
6072      or use WIN32 native calls to spawn a process.  This temp fix was 
6073      necessary to remove this as a showstopper for 1.3's release. 
6074      [Brian Behlendorf]
6075
6076   *) Cleanup the suEXEC support in APACI and make it more safe:
6077      1. Add big fat hint in INSTALL about risks and to read the
6078         htdocs/manual/suexec.html document before using the suexec-related
6079         configure options.
6080      2. Make sure the user has at least provided one --suexec-xxxx option
6081         (specifies suEXEC parameters) in addition to --enable-suexec option.
6082         If only --enable-suexec is given APACI stops with a hint to INSTALL
6083         and htdocs/manual/suexec.html documents.
6084      3. Provide two additional --suexec-xxxx options to make the suEXEC
6085         configuration complete (especially for package maintainers who else
6086         had to patch the source tree) by providing ways to configure minimal
6087         UID/GID and safe PATH, too.
6088      [Ralf S. Engelschall]
6089
6090   *) Cleanup of the `configure --shadow' process:
6091      - make sure the configure script creates its temporary files in the
6092        shadow tree to avoid conflicts with parallel configure runs
6093      - removed unnecessary option "-r" from "rm" call for Makefiles
6094      - make sure the configure scripts creates the shadow-wrapper Makefile
6095        only when no shadow trees already exists
6096      - make sure "make distclean" removes the shadow-wrapper Makefile but only
6097        when no more shadow trees exists
6098      - overhauled mkshadow.sh script: now its more IFS-safe and approx. twice
6099        as fast (in the past it needed 70sec, now it runs just 38sec)
6100      - make sure CVS does not complain about the created files
6101        Makefille.<gnutriple> and directories src.<gnutriple>
6102      [Ralf S. Engelschall]
6103
6104   *) Added the ap_add_version_component() API routine and the
6105      AddVersionPlatform core directive.  The first allows modules to
6106      declare themselves in the Server response header field value,
6107      augmenting the SERVER_SUBVERSION define in the Configuration file
6108      with run-time settings (more useful in a loadable-module environment).
6109      AddVersionPlatform inserts a comment such as "(UNIX)" or "(Win32)"
6110      into the server version string.  [Ken Coar] PR#2056
6111
6112   *) Minor stability tweaks to avoid core dumps in ap_snprintf.
6113      [Martin Kraemer]
6114
6115   *) Emit the "Accept-Range" header for the default handler.
6116      [Brian Behlendorf] PR#1464
6117
6118   *) Add a note to httpd.conf-dist that apache will on some systems fail
6119      to start when the Group # is set to a negative or large positive value.
6120      [Martin Kraemer]
6121
6122   *) Make sure the module execution order is correct even when some modules
6123      are loaded under runtime (`LoadModule') via the DSO mechanism:
6124      1. The list of loaded modules is now a dynamically allocated one
6125         and not the original statically list from modules.c
6126      2. The loaded modules are now correctly setup by LoadModule for
6127         later use by the AddModule command.
6128      3. When the DSO mechanism for modules is used APACI's `install'
6129         target now enables all created `LoadModule' lines per default because
6130         this is both already expected by the user _and_ needed to avoid
6131         confusion with the next point and reduces the Makefile.tmpl complexity
6132      4. When the DSO mechanism for modules is used, APACI's `install'
6133         target now additionally makes sure the module list is reconstructed
6134         via a complete `ClearModuleList+AddModule...' entry.
6135      5. The support tool `apxs' now also makes sure an AddModule command
6136         is added in addition to the LoadModule command.
6137      6. The modules.c generation was extended to now contain two
6138         comments to make sure no one is confused by the confusing terminology
6139         of loading/linking (we use load=link+load & link=activate instead of
6140         the obvious load=activate & link=link :-( )
6141      This way now there is no longer a difference under execution time between
6142      statically and dynamically linked modules.
6143      [Ralf S. Engelschall]
6144
6145   *) Fix the generated mod_xxx.c from "apxs -g -f xxx" after the
6146      Big Symbol Renaming. [Ralf S. Engelschall]
6147
6148   *) Add a comment to mod_example.c showing the format of a FLAG command
6149      handler.  [Ken Coar]
6150
6151   *) Standardized the time format in mod_status to match that of other 
6152      places in the code (e.g. DATE_GMT).  PR#1551
6153
6154   *) Fix handling of %Z in timefmt strings for those platforms with no time
6155      zone information in their tm struct. [Paul Eggert <eggert@twinsun.com>]
6156      PR#754
6157
6158   *) Makes mod_rewrite, mod_log_config, mod_status and the ServerSignature 
6159      feature compatible with 'UseCanonicalName off' by changing  
6160      r->server->server_hostname to ap_get_server_name().  And I changed some 
6161      functions which use r->server->port to use ap_get_server_port() instead, 
6162      because if there's no Port directive in the config r->server->port is 0.
6163      [Lars Eilebrecht]
6164
6165   *) get/set_module_config are trivial enough to be better off inline.  Worth
6166      1.5% performance boost. [Dean Gaudet]
6167
6168   *) Fix off-by-one error in ap_proxy_date_canon() in proxy_util.c
6169      when ensuring 'x' is at least 30-chars big. [Jim Jagielski,
6170      Brian Behlendorf]
6171
6172   *) [BS2000 security] BS2000 needs an extra authentication to initialize
6173      the task environment to the unprivileged User id. Otherwise CGI scripts
6174      would have a way to gain super user access. [Martin Kraemer]
6175
6176   *) Fix debug log messages for BS2000/OSD: instead of logging the whole
6177      absolute path, only log base name of logging source as is done
6178      in unix. [Martin Kraemer]
6179
6180   *) Ronald Tschalaer's Accept-Encoding patch - preserve the "x-" in
6181      the encoding type from the Accept-Encoding header (if it's there)
6182      and use it in the response, as that's probably what it'll be expecting.
6183      [Ronald.Tschalaer@psi.ch]
6184
6185   *) Fix to mod_alias: translate_alias_redir is dealing with
6186      a URI, not a filename, so the check for drive letters for win32 
6187      and emx is not necessary. [Dean Gaudet]
6188
6189   *) WIN32: Allow .cmd as an executable extension.
6190      [Kari Likovuori <Kari.Likovuori@mol.fi>] PR#2146
6191
6192   *) Make Apache header files, and some variables, C++ friendly.
6193      [Michael Anderson's <mka@redes.int.com.mx>]
6194
6195   *) Child processes can now "signal" (by exiting with a status
6196      of APEXIT_CHILDFATAL) the parent process to abort and
6197      shutdown the server if the error in the child process was
6198      fatal enough. [Jim Jagielski]
6199
6200   *) mod_autoindex's find_itme() was sensitive to MIME type case.
6201      [Jim Jagielski] PR#2112
6202
6203   *) Make sure the referer_log and agent_log entries in the default httpd.conf
6204      file are also adjusted for the actual relative installation paths.
6205      [Ralf S. Engelschall] PR#2175
6206
6207   *) WIN32: Extensive overhaul of the way UNCs are handled. [Ben Laurie]
6208
6209   *) WIN32: Make roots of filesystems (e.g. c:/) work. [Ben Laurie]
6210      PR#1558
6211
6212   *) PORT: Various porting changes to support AIX 3.2, 4.1.5, 4.2 and 4.3.
6213      Additionally the checks for finding the vendor DSO library were moved
6214      from mod_so.c to Configure because first it needs $PLAT etc. and second
6215      mod_so already uses an abstraction layer and does not fiddle with the
6216      vendor functions itself.
6217      [Jens-Uwe Mager, Ralf S. Engelschall]
6218
6219   *) PORT: Some optimization defines for NetBSD
6220      [Jaromir Dolecek <dolecek@ics.muni.cz>] PR#2165
6221
6222   *) PORT: Dynamic Shared Object (DSO) support for NetBSD.
6223      [Jaromir Dolecek <dolecek@ics.muni.cz>, Ralf S. Engelschall] PR#2158
6224
6225   *) Add Dynamic Shared Object (DSO) support for AIX (at least 4.2 but older
6226      AIX variants should work fine, too. Even AIX 3.x should work). This is
6227      accomplished by using the free DSO emulation code from Jens-Uwe Mager
6228      which we put into a os/unix/os-dso-aix.c file.
6229      [Ralf S. Engelschall]
6230   
6231   *) PORT: Fix compiler warnings under AIX >= 4.2 where the manual pages imply
6232      that we should use NET_SIZE_T == int but the include files force size_t.
6233      [Ralf S. Engelschall]
6234
6235   *) Fix two bugs in select() handling in http_main.c.
6236      [Roy Fielding]
6237
6238   *) Suppress "error(0)" messages for ap_log_error() when the APLOG_NOERRNO
6239      is unset (as it is in situations like timeouts) where it is unclear
6240      whether errno is set or not.  [Martin Kraemer]
6241
6242   *) Just having APACI's localstatedir is too general and not enough for most
6243      of the systems. 1.3b6 again required manual APACI patches by package
6244      maintainers from RedHat and FreeBSD because for their filesystem layout a
6245      little bit more flexibility in configuring the paths is needed. Hence we
6246      provide three additional configure options (--runtimedir, --logfiledir,
6247      --proxycachedir) which now can be used for more granular adjustments if
6248      --localstatedir is not enough to fit the particular needs. As a nice
6249      side-effect this reduces some subdir fiddling in configure+Makefile.tmpl.
6250      [Ralf S. Engelschall]
6251
6252   *) Make the install root for "make install" in APACI's Makefile overrideable
6253      by package authors.  This way we are even more friendly to package
6254      maintainers (especially Debian and RedHat) who build for the real prefix
6255      via "configure --prefix=/<real>" but use a different local prefix via
6256      "make root=/tmp/apache install" for rolling the package without bristling
6257      the target location on their system. 
6258      [Ralf S. Engelschall]
6259
6260   *) Workaround sed limitations in APACI's configure script by now
6261      substituting in chunks of 50 commands (because for instance HPUX's vendor
6262      sed has a limit of max. 98 commands)
6263      [Ralf S. Engelschall] PR#2136
6264
6265   *) Adding SOCKS5 support and fixing existing SOCKS4 support.
6266      [Ralf S. Engelschall] PR#2140
6267
6268   *) Manually fix some symbols which were not renamed to prefix ap_ in the BIG
6269      RENAMING process because they are defined as pre-processor macros instead
6270      of real functions: bputc, bgetc, piped_log_write_fd, piped_log_read_fd
6271      [Ralf S. Engelschall]
6272
6273   *) Workaround braindead AWK's when generating ap_config.h: The split() and
6274      substr() functions cannot be nested under vendor AWK from Solaris 2.6.
6275      [Ralf S. Engelschall] PR#2139
6276
6277   *) Various bugfixes and cleanups for the APACI configure script:
6278      o fix IFS handling for _nested_ situation
6279      o fix Perl interpreter search: take first one found instead of last one
6280      o fix DSO consistency check
6281      o print error messages to stderr instead of stdout
6282      o add install-quiet for --shadow situation to Makefile stub
6283      o reduce complexity by avoiding sed-hacks for rule and module list loops
6284      [Ralf S. Engelschall]
6285
6286   *) Fix DEBUG_CGI situation in mod_cgi.c [David MacKenzie] PR#2114
6287
6288   *) Make sure the input field separator (IFS) shell variable is explicitly
6289      initialized correctly before _every_ `for' loop and also restored after
6290      the loops. [Ralf S. Engelschall]
6291
6292   *) Make sure that "make install" doesn't overwrite the `mime.types' and
6293      `magic' files from an existing Apache installation. Because people often
6294      customize these for own MIME and content types.
6295      [Ralf S. Engelschall]
6296
6297   *) PORT: Dynamic Shared Object (DSO) support for OpenBSD 2.x
6298      [Peter Galbavy, Ralf S. Engelschall] PR#2109
6299
6300   *) Fix the path to the ScoreBoardFile in the install-config target, too.
6301      [Ralf S. Engelschall] PR#2105
6302
6303   *) Let "configure" clear out the users parameters (provided as shell
6304      variables) to avoid side-effects in "src/Configure" when the user
6305      exported them (which is not needed, but some users do it). 
6306      [Ralf S. Engelschall] PR#2101
6307
6308   *) Provide backward compatibility from some old src/Configuration.tmpl
6309      parameter names to the canonical Autoconf-style shell variable names. For
6310      instance CFLAGS vs. EXTRA_CFLAGS. The EXTRA_xxx variants are accepted now
6311      but a hint message is displayed. [Ralf S. Engelschall]
6312   
6313   *) Make sure that "make install" doesn't overwrite the DocumentRoot and
6314      CGI scripts from an existing Apache installation. 
6315      [Ralf S. Engelschall, Jim Jagielski] PR#2084
6316
6317   *) Make `configure --compat' more "compatible" by first 
6318      let the libexecdir default to EPREFIX/libexec instead of EPREFIX/bin and
6319      second by making sure the "avoid-bristling-suffix" /apache is not
6320      appended to sysconfdir, datadir, localstatedir and includedir when
6321      --compat is used. [Ralf S. Engelschall, Lars Eilebrecht]
6322
6323   *) NeXT required strdup() in support/logresolve.c
6324      [Francisco Tomei <fatomei@sandburg.unm.edu>] PR#2082
6325
6326   *) AIX required sys/select.h in support/ab.c
6327      [Jens Schleusener <Jens.Schleusener@dlr.de>] PR#2081
6328
6329   *) Fix the path to the MimeMagicFile in the install-config target, too.
6330      [Ralf S. Engelschall] PR#2089
6331
6332   *) PORT: Added HP-UX 11 patches [Jeff Earickson <jaearick@colby.edu>]
6333
6334   *) If you start apache with the -S command line option it will dump
6335      out the parsed vhost settings.  This is useful for folks trying
6336      to figure out what is wrong with their vhost configuration.
6337      (Other dumps may be added in the future.) [Dean Gaudet]
6338
6339   *) Add %pA, %pI, and %pp codes to ap_vformatter (and hence ap_bprintf,
6340      ap_snprintf, and ap_psprintf).  See include/ap.h for docs.
6341      [Dean Gaudet]
6342
6343   *) Because /usr/local/apache is the default prefix the ``configure
6344      --compat'' option no longer has to set prefix, again. This way the
6345      --compat option honors a leading --prefix option. [Lars Eilebrecht]
6346
6347   *) PORT: Cast the first argument of dlopen() in ap_os_dso_load()
6348      to `char *' under OSF1 and FreeBSD 2.x where it is defined this way
6349      to avoid "discard const" warnings. [Ralf S. Engelschall]
6350
6351   *) If a specific handler is set for a file yet the request still
6352      ends up being handled by the default handler, log an error
6353      message before handling it.  This catches things such as trying 
6354      to use SSIs without mod_include enabled.  [Marc Slemko]
6355
6356   *) Fix error logging for the startup case where ap_log_error() still uses
6357      stderr as the target. Now the default log level is honored here, too.
6358      [Ralf S. Engelschall]
6359     
6360   *) PORT: Make sure some AWK's don't fail in src/Configure with "string too
6361      long" errors when generating the MODULES entry for src/Makefile
6362      [Ben Hyde, Ralf S. Engelschall]
6363
6364   *) Make sure src/Configure doesn't complain about the old directory
6365      /usr/local/etc/httpd/ when APACI is used.  [Lars Eilebrecht]
6366    
6367 Changes with Apache 1.3b6
6368
6369   *) PORT: Clean up warnings on Ultrix and HPUX.  [Ben Hyde]
6370  
6371   *) Adding DSO support for the HP/UX platform by emulating the dlopen-style
6372      interface via the similar but proprietary HP/UX shl_xxx-style system
6373      calls. [Ralf S. Engelschall]
6374
6375   *) PORT: Updated UnixWare 2.0.x and 2.1.x entries for DSO support and made
6376      APACI Makefile.tmpl "install" target more robust for sensible UnixWare
6377      Make. [Ralf S. Engelschall]
6378
6379   *) ++++ THE BIG SYMBOL RENAMING ++++
6380      To avoid symbol clashes with third-party code compiled into the server,
6381      we globally applied the prefix "ap_" to the following classes of
6382      functions:
6383         - Apache provided general functions (e.g., ap_cpystrn)
6384         - Public API functions (e.g., palloc, bgets)
6385         - Private functions which we can't make static (because of
6386           cross-object usage) but should be (e.g., new_connection)
6387      For backward source compatibility a new header file named compat.h was
6388      created which provides defines for the old symbol names and can be used
6389      by third-party module authors.
6390      [The Apache Group]
6391
6392   *) Added dynamic shared object (DSO) support for SVR4-derivates: The
6393      problem under SVR4 is that there is no command flag to force the linker
6394      to export the global symbols of the httpd executable therewith they are
6395      available to the DSO's. Instead of problematic hacks like creating a
6396      dummy.so file (containing dummy references to all global symbols) the
6397      httpd binary is linked against, we use a clean trick stolen from Perl 5:
6398      Placing the Apache core code itself into a DSO library named libhttpd.so.
6399      This way the global symbols _HAVE_ to be exported and thus are available
6400      to any manually loaded DSO's under runtime. To reduce the impact to the
6401      user to null we go even further and create a stub httpd executable which
6402      automatically keeps track of the DSO library loading itself and thus
6403      hides the complete mechanism from the user. Although the generation of
6404      this DSO library is automatically triggered for platforms which
6405      essentially need it (mostly all SVR4-derivates) it can be also enabled
6406      manually via the Rule SHARED_CORE. This can be interesting in the future
6407      where we perhaps exploit this libhttpd.so mechanism for providing nifty
6408      features like graceful upgrades, or whatever. 
6409      [Ralf S. Engelschall, Martin Kraemer]
6410
6411   *) Build the libraries before building the rest of the tools. [Ben Hyde]
6412
6413   *) Add "distclean" target to src/-Makefiles to provide "make distclean" also
6414      inside the src subtree (i.e. for non-APACI users). Following GNU Makefile
6415      conventions while "clean" removes only stuff created by "all" targets,
6416      "distclean" additionally removes the stuff from the configuration
6417      process. This way "make distclean" (hence the name) provides a fresh
6418      source tree as it was for distribution.
6419      [Ralf S. Engelschall]
6420
6421   *) Allow top-level (APACI) Makefile to break on build errors
6422      the same way the src/ subtree Makefiles breaks on them by replacing the
6423      initial APACI sed-subdir-display-kludge with a more clean
6424      variable-passing-solution: variable SDP can optionally hold the subdir
6425      prefix which is consistently used for displaying the subdir movement.
6426      This way even the top-level Makefile can stop correctly on errors as the
6427      user expects. [Ralf S. Engelschall]
6428
6429   *) Fixed ordering of argument checks for RewriteBase directive.
6430      [Todd Eigenschink <eigenstr@mixi.net>] PR#2045
6431
6432   *) Change Win32 IS_MODULE to SHARED_MODULE to match Unix' method of
6433      indicating that a module is being compiled for dynamic loading. Also
6434      remove #define IS_MODULE from modules and add SHARED_MODULE define
6435      to the mak/dsp files. [Alexei Kosut]
6436
6437   *) Reduce logging level of "normal" warning messages to APLOG_INFO,
6438      since we are now logging APLOG_WARNING by default. [Roy Fielding]
6439
6440   *) PORT: OS/2 tweak to deal with multiple .exe targets. [Brian Havard]
6441  
6442   *) Add documentation file and src/Configuration.tmpl entry for the
6443      experimental mod_mmap_static module. Because although it is and marked as
6444      an experimental one it is distributed and thus should be documented and
6445      prepared for configuration the same way as all others modules. 
6446      [Ralf S. Engelschall]
6447
6448   *) Add query (-q) option to apxs support tool to be able to manually query
6449      specific settings from apxs. This is needed for instance when you
6450      manually want to access Apache's header files and you need to assemble
6451      the -I option.  Now you can do -I`apxs -q INCLUDEDIR`.
6452      [Ralf S. Engelschall]
6453
6454   *) Now src/Configure uses a fallback strategy for the shared object support
6455      on platforms where no explicit information is available: If a Perl
6456      installation exists we ask it about its shared object support and if it's
6457      the dlopen-style one we shamelessly guess the compiler and linker flags
6458      for creating shared objects from Perls knowledge. Of course, the user is
6459      warning about what we are doing and informed that he should send us
6460      the guessed flags when they work. [Ralf S. Engelschall]
6461
6462   *) Provide APACI --without-support option to be able to disable the build
6463      and installation of the support tools from the src/support/ area.
6464      Although its useful to have these installed per default we should provide
6465      a way to compile and install without them for backward-compatibility.
6466      [Ralf S. Engelschall]
6467
6468   *) Add of the new APache eXtenSion (apxs) support tool for building and
6469      installing modules into an _already installed_ Apache package through the
6470      dynamic shared object (DSO) mechanism [mod_so.c]. The trick here is that
6471      this approach actually doesn't need the Apache source tree.  The
6472      (APACI-installed) server package is enough, because this now includes the
6473      Apache C header files (PREFIX/include) and the new APXS tool
6474      (SBINDIR/apxs).  The intend is to provide a handy tool for third-party
6475      module authors to build their Apache modules _OUTSIDE_ the Apache source
6476      tree while avoiding them to fiddle around with the totally platform
6477      dependend way of compiling DSO files. The tool supports all ranges of
6478      modules, from trivial ones (single mod_foo.c) to complex ones (like PHP3
6479      which has a mod_php3.c plus a pre-built libmodphp3-so.a) and even can
6480      on-the-fly generate a minimalistic Makefile and sample module for the
6481      first step to provide both a quick success event and to demonstrate the
6482      APXS mechanism to module authors. [Ralf S. Engelschall]
6483
6484   *) Fix core dumps in use of CONNECT in proxy.  
6485      [Rainer.Scherg@rexroth.de] PR#1326, #1573, #1942
6486
6487   *) Modify the log directives in httpd.conf-dist files to use CustomLog
6488      so that users have examples of how CustomLog can be used.
6489      [Lars Eilebrecht]
6490
6491   *) Add the new Apache Autoconf-style Interface (APACI) for the top-level of
6492      the Apache distribution tree.  Until Apache 1.3 there was no real
6493      out-of-the-box batch-capable build and installation procedure for the
6494      complete Apache package. This is now provided by a top-level "configure"
6495      script and a corresponding top-level "Makefile.tmpl" file.  The goal is
6496      to provide a GNU Autoconf-style frontend which is capable to both drive
6497      the old src/Configure stuff in batch and additionally installs the
6498      package with a GNU-conforming directory layout. Any options from the old
6499      configuration scheme are available plus a lot of new options for flexibly
6500      customizing Apache. [Ralf S. Engelschall]
6501
6502   *) The floating point ap_snprintf code wasn't threadsafe.
6503      Had to remove the HAVE_CVT macro in order to do threadsafe
6504      calling of the ?cvt() floating point routines.  [Dean Gaudet]
6505
6506   *) PORT: Add the SCO_SV port. [Jim Jagielski] PR#1962
6507
6508   *) PORT: IRIX needs the -n32 flag iff using the 'cc' compiler
6509      [Jim Jagielski] PR#1901
6510
6511   *) BUG: Configure was using TCC and CC inconsistently. Make sure
6512      Configure knows which CC we are using. [Jim Jagielski]
6513
6514   *) "Options +Includes" wasn't correctly merged if "+IncludesNoExec"
6515      was defined in a parent directory. [Lars Eilebrecht]
6516
6517   *) API: ap_snprintf() code mutated into ap_vformatter(), which is
6518      a generic printf-style routine that can call arbitrary output
6519      routines.  Use this to replace http_bprintf.c.  Add new routines
6520      psprintf(), pvsprintf() which allocate the exact amount of memory
6521      required for a string from a pool.  Use psprintf() to clean up
6522      various bits of code which used ap_snprintf()/pstrdup().
6523      [Dean Gaudet]
6524
6525   *) PORT: HAVE_SNPRINTF doesn't do anything any longer.  This is because
6526      ap_snprintf() has different semantics and formatting codes than
6527      snprintf().  [Dean Gaudet]
6528
6529   *) SIGXCPU and SIGXFSZ are now reset to SIG_DFL at boot-time.  This
6530      is necessary on at least Solaris where the /etc/rc?.d scripts
6531      are run with these signals ignored, and "SIG_IGN" settings are
6532      maintained across exec().
6533      [Rein Tollevik <reint@sys.sol.no>] PR#2009
6534
6535   *) Fix the check for symbolic links in ``RewriteCond ... -l'': stat() was
6536      used instead of lstat() and thus this flag didn't work as expected.
6537      [Rein Tollevik <reint@sys.sol.no>] PR#2010
6538
6539   *) Fix the proxy pass-through feature of mod_rewrite for the case of
6540      existing QUERY_STRING now that mod_proxy was recently changed because of
6541      the new URL parsing stuff. [Ralf S. Engelschall]
6542
6543   *) A few changes to scoreboard definitions which helps gcc generate
6544      better code.  [Dean Gaudet]
6545
6546   *) ANSI C doesn't guarantee that "int foo : 2" in a structure will
6547      be a signed bitfield.  So mark a few bitfields as signed to
6548      ensure correct code.  [Dean Gaudet]
6549
6550   *) The default for HostnameLookups was changed to Off, but there
6551      was a problem and it wasn't taking effect. [Dean Gaudet]
6552
6553   *) PORT: Clean up undefined signals on some platforms (SCO, BeOS).
6554      [Dean Gaudet]
6555
6556   *) After a SIGHUP the listening sockets in the parent weren't
6557      properly marked for closure on fork().
6558      [Jürgen Keil <jk@tools.de>] PR#2000
6559  
6560   *) Allow %2F in two situations: 1) it is in the query part of the URI,
6561      therefore not exposed to %2F -> '/' translations and 2) the request
6562      is a proxy request, so we're not dealing with a local resource anyway.
6563      Without this, the proxy would fail to work for any URL's with
6564      %2f in them (occurs quite often in
6565      http://.../cgi-bin/...?http%3A%2F%2F... references) [Martin Kraemer]
6566
6567   *) Protect against FD_SETSIZE mismatches.  [Dean Gaudet]
6568
6569   *) Make the shared object compilation command more portable by avoiding
6570      the direct combination of `-c' & `-o' which is not honored by some
6571      compilers like UnixWare's cc. [Ralf S. Engelschall]
6572
6573   *) WIN32: the proxy was creating filenames missing the last four
6574      characters.  While this normally doesn't stop anything from 
6575      working, it can result in extra collisions.  
6576      [Tim Costello <tjcostel@socs.uts.edu.au>] PR#1890
6577
6578   *) Now mod_proxy uses the response string (in addition to the response status
6579      code) from the already used FTP SIZE command to setup the Content-Length
6580      header if available. [Ralf S. Engelschall] PR#1183
6581
6582   *) Reanimated the (still undocumented) proxy receive buffer size directive:
6583      Renamed from ReceiveBufferSize to ProxyReceiveBufferSize because the old
6584      name was really too generic, added documentation for this directive to
6585      the mod_proxy.html and corrected the hyperlink to it in the
6586      new_features_1.3.html document.  [Ralf S. Engelschall] PR#1348
6587
6588   *) Fix a bug in the src/helpers/fp2rp script and make it a little bit
6589      faster [Martin Kraemer]
6590   
6591   *) Make Configure die when you give it an unknown command switch.
6592      [Ben Hyde]
6593
6594   *) Add five new and fresh manpages for the support programs: dbmmanage.1,
6595      suexec.8, htdigest.1, rotatelogs.8 and logresolve.8.  Now all up-to-date
6596      and per default compiled support programs have manual pages - just to
6597      document our stuff a little bit more and to be able to do really
6598      Unix-like installations ;-) [Ralf S. Engelschall]
6599
6600   *) Major cleanups to the Configure script to make it and its generated
6601      Makefiles again readable and maintainable: add SRCDIR option, removed
6602      INCLUDES_DEPTH[0-2] kludge, cleanup of TARGET option, cleanup of
6603      generated sections, consequently added Makefile headers with inheritance
6604      information, added subdir movement messages for easier following where
6605      the build process currently stays (more verbose then standard Make, less
6606      verbose than GNU make), same style to comments in the Configure script,
6607      added Apache license header, fixed a few bugs, etc. [Ralf S. Engelschall]
6608      
6609   *) Add the new ApacheBench program "ab" to src/support/: This is derived
6610      from the ZeusBench benchmarking program and can be used to determine the
6611      response performance of an Apache installation. This version is
6612      officially licensed with Zeus Technology, Ltd. See the license agreement
6613      statements in <199803171224.NAA24547@en1.engelschall.com> in apache-core.
6614      [Ralf S. Engelschall]
6615
6616   *) API: Various core functions that are definately not part of the API
6617      have been made static, and a few have been marked API_EXPORT.  Still
6618      more have been marked CORE_EXPORT and are not intended for general
6619      use by modules.  [Doug MacEachern, Dean Gaudet]
6620
6621   *) mod_proxy was not clearing the Proxy-Connection header from
6622      requests; now it does.  This did not violate any spec, however 
6623      causes poor interactions when you are talking to remote proxies.  
6624      [Marc Slemko] PR#1741
6625
6626   *) Various cleanups to the command line interface and manual pages.
6627      [Ralf S. Engelschall]
6628
6629   *) cfg_getline() was not properly handling lines that did not end
6630      with a line termination character.  [Marc Slemko] PR#1869, 1909
6631
6632   *) Performance tweak to mod_log_config.  [Dmitry Khrustalev]
6633
6634   *) Clean up some undocumented behavior of mod_setenvif related to
6635      "merging" two SetEnvIf directives when they match the same header
6636      and regex.  Document that mod_setenvif will perform comparisons in
6637      the order they appear in the config file.  Optimize mod_setenvif by
6638      doing more work at config time rather than at runtime.
6639      [Dean Gaudet]
6640
6641   *) src/include/ap_config.h now wraps it's #define's with #ifndef/#endif's
6642      to allow for modules to overrule them and to reduce redefinition
6643      warnings [Jim Jagielski]
6644
6645   *) [PORT] For A/UX change the OS-#define for -DAUX to -DAUX3.
6646      [Jim Jagielski]
6647
6648   *) Making the hard-coded cross-module function call mime_find_ct() (from
6649      mod_proxy to mod_mime) obsolete by making sure the API hook for MIME type
6650      checking is really called even for proxy requests except for URLs with
6651      HTTP schemes (because there we can optimize by not running the type
6652      checking hooks due to the fact that the proxy gets the MIME Content-type
6653      from the remote host later). This change cleans up mod_mime by removing
6654      the ugly export kludge, makes the one-liner file mod_mime.h obsolete, and
6655      especially unbundles mod_proxy and mod_mime. This way they both now can
6656      be compiled as shared objects and are no longer tied together. 
6657      [Ralf S. Engelschall]
6658
6659   *) util.c cleanup and speedup. [Dean Gaudet]
6660
6661   *) API: Clarification, pstrndup() will always copy n bytes of the source
6662      and NUL terminate at the (n+1)st byte.  [Dean Gaudet]
6663
6664   *) Mark module command_rec and handler_rec structures const so that they
6665      end up in the read-only data section (and are friendlier to systems
6666      that don't do optimistic memory allocation on fork()). [Dean Gaudet]
6667
6668   *) Add check to the "Port" directive to make sure the specified 
6669      port is in the appropriate range.  [Ben Hyde]
6670
6671   *) Performance improvements to invoke_handler().
6672      [Dmitry Khrustalev <dima@bog.msu.su>]
6673
6674   *) Added support for building shared objects even for library-style modules
6675      (which are built from more than one object file). This now provides the
6676      ability to build mod_proxy as a shared object module. Additionally
6677      modules like mod_example are now also supported for shared object
6678      building because the generated Makefiles now no longer assume there is at
6679      least one statically linked module. [Ralf S. Engelschall]
6680
6681   *) API: Clarify usage of content_type, handler, content_encoding,
6682      content_language and content_languages fields in request_rec.  They
6683      must always be lowercased; and the strings pointed to shouldn't
6684      be modified (you must copy them to modify them).  Fix a few bugs
6685      related to this.  [Dean Gaudet]
6686
6687   *) API: Clarification: except for RAW_ARGS, all command handlers can
6688      treat the char * parameters as permanent, and modifiable.  There
6689      is no need to pstrdup() them.  Clean up some needless pstrdup().
6690      [Dean Gaudet]
6691
6692   *) Now mod_so keeps track of which module shared objects with which names
6693      are loaded and thus avoids multiple loading and unloading and irritating
6694      error_log messages. [Ralf S. Engelschall]
6695
6696   *) Prior to the existence of mod_setenv it was necessary to tweak the TZ
6697      environment variable in the apache core.  But that tweaking interferes
6698      with mod_setenv.  So don't tweak if the user has specified an explicit
6699      TZ variable.  [Jay Soffian <jay@cimedia.com>] PR#1888
6700
6701   *) rputs() did not calculate r->sent_bodyct properly.
6702      [Siegmund Stirnweiss <siegst@kat.ina.de>] PR#1900
6703
6704   *) The CGI spec says that REMOTE_HOST should be set to the remote hosts's
6705      name, or left unset if this value is unavailable.  Apache was setting
6706      it to the IP address when unavailable.
6707      [Tony Finch <fanf@demon.net>] PR#1925
6708
6709   *) Various improvements to the configuration and build support for compiling
6710      modules as shared objects. Especially Solaris 2.x, SunOS 4.1, IRIX and
6711      OSF1 support with GCC and vendor compilers was added.  This way shared
6712      object support is now provided out-of-the-box for FreeBSD, Linux,
6713      Solaris, SunOS, IRIX and OSF1. In short: On all major platforms!
6714      [Ralf S. Engelschall]
6715
6716   *) Minor cleanup in http_main -- split QNX and OS2 specific "mmap"
6717      scoreboard code into separate #defines -- USE_POSIX_SCOREBOARD
6718      and USE_OS2_SCOREBOARD.  [Dean Gaudet]
6719
6720   *) Fix one more special locking problem for RewriteMap programs in
6721      mod_rewrite: According to the documentation of flock(), "Locks are on
6722      files, not file descriptors.  That is, file descriptors duplicated
6723      through dup(2) or fork(2) do not result in multiple instances of a lock,
6724      but rather multiple references to a single lock. If a process holding a
6725      lock on a file forks and the child explicitly unlocks the file, the
6726      parent will lose its lock.". To overcome this we have to make sure the
6727      RewriteLock file is opened _AFTER_ the childs were spawned which is now
6728      the case by opening it in the child_init instead of the module_init API
6729      hook. [Ralf S. Engelschall] PR#1029
6730
6731   *) Change to Location and LocationMatch semantics.  LocationMatch no
6732      longer lets a single slash match multiple adjacent slashes in the
6733      URL.  This change is for consistency with RewriteRule and
6734      AliasMatch.  Multiple slashes have meaning in URLs that they do
6735      not have in (some) filesystems.  Location on the other hand can
6736      be considered a shorthand for a more complicated regex, and it
6737      does match multiple slashes with a single slash -- which is
6738      also consistent with the Alias directive.
6739      [Dean Gaudet] related PR#1440
6740
6741   *) Fix bug with mod_mime_magic causing certain files, including files
6742      of length 0, to result in no response from the server.
6743      [Dean Gaudet]
6744
6745   *) The Configure script now generates src/include/ap_config.h which
6746      contains the set of defines used when Apache is compiled on a platform.
6747      This file can then be included by external modules before including
6748      any Apache header files in case they are being built separately from
6749      Apache.  Along with this change, a couple of minor changes were
6750      made to make Apache's #defines coexist peacefully with any autoconf
6751      defines an external module might have. [Rasmus Lerdorf]
6752
6753   *) Fix mod_rewrite for the ugly API case where <VirtualHost> sections exist
6754      but without any RewriteXXXXX directives. Here mod_rewrite is given no
6755      chance by the API to initialize its per-server configuration and thus
6756      receives the wrong one from the main server. This is now avoided by
6757      remembering the server together with the config structure while
6758      configuring and later assuming there is no config when we see a
6759      difference between the remembered server and the one calling us. 
6760      [Ralf S. Engelschall] PR#1790
6761
6762   *) Fixed the DBM RewriteMap support for mod_rewrite: First the support now
6763      is automatically disabled under configure time when the dbm_xxx functions
6764      are not available. Second, two heavy source code errors in the DBM
6765      support code were fixed.  This makes DBM RewriteMap's usable again after
6766      a long time of brokenness. [Ralf S. Engelschall] PR#1696
6767
6768   *) Now all configuration files support Unix-style line-continuation via 
6769      the trailing backslash ("\") character. This enables us to write down
6770      complex or just very long directives in a more readable way.  The
6771      backslash character has to be really the last character before the
6772      newline and it has not been prefixed by another (escaping) backslash.
6773      [Ralf S. Engelschall]
6774
6775   *) When using ProxyPass the ?querystring was not passed correctly.
6776      [Joel Truher <truher@wired.com>]
6777
6778   *) To deal with modules being compiled and [dynamically] linked
6779      at a different time from the core, the SERVER_VERSION and
6780      SERVER_BUILT symbols have been abstracted through the new
6781      API routines apapi_get_server_version() and apapi_get_server_built().
6782      [Ken Coar]  PR#1448
6783
6784   *) WIN32: Preserve trailing slash in canonical path (and hence
6785      in PATH_INFO). [Paul Sutton, Ben Laurie]
6786
6787   *) PORT: USE_PTHREAD_SERIALIZED_ACCEPT has proven unreliable
6788      depending on the rev of Solaris and what mixture of modules
6789      are in use.  So it has been disabled, and Solaris is back to
6790      using USE_FCNTL_SERIALIZED_ACCEPT.  Users may experiment with
6791      USE_PTHREAD_SERIALIZED_ACCEPT at their own risk, it may speed
6792      up static content only servers.  Or it may fail unpredictably.
6793      [Dean Gaudet] PR#1779, 1854, 1904
6794
6795   *) mod_test_util_uri.c created which tests the logic in util_uri.c.
6796      [Dean Gaudet]
6797
6798   *) API: Rewrite of absoluteURI handling, and in particular how
6799      absoluteURIs match vhosts.  Unless a request is a proxy request, a
6800      "http://host" url is treated as if a similar "Host:" header had been
6801      supplied.  This change was made to support future HTTP/1.x protocols
6802      which may require clients to send absoluteURIs for all requests.
6803
6804      In order to achieve this change subtle changes were made to the API.  In a
6805      request_rec, r->hostlen has been removed.  r->unparsed_uri now exists so
6806      that the unmodified uri can be retrieved easily.  r->proxyreq is not set
6807      by the core, modules must set it during the post_read_request or
6808      translate_names phase.
6809
6810      Plus changes to the virtualhost test suite for absoluteURI testing.
6811
6812      This fixes several bugs with the proxy proxying requests to vhosts
6813      managed by the same httpd.
6814      [Dean Gaudet]
6815
6816   *) API: Cleanup of code in http_vhost.c, and remove vhost matching
6817      code from mod_rewrite.  The vhost matching is now performed by a
6818      globally available function matches_request_vhost().  [Dean Gaudet]
6819
6820   *) Reduce memory usage, and speed up ServerAlias support.  As a
6821      side-effect users can list multiple ServerAlias directives
6822      and they're all considered.
6823      [Chia-liang Kao <clkao@cirx.org>] PR#1531
6824
6825   *) The "poly" directive in image maps did not include the borders of the
6826      polygon, whereas the "rect" directive does.  Fix this inconsistency.
6827      [Konstantin Morshnev <moko@design.ru>] PR#1771
6828
6829   *) Make \\ behave as expected.  [Ronald.Tschalaer@psi.ch]
6830
6831   *) Add the `%a' construct to LogFormat and CustomLog to log the client IP
6832      address. [Todd Eigenschink <eigenstr@mixi.net>] PR#1885
6833
6834   *) API: A new source module main/util_uri.c; It contains a routine
6835      parse_uri_components() and friends which breaks a URI into its component
6836      parts.  These parts are stored in a uri_components structure called
6837      parsed_uri within each request_rec, and are available to all modules.
6838      Additionally, an unparse routine is supplied which re-assembles the URI
6839      components back to an URI, optionally hiding the username:password@ part
6840      from ftp proxy requests, and other useful routines.  Within the structure,
6841      you find on a ready-for-use basis:
6842         scheme;     /* scheme ("http"/"ftp"/...) */
6843         hostinfo;   /* combined [user[:password]@]host[:port] */
6844         user;       /* user name, as in http://user:passwd@host:port/ */
6845         password;   /* password, as in http://user:passwd@host:port/ */
6846         hostname;   /* hostname from URI (or from Host: header) */
6847         port_str;   /* port string (integer representation is in "port") */
6848         path;       /* the request path (or "/" if only scheme://host was given) */
6849         query;      /* Everything after a '?' in the path, if present */
6850         fragment;   /* Trailing "#fragment" string, if present */
6851      This is meant to serve as the platform for *BIG* savings in
6852      code complexity for the proxy module (and maybe the vhost logic).
6853      [Martin Kraemer]
6854
6855   *) Make all possible meta-construct expansions ($N, %N, %{NAME} and
6856      ${map:key}) available for all location where a string is created in
6857      mod_rewrite rewriting rulesets: 1st arg of RewriteCond, 2nd arg of
6858      RewriteRule and for the [E=NAME:STRING] flag of RewriteRule. This way the
6859      possible expansions are consequently usable at all string creation
6860      locations. [Ralf S. Engelschall]
6861
6862   *) Fix initialization of RewriteLogLevel (default now is 0 as documented 
6863      and not 1) and the per-virtual-server merging of directives. Now all
6864      directives except `RewriteEngine' and `RewriteOption' are either
6865      completely overridden (default) or completely inherited (when
6866      `RewriteOptions inherit') is used. [Ralf S. Engelschall] PR#1325
6867
6868   *) Fix `RewriteMap' program lookup in situations where such maps are
6869      defined but disabled (`RewriteEngine off') in per-server context. 
6870      [Ralf S. Engelschall] PR#1431
6871
6872   *) Fix bug introduced in 1.3b4-dev, config with no Port setting would cause
6873      server to bind to port 0 rather than 80.  [Dean Gaudet]
6874
6875   *) Fix long-standing problem with RewriteMap _programs_ under Unix derivates
6876      (like SunOS and FreeBSD) which don't accept the locking of pipes
6877      directly.  A new directive RewriteLock is introduced which can be used to
6878      setup a separate locking file which then is used for synchronization.
6879      [Ralf S. Engelschall] PR#1029
6880
6881   *) WIN32: The server root is obtained from the registry key
6882      HKLM\SOFTWARE\Apache Group\Apache\<version> (version is currently
6883      "1.3 beta"), unless overridden by the -d command line flag. The
6884      value is stored by running "apache -i -d serverroot". [Paul Sutton]
6885
6886   *) Merged os/win32/mod_dll.c into modules/standard/mod_so.c to support
6887      dynamic loading on Win32 and Unix via the same module. [Paul Sutton]
6888
6889   *) Now mod_rewrite no longer makes problematic assumptions on the characters
6890      a username can contain when trying to expand it via /etc/passwd. 
6891      [Ralf S. Engelschall]
6892
6893   *) The mod_setenvif BrowserMatch backwards compatibility command did not
6894      work properly with spaces in the regex.  [Ronald Tschalaer] PR#1825
6895
6896   *) Add new RewriteMap types: First, `rnd' which is equivalent to the `txt'
6897      type but with a special post-processing for the looked-up value: It
6898      parses it into alternatives according to `|' chars and then only one
6899      particular alternative is chosen randomly (this is an essential
6900      functionality needed for balancing between backend-servers when using
6901      Apache as a Reverse Proxy.  The looked up value here is a list of
6902      servers). Second, `int' with the built-in maps named `tolower' and
6903      `toupper' which can be used to map URL parts to a fixed case (this is an
6904      essential feature to fix the case of server names when doing mass
6905      virtual-hosting with the help of mod_rewrite instead of using
6906      <VirtualHost> sections). [Ralf S. Engelschall, parts based on code from
6907      Jay Soffian <jay@cimedia.com>] PR#1631
6908
6909   *) Add a new directive to mod_proxy similar to ProxyPass: `ProxyPassReverse'.
6910      This directive lets Apache adjust the URL in Location-headers on HTTP
6911      redirect responses sent by the remote server. This way the virtually
6912      mapped area is no longer left on redirects and thus by-passed which is
6913      especially essential when running Apache as a reverse proxy.  
6914      [Ralf S. Engelschall]
6915
6916   *) Hide Proxy-Authorization from CGI/SSI/etc just like Authorization is
6917      hidden. [Alvaro Martinez Echevarria]
6918
6919   *) Apache will, when started with the -X (single process) debugging flag,
6920      honor the SIGINT or SIGQUIT signals again now. This capability got lost
6921      a while ago during OS/2 signal handling changes.
6922
6923   *) [PORT] Work around the fact that NeXT runs on more than the
6924      m68k chips in mod_status [Scott Anguish and Timothy Luoma
6925      <luomat@peak.org>]
6926
6927   *) [PORT] Recognize FreeBSD versions so we can use the OS regex as well
6928      as handling unsigned-chars for FreeBSD v3 and v2 [Andrey Chernov
6929      <ache@nagual.pp.ru> and Jim] PR#1450
6930
6931   *) Use SA_RESETHAND or SA_ONESHOT when installing the coredump handlers.
6932      In particular the handlers could trigger themselves into an infinite
6933      loop if RLimitMem was used with a small amount of memory -- too small
6934      for the signal stack frame to be set up.  [Dean Gaudet]
6935
6936   *) Fix problems with absoluteURIs introduced during 1.3b4.  [Dean Gaudet,
6937      Alvaro Martinez Echevarria <alvaro@lander.es>]
6938
6939   *) Fix multiple UserDir problem introduced during 1.3b4-dev.
6940      [Dean Gaudet] PR#1850
6941
6942   *) ap_cpystrn() had an off-by-1 error.
6943      [Charles Fu <ccwf@klab.caltech.edu>] PR#1847
6944
6945   *) API: As Ken suggested the check_cmd_context() function and related
6946      defines are non-static now so modules can use 'em.  [Martin Kraemer]
6947
6948   *) mod_info would occasionally produce an unpaired <tt> in its
6949      output. Fixed. [Martin Kraemer]
6950
6951   *) By default AIX binds a process (and it's children) to a single
6952      processor.  httpd children now unbind themselves from that cpu
6953      and re-bind to one selected at random via bindprocessor()
6954      [Doug MacEachern]
6955
6956   *) Linux 2.0 and above implement RLIMIT_AS, RLIMIT_DATA has almost no
6957      effect.  Work around it by using RLIMIT_AS for the RLimitMEM
6958      directive.  [Enrik Berkhan <enrik@inka.de>] PR#1816
6959
6960   *) mod_mime_magic error message should indicate the filename when
6961      reads fail.  ["M.D.Parker" <mdpc@netcom.com>] PR#1827
6962
6963   *) Previously Apache would permit </Files> to end <FilesMatch> (and
6964      similary for Location and Directory), now this is diagnosed as an
6965      error.  Improve error messages for mismatched sections (<Files>,
6966      <FilesMatch>, <Directory>, <DirectoryMatch>, ...).
6967      [Dean Gaudet, Martin Kraemer]
6968
6969   *) <Files> is not permitted within <Location> (because of the
6970      semantic ordering).  [Dean Gaudet] PR#379
6971
6972   *) <Files> with wildcards was broken by the change in wildcard
6973      semantics (* does not match /).  To fix this, <Files> now
6974      apply only to the basename of the request filename.  This
6975      fixes some other inconsistencies in <Files> semantics
6976      (such as <Files a*b> not working).  [Dean Gaudet] PR#1817
6977
6978   *) Removed bogus "dist.tar" target from Makefile.tmpl and make sure
6979      backup files are removed on "clean" target [Ralf S. Engelschall]
6980
6981   *) PORT: Add -lm to LIBS for HPUX.  [Dean Gaudet] PR#1639
6982
6983   *) Various errors from select() and accept() in child_main() would
6984      result in an infinite loop.  It seems these two tickle kernel
6985      or library bugs occasionally, and result in log spammage and
6986      a generally bad scene.  Now the child exits immediately,
6987      which seems to be a good workaround.
6988      [Dean Gaudet] PR#1747, 1107, 588, 1787, 987, 588
6989
6990   *) Cleaned up some race conditions in unix child_main during
6991      initialization. [Dean Gaudet]
6992
6993   *) SECURITY: "UserDir /abspath" without a * in the path would allow
6994      remote users to access "/~.." and bypass access restrictions
6995      (but note /~../.. was handled properly).
6996      [Lauri Jesmin <jesmin@ut.ee>] PR#1701
6997
6998   *) API: os_is_path_absolute() now takes a const char * instead of a char *.
6999      [Dean Gaudet]
7000
7001 Changes with Apache 1.3b5
7002
7003   *) Source file dependencies in Makefile.tmpl files throughout the
7004      source tree were updated to accurately reflect reality.
7005      [Dean Gaudet]
7006
7007   *) Preserve the content encoding given by the AddEncoding directive
7008      when the client doesn't otherwise specify an encoding.
7009      [Ronald Tschalaer <Ronald.Tschalaer@psi.ch>]
7010
7011   *) Sort out problems with canonical filename handling happening too late.
7012      [Dean Gaudet, Ben Laurie]
7013
7014 Changes with Apache 1.3b4
7015
7016   *) The module structure was modified to include a *dynamic_load_handle
7017      in the STANDARD_MODULE_STUFF portion, and the MODULE_MAGIC_NUMBER
7018      has been bumped accordingly.  [Paul Sutton]
7019
7020   *) All BrowserMatch directives mentioned in
7021      htdocs/manual/known_client_problems.html are in the default
7022      configuration files.  [Lars Eilebrecht]
7023
7024   *) MiNT port update. [Jan Paul Schmidt]
7025
7026   *) HTTP/1.1 requires x-gzip and gzip encodings be treated
7027      equivalent, similarly for x-compress and compress.  Apache
7028      now ignores a leading x- when comparing encodings.  It also
7029      preserves the encoding the client requests (for example if
7030      it requests x-gzip, then Apache will respond with x-gzip
7031      in the Content-Encoding header).
7032      [Ronald Tschalaer <Ronald.Tschalaer@psi.ch>] PR#1772
7033
7034   *) Fix a memory leak on keep-alive connections.  [Igor Tatarinov]
7035
7036   *) Added mod_so module to support dynamic loading of modules on Unix
7037      (like mod_dld for Win32). This replaces mod_dld.c. Use SharedModule
7038      instead of AddModule in Configuration to build shared modules
7039      [Sameer Parekh, Paul Sutton]
7040
7041   *) Minor cleanups to r->finfo handling in some modules.
7042      [Dean Gaudet]
7043
7044   *) Abstract read()/write() to ap_read()/ap_write().
7045      Makes it easier to add other types of IO code such as SFIO.
7046      [Randy Terbush]
7047
7048   *) API: Generalize default_port manipulations to make support of
7049      different protocols easier. [Ben Laurie, Randy Terbush]
7050
7051   *) There are many cases where users do not want Apache to form
7052      self-referential urls using the "canonical" ServerName and Port.
7053      The new UseCanonicalName directive (default on), if set to off
7054      will cause Apache to use the client-supplied hostname and port.
7055      API: Part of this change required a change to the construct_url()
7056      prototype; and the addition of get_server_name() and
7057      get_server_port().
7058      [Michael Douglass <mikedoug@texas.net>, Dean Gaudet]
7059      PR#315, 459, 485, 1433
7060
7061   *) Yet another rearrangement of the source tree.. now all the common
7062      header files are in the src/include directory.  The -Imain -Iap
7063      references in Makefiles have been changed to the simpler -Iinclude
7064      instead.  In addition to simplifying the build a little bit, this
7065      also makes it clear when a module is referencing something in a
7066      other than kosher manner (e.g., the proxy including mod_mime.h).
7067      Module-private header files (the proxy, mod_mime, the regex library,
7068      and mod_rewrite) have not been moved to src/include; nor have
7069      the OS-abstraction files.  [Ken Coar]
7070
7071   *) Fix a bug where r->hostname didn't have the :port stripped
7072      from it.  [Dean Gaudet]
7073
7074   *) Tweaked the headers_out table size, and the subprocess_env
7075      table size guess in rename_original_environment().  Added
7076      MAKE_TABLE_PROFILE which can help discover make_table()
7077      calls that use too small an initial guess, see alloc.c.
7078      [Dean Gaudet]
7079
7080   *) Options and AllowOverride weren't properly merging in the main
7081      server setting inside vhosts (only an issue when you have no
7082      <Directory> or other section containing an Options that affects
7083      a request).  Options +foo or -foo in the main_server wouldn't
7084      affect the main_server's lookup defaults.  [Dean Gaudet]
7085
7086   *) Variable 'cwd' was being used pointlessly before being set.
7087      [Ken Coar] PR#1738
7088
7089   *) r->allowed handling cleaned up in the standard modules.
7090      [Dean Gaudet]
7091
7092   *) Some case-sensitivity issues cleaned up to be consistent with
7093      RFC2068.  [Dean Gaudet]
7094
7095   *) SIGURG doesn't exist everywhere.
7096      [Mark Andrew Heinrich <heinrich@tinderbox.Stanford.EDU>]
7097
7098   *) mod_unique_id was erroneously generating a second unique id when
7099      an internal redirect occured.  Such redirects occur, for example,
7100      when processing a DirectoryIndex match.  [Dean Gaudet]
7101
7102   *) API: table_add, table_merge, and table_set include implicit pstrdup()
7103      of the key and value.  But in many cases this is not required
7104      because the key/value is a constant, or the value has been built
7105      by pstrcat() or other similar means.  New routines table_addn,
7106      table_mergen, and table_setn have been added to the API, these
7107      routines do not pstrdup() their arguments.  The core code and
7108      standard modules were changed to take advantage of these routines.
7109      The resulting server is up to 20% faster in some situations.
7110
7111      Note that it is easy to get code subtly wrong if you pass a key/value
7112      which is in a pool other than the pool of the table.  The only
7113      safe thing to do is to pass key/values which are in the pool of
7114      the table, or in one of the ancestors of the pool of the table.
7115      i.e. if the table is part of a subrequest, a value from the main
7116      request's pool is OK since the subrequest pool is a sub_pool of the
7117      main request's pool (and therefore has a lifespan at most as long as
7118      the main pool).  There is debugging code which can detect improper
7119      usage, enabled by defining POOL_DEBUG.  See alloc.c for more details.
7120      [Dmitry Khrustalev <dima@bog.msu.su>, Dean Gaudet]
7121
7122   *) More mod_mime_magic cleanup:  fewer syscalls; should handle "files"
7123      which don't exist on disk more gracefully; handles vhosts properly.
7124      Update documentation to reflect the code -- if there's no
7125      MimeMagicFile directive then the module is not enabled.
7126      [Dean Gaudet]
7127
7128   *) PORT: Some older *nix dialects cannot automatically start scripts
7129      which begin with a #! interpreter line (the shell starts the scripts
7130      appropriately on these platforms). Apache now supports starting of
7131      "hashbang-scripts" when the NEED_HASHBANG_EMUL define is set.
7132      [Martin Kraemer, with code from peter@zeus.dialix.oz.au (Peter Wemm)
7133      taken from tcsh]
7134
7135   *) API: "typedef array_header table" removed from alloc.h, folks should
7136      have been writing to use table as if it were an opaque type, but even
7137      some standard modules got this wrong.  By changing the definition
7138      to "typedef struct table table" module authors will receive compile
7139      time warnings that they're doing the wrong thing.  This change
7140      facilitates future changes with more sophisticated table
7141      structures.  Specifically, module authors should be using table_elts()
7142      to get access to an array_header * for the table. [Dean Gaudet]
7143
7144   *) API: Renamed new_connection() to avoid namespace collision with LDAP
7145      library routines.  [Ken Coar, Rasmus Lerdorf]
7146
7147   *) WIN32: mod_speling is now available on the Win32 platform.
7148      [Marc Slemko]
7149
7150   *) For clarity the following compile time definition was changed:
7151
7152         SAFE_UNSERIALIZED_ACCEPT  ->   SINGLE_LISTEN_UNSERIALIZED_ACCEPT
7153
7154      Also, for example, HAVE_MMAP would mean to use mmap() scoreboards
7155      and not be a general notice that the OS has mmap(). Now the
7156      HAVE_MMAP/SHMGET #defines strictly are informational that the
7157      OS has that method of shared memory; the type to use for
7158      the scoreboard is a seperate #define (USE_MMAP_SCOREBOARD
7159      and USE_SHMGET_SCOREBOARD). This allows outside modules to
7160      determine if shared memory is available and allows Apache
7161      to determine the best method to use for the scoreboard.
7162      [Jim Jagielski]
7163
7164   *) PORT: UnixWare 2.1.2 SMP appears to require USE_FCNTL_SERIALIZED_ACCEPT,
7165      as do various earlier versions.  It should be safe on all versions.
7166      Unixware 1.x appears to have the same SIGHUP bug as solaris does with
7167      the slack code.  A few other cleanups for Unixware.
7168      [Tom Hughes <thh@cyberscience.com>] PR#1082, PR#1282, PR#1499, PR#1553
7169
7170   *) PORT: A/UX can handle single-listen accepts without mutex
7171      locking, so we add SINGLE_LISTEN_UNSERIALIZED_ACCEPT. [Jim Jagielski]
7172
7173   *) When die() happens we need to eat any request body if one exists.
7174      Otherwise we can't continue with a keepalive session.  This shows up
7175      as a POST problem with MSIE 4.0, typically against pages which are
7176      authenticated.  [Roy Fielding] PR#1399
7177
7178   *) If you define SECURITY_HOLE_PASS_AUTHORIZATION then the Authorization
7179      header will be passed to CGIs.  This is generally a security hole, so
7180      it's not a default.  [Marc Slemko] PR#549
7181
7182   *) Fix Y2K problem with date printing in suexec log.
7183      [Paul Eggert <eggert@twinsun.com>] PR#1343
7184
7185   *) WIN32 deserves a pid file.  [Ben Hyde]
7186
7187   *) suexec errors now include the errno/description.  [Marc Slemko] PR#1543
7188
7189   *) PORT: OSF/1 now uses USE_FLOCK_SERIALIZED_ACCEPT to solve PR#467.
7190      The choice of flock vs. fcntl was made based on timings which showed that
7191      even on non-NFS, non-exported filesystems fcntl() was an order of
7192      magnitude slower.  It also uses SINGLE_LISTEN_UNSERIALIZED_ACCEPT so
7193      that single socket users will see no difference. [Dean Gaudet] PR#467
7194
7195   *) "File does not exist" error message was erroneously including the
7196      errno.  [Marc Slemko]
7197
7198   *) Improve the warning message generated when a client drops the
7199      connection (hits stop button, etc.) during a send.  [Roy Fielding]
7200
7201   *) Defining GPROF will disable profiling in the parent and enable it
7202      in the children.  If you're profiling under Linux this is pretty much
7203      necessary because SIGPROF is lost across a fork(). [Dean Gaudet]
7204
7205   *) htdigest and htpasswd needed slight tweaks to work on OS/2 and WIN32.
7206      [Brian Havard]
7207
7208   *) The NeXT cc (which is gcc hacked up) doesn't appear to support some
7209      gcc functionality.  Work around it.
7210      [Keith Severson <keith@sssd.navy.mil>] PR#1613
7211
7212   *) Some linkers complain when .o files contain no functions.
7213      [Keith Severson <keith@sssd.navy.mil>] PR#1614
7214
7215   *) Some const declarations in mod_imap.c that were added for debugging
7216      purposes caused some compilers heartburn without adding any
7217      significant value, so they've been removed.  [Ken Coar]
7218
7219   *) The src/main/*.h header files have had #ifndef wrappers added to
7220      insulate them against duplicate calls if they get included through
7221      multiple paths (e.g., in .c files as well as other .h files).
7222      [Ken Coar]
7223
7224   *) The libap routines now have a header file for their prototypes,
7225      src/ap/ap.h, to ease their use in non-httpd applications.  [Ken Coar]
7226
7227   *) mod_autoindex with a plaintext header file would emit the <PRE>
7228      start-tag before the HTML preamble, rather than after the preamble
7229      but before the header file contents.  [John Van Essen <jve@gamers.org>]
7230      PR#1667
7231
7232   *) SECURITY: Fix a possible buffer overflow in logresolve.  This is
7233      only an issue on systems without a MAXDNAME define or where
7234      the resolver returns domain names longer than MAXDNAME.  [Marc Slemko]
7235
7236   *) SECURITY: Eliminate possible buffer overflow in cfg_getline, which
7237      is used to read various types of files such as htaccess and
7238      htpasswd files.  [Marc Slemko]
7239
7240   *) SECURITY: Ensure that the buffer returned by ht_time is always
7241      properly null terminated.  [Marc Slemko]
7242
7243   *) The "Connection" header could be sent back with multiple "close"
7244      tokens.  Not an error, but a waste.
7245      [Ronald.Tschalaer@psi.ch] PR#1683
7246
7247   *) mod_rewrite's RewriteLog should behave like mod_log_config, it
7248      shouldn't force hostname lookups.  [Dean Gaudet] PR#1684
7249
7250   *) "basic" auth needs a case-insensitive comparison.
7251      [Ronald.Tschalaer@psi.ch] PR#1666
7252
7253   *) For maximum portability, the environment passed to CGIs should
7254      only contain variables whose names match the regex
7255      /[a-zA-Z][a-zA-Z0-9_]*/.  This is now enforced by stamping
7256      underscores over any character outside the regex.  This
7257      affects HTTP_* variables, in a way that should be backward
7258      compatible for all the standard headers; and affects variables
7259      set with SetEnv/BrowserMatch and similar directives.
7260      [Dean Gaudet]
7261
7262   *) mod_speling returned incorrect HREF's when an ambigous match
7263      was found. Noticed by <robinton@amtrash.comlink.de> (Soeren Ziehe)
7264      [robinton@amtrash.comlink.de (Soeren Ziehe), Martin Kraemer]
7265
7266   *) PORT: Apache now compiles & runs on an EBCDIC mainframe
7267      (the Siemens BS2000/OSD family) in the POSIX subsystem
7268      [Martin Kraemer]
7269
7270   *) PORT: Fix problem killing children when terminating.  Allow ^C
7271      to shut down the server.  [Brian Havard]
7272
7273   *) pstrdup() is implicit in calls to table_* functions, so there's
7274      no need to do it before calling.  Clean up a few cases.
7275      [Marc Slemko, Dean Gaudet]
7276
7277   *) new -C and -c command line arguments
7278      usage:
7279      -C "directive" : process directive before reading config files
7280      -c "directive" : process directive after reading config files
7281      example:
7282      httpd -C "PerlModule Apache::httpd_conf"
7283      [Doug MacEachern, Martin Kraemer]
7284
7285   *) WIN32: Fix the execution of CGIs that are scripts and called 
7286      with path info that does not have an '=' in.
7287      (eg. http://server/cgi-bin/printenv?foobar)  
7288      [Marc Slemko] PR#1591
7289
7290   *) WIN32: Fix a call to os_canonical_filename so it doesn't try to 
7291      mess with fake filenames.  This fixes proxy caching on 
7292      win32. PR#1265
7293
7294   *) SECURITY: General mod_include cleanup, including fixing several
7295      possible buffer overflows and a possible infinite loop.
7296      [Dean Gaudet, Marc Slemko]
7297
7298   *) SECURITY: Numerous changes to mod_imap in a general cleanup
7299      including fixing a possible buffer overflow.  [Dean Gaudet]
7300
7301   *) WIN32: overhaul of multithreading code. Shutdowns are now graceful
7302      (connections are not dropped). Code can handle graceful restarts
7303      (but there is as yet no way to signal this to Apache). Various
7304      other cleanups. [Paul Sutton]
7305
7306   *) The aplog_error changes specific to 1.3 introduced a buffer
7307      overrun in the (now legacy) log_printf function.  Fixed.
7308      [Dean Gaudet]
7309
7310   *) mod_digest didn't properly deal with proxy authentication.  It
7311      also lacked a case-insensitive comparision of the "Digest"
7312      token.  [Ronald Tschalaer <Ronald.Tschalaer@psi.ch>] PR#1599
7313
7314   *) A few cleanups in mod_status for efficiency.  [Dean Gaudet]
7315
7316   *) A few cleanups in mod_info to make it thread-safe, and remove an
7317      off-by-5 bug that could hammer \0 on the stack. [Dean Gaudet]
7318
7319   *) no2slash() was O(n^2) in the length of the input.  Make it O(n).
7320      [Dean Gaudet]
7321
7322   *) API: migration from strncpy() to our "enhanced" version called
7323      ap_cpystrn() for performance and functionality reasons.
7324      Located in libap.a.  [Jim Jagielski]
7325
7326   *) table_set() and table_unset() did not deal correctly with
7327      multiple occurrences of the same key.
7328      [Stephen Scheck <sscheck@infonex.net>, Ben Laurie] PR#1604
7329
7330   *) The AuthName must now be enclosed in quotes if it is to contain
7331      spaces.  [Ken Coar] PR#1195
7332
7333   *) API: new function: ap_escape_quotes(). [Ken Coar] PR#1195
7334
7335   *) WIN32: Work around optimiser bug that killed ISAPI in release
7336      versions. [Ben Laurie] PR#1533
7337
7338   *) PORT: Update the MPE port [Mark Bixby, Jim Jagielski]
7339
7340   *) Interim (slow) fix for p->sub_pool critical sections in
7341      alloc.c (affects win32 only).  [Ben Hyde]
7342
7343   *) non-WIN32 was missing destroy_mutex definition.  [Ben Hyde]
7344
7345   *) send_fd_length() did not calculate total_bytes_sent properly.
7346      [Ben Reser <breser@regnow.com>] PR#1366
7347
7348   *) The bputc() macro was not properly integrated with the chunking
7349      code; in many cases modules using bputc() could cause completely
7350      bogus chunked output.  (Typically this will show up as problems
7351      with Internet Explorer 4.0 reading a page, but other browsers
7352      having no problem.) [Dean Gaudet]
7353
7354   *) Create LARGE_WRITE_THRESHOLD define which determines how many
7355      bytes have to be supplied to bwrite() before it will consider
7356      doing a writev() to assemble multiple buffers in one system
7357      call.  This is critical for modules such as mod_include,
7358      mod_autoindex, mod_php3 which all use bputc()/bputs() of smaller
7359      strings in some cases.  The result would be extra effort
7360      setting up writev(), and in many cases extra effort building
7361      chunks.  The default is 31, it can be overriden at compile
7362      time. [Dean Gaudet]
7363
7364   *) Move the gid switching code into the child so that log files
7365      and pid files are opened with the root gid.
7366      [Gregory A Lundberg <lundberg@vr.net>]
7367
7368   *) WIN32: Check for binaries by looking for the executable header
7369      instead of counting control characters.
7370      [Jim Patterson <Jim.Patterson@Cognos.COM>] PR#1340
7371
7372   *) ap_snprintf() moved from main/util_snprintf.c to ap/ap_snprintf.c
7373      so the functionality is available to applications other than the
7374      server itself (like the src/support tools).  [Ken Coar]
7375
7376   *) ap_slack() moved out of main/util.c into ap/ap_slack.c as part of
7377      the libap consolidation work.  [Ken Coar]
7378
7379   *) ap_snprintf() with a len of 0 behaved like sprintf().  This is not
7380      useful, and isn't what the standards require.  Now it returns 0
7381      and writes nothing.  [Dean Gaudet]
7382
7383   *) When an error occurs in fcntl() locking suggest the user look up
7384      the docs for LockFile.  [Dean Gaudet]
7385
7386   *) Eliminate some dead code from writev_it_all().
7387      [Igor Tatarinov <tatarino@prairie.NoDak.edu>]
7388
7389   *) mod_autoindex had an fread() without checking the result code.
7390      It also wouldn't handle "AddIconByType (TXT,/icons/text.gif text/*"
7391      (note the missing closing paren) properly.  [Dean Gaudet]
7392
7393   *) It appears the "257th byte" bug (see
7394      htdocs/manual/misc/known_client_problems.html#257th-byte) can happen
7395      at the 256th byte as well.  Fixed.  [Dean Gaudet]
7396
7397   *) PORT: Fix mod_mime_magic under OS/2, no support for block devices.
7398      [Brian Havard]
7399
7400   *) Fix memory corruption caused by allocating auth usernames in the
7401      wrong pool.  [Dean Gaudet] PR#1500
7402
7403   *) Fix an off-by-1, and an unterminated string error in
7404      mod_mime_magic.  [Dean Gaudet]
7405
7406   *) Fix a potential SEGV problem in mod_negotiation when dealing
7407      with type-maps.  [Dean Gaudet]
7408
7409   *) Better glibc support under Linux.  [Dean Gaudet] PR#1542
7410
7411   *) "RedirectMatch gone /" would cause a SIGSEGV. [Dean Gaudet] PR#1319
7412
7413   *) WIN32: avoid overflows during file canonicalisations.
7414      [malcolm@mgdev.demon.co.uk] PR#1378
7415
7416   *) WIN32: set_file_slot() didn't detect absolute paths. [Ben Laurie]
7417      PR#1511, 1508
7418
7419   *) WIN32: mod_status display header didn't match fields. [Ben Laurie]
7420
7421   *) The pthread_mutex_* functions return an error code, and don't
7422      set errno.  [Igor Tatarinov <tatarino@prairie.NoDak.edu>]
7423
7424   *) WIN32: Allow spaces to prefix the interpreter in #! lines.
7425      [Ben Laurie] PR#1101
7426
7427   *) WIN32: Cure file leak in CGIs. [Peter Tillemans <pti@net4all.be>] PR#1523
7428
7429   *) proxy_ftp: the directory listings generated by the proxy ftp module
7430      now have a title in which the path components are clickable and allow
7431      quick navigation to the clicked-on directory on the currently listed
7432      ftp server. This also fixes a bug where the ".." directory links would
7433      sometimes refer to the wrong directory.  [Martin Kraemer]
7434
7435   *) WIN32: Allocate the correct amount of memory for the scoreboard.
7436      [Ben Hyde] PR#1387
7437
7438   *) WIN32: Only lowercase the part of the path that is real. [Ben Laurie]
7439      PR#1505
7440
7441   *) Fix problems with timeouts in inetd mode and -X mode.  [Dean Gaudet]
7442
7443   *) Fix the spurious "(0)unknown error: mmap_handler: mmap failed"
7444      error messages. [Ben Hyde]
7445
7446 Changes with Apache 1.3b3
7447
7448   *) WIN32: Work around brain-damaged spawn calls that can't deal
7449      with spaces and slashes.  [Ben Laurie]
7450
7451   *) WIN32: Fix the code so CGIs can use socket calls on Windows.  
7452      The problem was that certain undocumented environment variables
7453      needed for sockets to work under Win32 were not being passed.
7454      [Frank Faubert <frank@sane.com>]
7455
7456   *) Add a "-V" command line flag to the httpd binary.  This 
7457      flag shows some of the defines that Apache was compiled with.
7458      It is useful for debugging purposes.  [Martin Kraemer]
7459
7460   *) Start separating the ap_*() routines into their own library, so they
7461      can be used by items in src/support among other things.  
7462      [Ken Coar] PR#512, 905, 1252, 1308 
7463
7464   *) Give a more informative error when no AuthType is set.
7465      [Lars Eilebrecht]
7466
7467   *) Remove strtoul() use from mod_proxy because it isn't available
7468      on all platforms.   [Marc Slemko] PR#1214
7469
7470   *) WIN32: Some Win32 systems terminated all responses after 16 kB. 
7471      This turns out to be a bug in Winsock - select() doesn't always 
7472      return the correct status.  [Ben Laurie]
7473
7474   *) Directives owned by http_core can now use the new check_cmd_context()
7475      routine to ensure that they're not being used within a container
7476      (e.g., <Directory>) where they're invalid.  [Martin Kraemer]
7477
7478   *) PORT: Recent changes made it necessary to add explicit prototype
7479      for fgetc() and fgets() on SunOS 4.x.  [Martin Kraemer, Ben Hyde]
7480
7481   *) It was necessary to distinguish between resources which are
7482      allocated in the parent, for cleanup in the parent, and resources
7483      which are allocated in each child, for cleanup in each child.
7484      A new pool was created which is passed to the module child_init
7485      and child_exit functions; modules are free to register per-child
7486      cleanups there.  This fixes a bug with reliable piped logs.
7487      [Dean Gaudet]
7488
7489   *) mod_autoindex wasn't displaying the ReadmeName file at the bottom
7490      unless it was also doing FancyIndexes, but it displayed the
7491      HeaderName file at the top under all circumstances.  It now shows
7492      the ReadmeName file for simple indices, too, as it should.  
7493      [Ken Coar] PR#1373
7494
7495   *) http_core was mmap()ing even in cases where it wasn't going to
7496      read the file.  [Ben Hyde <bhyde@gensym.com>]
7497
7498   *) Complete rewrite ;-) of mod_rewrite's URL rewriting engine:
7499      Now the rewriting engine (the heart of mod_rewrite) is organized more
7500      straight-forward, first time well documented and reduced to the really
7501      essential parts. All redundant cases were stripped off and processing now
7502      is the same for both per-server and per-directory context with only a
7503      minimum difference (the prefix stripping in per-dir context). As a
7504      side-effect some subtle restrictions and two recently discovered problems
7505      are gone: Wrong escaping of QUERY_STRING on redirects in per-directory
7506      context and restrictions on the substitution URL on redirects.
7507      Additionally some minor source cleanups were done. 
7508      [Ralf S. Engelschall] 
7509
7510   *) Lars Eilebrecht wrote a whole new set of Apache Vhost Internals
7511      documentation, examples, explanations and caveats. They live in a new
7512      subdirectory htdocs/manual/vhost/. [Lars Eilebrecht <sfx@unix-ag.org>]
7513
7514   *) If ap_slack fails to allocate above the low slack line it's a good
7515      indication that further problems will occur; it's a better indication
7516      than many external libraries give us when we actually run out of
7517      descriptors.  So report it to the user once per restart.
7518      [Dean Gaudet] PR#1181
7519
7520   *) Change mod_include and mod_autoindex to use Y2K-safe date formats
7521      by default.  [Ken Coar]
7522
7523   *) Add a "SuppressColumnSorting" option to the IndexOptions list,
7524      which will keep the column heading from being links for sorting
7525      the display.  [Ken Coar, suggested by Brian Tiemann <btman@pacific.net>]
7526      PR #1261
7527
7528   *) PORT: Update the LynxOS port.  [Marius Groeger <mag@sysgo.de>]
7529
7530   *) Fix logic error when issuing a mmap() failed message
7531      with a non-zero MMAP_THRESHOLD.
7532      [David Chambers <davidc@flosun.salk.edu>] PR#1294
7533
7534   *) Preserve handler value on ProxyPass'ed requests by not
7535      calling find_types on a proxy'd request; fixes problems
7536      where some ProxyPass'ed URLs weren't actually passed
7537      to the proxy.
7538      [Lars Eilebrecht] PR#870
7539
7540   *) Fix a byte ordering problem in mod_access which prevented
7541      the old-style syntax (i.e. "a.b.c." to match a class C)
7542      from working properly. [Dean Gaudet] PR#1248, 1328, 1384
7543
7544   *) Fix problem with USE_FLOCK_SERIALIZED_ACCEPT not working
7545      properly. Each child needs to open the lockfile instead
7546      of using the passed file-descriptor from the parent. 
7547      [Jim Jagielski] PR#1056
7548
7549   *) Fix the error logging in mod_cgi; the recent error log changes
7550      introduced a bug that prevented it from working correctly.
7551      [M.D.Parker] PR#1352
7552
7553   *) Default to USE_FCNTL_SERIALIZED_ACCEPT on HPUX to properly 
7554      handle multiple Listen directives.  [Marc Slemko] PR#872
7555
7556   *) Inherit a bugfix to fnmatch.c from FreeBSD sources.
7557      ["[KOI8-R] áÎÄÒÅÊ þÅÒÎÏ×" <ache@nagual.pp.ru>] PR#1311
7558
7559   *) When a configuration parse complained about a bad directive,
7560      the logger would use whatever (unrelated) value was in errno.
7561      errno is now forced to EINVAL first in this case.  [Ken Coar]
7562
7563   *) A sed command in the Configure script pushed the edge of POSIXness,
7564      breaking on some systems.  [Bhaba R.Misra <system@vt.edu>] PR#1368
7565
7566   *) Solaris >= 2.5 was totally broken due to a mess up using pthread
7567      mutexes.  [Roy Fielding, Dean Gaudet]
7568
7569   *) OS/2 Port updated; it should be possible to build OS/2 from the same
7570      sources as Unix now.  [Brian Havard <brianh@kheldar.apana.org.au>]
7571
7572   *) Fix a year formatting bug in mod_usertrack.
7573      [Paul Eggert <eggert@twinsun.com>] PR#1342
7574
7575   *) A mild SIGTERM/SIGALRM race condition was eliminated.
7576      [Dean Gaudet] PR#1211
7577
7578   *) Warn user that default path has changed if /usr/local/etc/httpd
7579      is found on the system.  [Lars Eilebrecht]
7580
7581   *) Various mod_mime_magic bug fixes and cleanups: Uncompression
7582      should work, it should work on WIN32, and a few resource
7583      leaks and abort conditions are fixed.
7584      [Dean Gaudet] PR#1205
7585
7586   *) PORT: On AIX 1.x files can't be named '@', fix the proxy cache
7587      to use '%' instead of '@' in its encodings.
7588      [David Schuler <schuld@btv.ibm.com>] PR#1317
7589
7590   *) Improve the warning message generated when the "server is busy".
7591      [Dean Gaudet] PR#1293
7592
7593   *) PORT: All ports which don't otherwise define DEF_WANTHSREGEX will
7594      get Spencer regex by default.  This is to avoid having to
7595      discover bugs in operating system libraries.  [Dean Gaudet]
7596
7597   *) PORT: "Fix" PR#467 by generating warnings on systems which we have
7598      not been able to get working USE_*_SERIALIZED_ACCEPT settings for.
7599      Document this a bit more in src/PORTING.  [Dean Gaudet] PR#467
7600
7601   *) Ensure that one copy of config warnings makes it to the
7602      error_log.  [Dean Gaudet]
7603
7604   *) Invent new structure and associated methods to handle config file
7605      reading. Add "custom" hook to use config file cfg_getline() on
7606      something which is not a FILE*  [Martin Kraemer]
7607
7608   *) Make single-exe Windows install. [Ben Laurie and Eric Esselink]
7609
7610   *) WIN32: Make CGI work under Win95. [Ben Laurie and Paul Sutton]
7611
7612   *) WIN32: Make index.html and friends work under Win95. [Ben Laurie]
7613
7614   *) PORT: Solaris 2.4 needs Spencer regex, the system regex is broken.
7615      [John Line <jml4@cam.ac.uk>] PR#1321
7616
7617   *) Default pathname has been changed everywhere to /usr/local/apache
7618      [Sameer <sameer@c2.net>]
7619
7620   *) PORT: AIX now uses USE_FCNTL_SERIALIZED_ACCEPT.
7621      [David Bronder <David-Bronder@uiowa.edu>] PR#849
7622
7623   *) PORT: i386 AIX does not have memmove.
7624      [David Schuler <schuld@btv.ibm.com>] PR#1267
7625
7626   *) PORT: HPUX now defaults to using Spencer regex.
7627      [Philippe Vanhaesendonck <pvanhaes@be.oracle.com>,
7628      Omar Del Rio <al112263@academ01.lag.itesm.mx>] PR#482, 1246
7629
7630   *) PORT: Some versions of NetBSD don't automatically define
7631      __NetBSD__.  Workaround by defining NETBSD.
7632      [Chris Craft <ccraft@cncc.cc.co.us>] PR#977
7633
7634   *) PORT: UnixWare 2.x requires -lgen for syslog.
7635      [Hans Snijder <hs@meganet.nl>] PR#1249
7636
7637   *) PORT: ULTRIX appears to not have syslog.
7638      [Lars Eilebrecht <Lars.Eilebrecht@unix-ag.org>]
7639
7640   *) PORT: Basic Gemini port (treat it like unixware212).
7641      ["Pavel Yakovlev (Paul McHacker)" <hac@tomcat.olly.ru>]
7642
7643   *) PORT: All SVR4 systems now use NET_SIZE_T = size_t, and
7644      use USE_SHMGET_SCOREBOARD.
7645      [Martin Kraemer]
7646
7647   *) Various improvements in detecting config file errors (missing closing
7648      directives for <Directory>, <Files> etc. blocks, prohibiting global
7649      server settings in <VirtualHost> blocks, flagging unhandled multiple
7650      arguments to <Directory>, <Files> etc.)
7651      [Martin Kraemer]
7652
7653   *) Add support to suexec wrapper program for mod_unique_id's UNIQUE_ID
7654      variable to provide this one to suexec'd CGIs, too.
7655      [M.D.Parker <mdpc@netcom.com>] PR#1284
7656
7657   *) New support tool: src/support/split-logfile, a sample Perl script which
7658      splits up a combined access log into separate files based on the
7659      name of the virtual host (listed first in the log records by "%v").
7660      [Ken Coar]
7661
7662 Changes with Apache 1.3b2 (there is no 1.3b1)
7663
7664   *) TestCompile was not passing $LIBS [Dean Gaudet]
7665
7666   *) Makefile.tmpl was not using $CFLAGS in the link phase. 
7667      [Martin Kraemer]
7668
7669   *) Add debugging code to alloc.c.  Defining ALLOC_DEBUG provides a
7670      rudimentary memory debugger which can be used on live servers with
7671      low impact -- it sets all allocated and freed memory bytes to 0xa5.
7672      Defining ALLOC_USE_MALLOC will cause the alloc code to use malloc()
7673      and free() for each object.  This is far more expensive and should
7674      only be used for testing with tools such as Electric Fence and
7675      Purify.  See main/alloc.c for more details.  [Dean Gaudet]
7676
7677   *) Configure uses a sh trap and didn't set its exitcode properly.
7678      [Dean Gaudet] PR#1159
7679
7680   *) Yet another vhost revamp.  Add the NameVirtualHost directive which
7681      explicitly lists the ip:port pairs that are to be used for name-vhosts.
7682      From a given ip:port, regardless what the Host: header is, you can
7683      only reach the vhosts defined on that ip:port.  The precedence of
7684      vhosts was reversed to match other precedences in the config --
7685      the earlier vhosts override the later vhosts.  All vhost matching was
7686      moved into http_vhost.[ch].  [Dean Gaudet]
7687
7688   *) ap_inline can be used to force inlining.  GNUC __attribute__() can
7689      be used for whatever reason is appropriate (i.e. format() warnings
7690      for printf style functions).  Both are enabled only with
7691      gcc >= 2.7.x (so that we have fewer support issues with older
7692      versions).  [Dean Gaudet]
7693
7694   *) Fix support for Proxy Authentication (we were testing the response
7695      status too early). [Marc Slemko]
7696
7697   *) CoreDumpDirectory directive directs where the core file is
7698      written when a SIGSEGV, SIGBUS, SIGABORT or SIGABRT are
7699      received.  [Marc Slemko, Dean Gaudet]
7700
7701   *) PORT: Support for Atari MINT.
7702      [Jan Paul Schmidt <Jan.P.Schmidt@mni.fh-giessen.de>]
7703
7704   *) When booting, apache will now detach itself from stdin, stdout,
7705      and stderr.  stderr will not be detached until after the config
7706      files have been read so you will be able to see initial error
7707      messages.  After that all errors are logged in the error_log.
7708      This makes it more convenient to start apache via rsh, ssh,
7709      or crontabs.  [Dean Gaudet] PR#523
7710
7711   *) mod_proxy was sending HTTP/1.1 responses to ftp requests by mistake.
7712      Also removed the auto-generated link to www.apache.org that was the
7713      source of so many misdirected bug reports.  [Roy Fielding, Marc Slemko]
7714
7715   *) send_fb would not detect aborted connections in some situations.
7716      [Dean Gaudet]
7717
7718   *) mod_include would use uninitialized data when parsing certain
7719      expressions involving && and ||. [Brian Slesinsky] PR#1139
7720
7721   *) mod_imap should only handle GET methods.  [Jay Bloodworth]
7722
7723   *) suexec.c wouldn't build without -DLOG_EXEC. [Jason A. Dour]
7724
7725   *) mod_autoindex improperly counted &escapes; as more than one
7726      character in the description.  It also improperly truncated
7727      descriptions that were exactly the maximum length.
7728      [Martin Kraemer]
7729
7730   *) RedirectMatch was not properly escaping the result (PR#1155).  Also
7731      "RedirectMatch /advertiser/(.*) $1" is now permitted.
7732      [Dean Gaudet]
7733
7734   *) mod_include now uses symbolic names to check for request success
7735      and return HTTP errors, and correctly handles all types of
7736      redirections (previously it only did temporary redirect correctly).
7737      [Ken Coar, Roy Fielding]
7738
7739   *) mod_userdir was modifying r->finfo in cases where it wasn't setting
7740      r->filename.  Since those two are meant to be in sync with each other
7741      this is a bug.  ["Paul B. Henson" <henson@intranet.csupomona.edu>]
7742
7743   *) PORT: Support Unisys SVR4, whose uname returns mostly useless data.
7744      ["Kaufman, Steven E" <Steven.Kaufman@unisys.com>]
7745
7746   *) Inetd mode (which is buggy) uses timeouts without having setup the
7747      jmpbuffer. [Dean Gaudet] PR#1064
7748
7749   *) Work around problem under Linux where a child will start looping
7750      reporting a select error over and over.
7751      [Rick Franchuk <rickf@transpect.net>] PR#1107, 987, 588
7752
7753   *) Fixed error in proxy_util.c when looping through multiple host IP
7754      addresses. [Lars Eilebrecht] PR#974
7755
7756   *) If BUFFERED_LOGS is defined then mod_log_config will do atomic
7757      buffered writes -- that is, it will buffer up to PIPE_BUF (i.e. 4k)
7758      bytes before writing, but it will never split a log entry across a
7759      buffer boundary.  [Dean Gaudet]
7760
7761   *) API: the short_score record has been split into two pieces, one which
7762      the parent writes on, and one which the child writes on.  As part of
7763      this change the get_scoreboard_info() function was removed, and
7764      scoreboard_image was exported.  This change fixes a race condition
7765      in file based scoreboard systems, and speeds up changes involving the
7766      scoreboard in earlier 1.3 development.  [Dean Gaudet]
7767
7768   *) API: New register_other_child() API (see http_main.h) which allows
7769      modules to register children with the parent for maintenance.  It
7770      is disabled by defining NO_OTHER_CHILD.  [Dean Gaudet]
7771
7772   *) API: New piped_log API (see http_log.h) which implements piped logs,
7773      and will use register_other_child to implement reliable piped logs
7774      when it is available.  The reliable piped logs part can be disabled
7775      by defining NO_RELIABLE_PIPED_LOGS.  At the moment reliable piped
7776      logs is only available on Unix. [Dean Gaudet]
7777
7778   *) API: set_last_modified() broken into set_last_modified(), set_etag(), and
7779      meets_conditions().  This allows conditional HTTP selection to be
7780      handled separately from the storing of the header fields, and provides
7781      the ability for CGIs to set their own ETags for conditional checking.
7782      [Ken Coar, Roy Fielding]  PR#895
7783
7784   *) Changes to mod_log_config to allow naming of format strings.
7785      Format nicknames are defined with "LogFormat fmt nickname", and can
7786      be used with "LogFormat nickname" and "CustomLog logtarget nickname".
7787      [Ken Coar]
7788
7789   *) New module, "mod_speling", which can help find files even when 
7790      the URL is slightly misspelled. [Martin Kraemer, Alexei Kosut]
7791
7792   *) API: New function child_terminate() triggers the child process to
7793      exit, while allowing the child finish what it needs to for the
7794      current request first.  
7795      [Doug MacEachern, Alexei Kosut]
7796
7797   *) Windows now defaults to using full status reports with mod_status.
7798      [Alexei Kosut] PR #1094
7799
7800   *) *Really* disable all mod_rewrite operations if the engine is off.
7801      Some things (like RewriteMaps) were checked/performed even if they
7802      weren't supposed to be.  [Ken Coar] PR #991
7803
7804   *) Implement a new timer scheme which eliminates the need to call alarm() all
7805      the time.  Instead a counter in the scoreboard for each child is used to
7806      show when the child has made forward progress.  The parent samples this
7807      counter every scoreboard maintenance cycle, and issues SIGALRM if no
7808      progress has been made in the timeout period.  This reduces the static
7809      request best-case syscall count to 22 from 29.  This scheme is only
7810      used by systems with memory-based scoreboards.  [Dean Gaudet]
7811
7812   *) The proxy now properly handles CONNECT requests which are sent
7813      to proxy servers when using ProxyRemote.  [Marc Slemko] PR#1024
7814
7815   *) A script called apachectl has been added to the support 
7816      directory.  This script allows you to do things such as 
7817      "apachectl start" and "apachectl restart" from the command
7818      line.  [Marc Slemko]
7819
7820   *) Modules and core routines are now put into libraries, which
7821      simplifies the link line tremendously (among other advantages).
7822      [Paul Sutton]
7823
7824   *) Some of the MD5 names defined in Apache have been renamed to have
7825      an `ap_' prefix to avoid conflicts with routines supplied by
7826      external libraries.  [Ken Coar]
7827
7828   *) Removal of mod_auth_msql.c from the distribution. There are many
7829      other options for databases today. Rather than offer one option,
7830      offer none at this time. mod_auth_msql and other SQL database
7831      authentication modules can be found at the Apache Module Registry.
7832      http://modules.apache.org/ It would be nice to offer a generic
7833      mod_auth_sql option in the near future.
7834
7835   *) PORT: BeOS support added [Alexei Kosut]
7836
7837   *) Configure no longer accepts the -make option, since it creates
7838      Makefile on the fly based on Makefile.tmpl and Configuration.
7839
7840   *) Apache now gracefully shuts down when it receives a SIGTERM, instead
7841      of forcibly killing off all its processes and exiting without
7842      cleaning up. [Alexei Kosut]
7843
7844   *) API: A new field in the request_rec, r->mtime, has been added to
7845      avoid gratuitous parsing of date strings.  It is intended to hold
7846      the last-modified date of the resource (if applicable).  An
7847      update_mtime() routine has also been added to advance it if
7848      appropriate.  [Roy Fielding, Ken Coar]
7849
7850   *) SECURITY: If a htaccess file can not be read due to bad permissions,
7851      deny access to the directory with a HTTP_FORBIDDEN.  The previous
7852      behavior was to ignore the htaccess file if it could not be read.
7853      This change may make some setups with unreadable htaccess files
7854      stop working.  [Marc Slemko] PR#817
7855
7856   *) Add aplog_error() providing a mechanism to define levels of
7857      verbosity to the server error logging. This addition also provides
7858      the ability to log errors using syslogd. Error logging is configurable
7859      on a per-server basis using the LogLevel directive. Conversion
7860      of log_*() in progress. [Randy Terbush]
7861
7862   *) Further enhance aplog_error() to not log filename, line number, and
7863      errno information when it isn't applicable. [Ken Coar, Dean Gaudet]
7864
7865   *) WIN32: Canonicalise filenames under Win32. Short filenames are
7866      converted to long ones. Backslashes are converted to forward
7867      slashes. Case is converted to lower. Parts of URLs that do not
7868      correspond to files are left completely alone. [Ben Laurie]
7869
7870   *) PORT: 2 new OSs added to the list of ports:
7871       Encore's UMAX V: Arieh Markel <amarkel@encore.com>
7872       Acorn RISCiX: Stephen Borrill <sborrill@xemplar.co.uk>
7873
7874   *) Add the server version (SERVER_VERSION macro) to the "server
7875      configured and running" entry in the error_log.  Also build an
7876      object file at link-time that contains the current time
7877      (SERVER_BUILT global const char[]), and include that in the
7878      message.  [Ken Coar]
7879
7880   *) Set r->headers_out when sending responses from the proxy.
7881      This fixes things such as the logging of headers sent from
7882      the proxy.  [Marc Slemko] PR#659
7883
7884   *) support/httpd_monitor is no longer distributed because the 
7885      scoreboard should not be file based if at all possible. Use
7886      mod_status to see current server snapshot.
7887
7888   *) (set_file_slot): New function, allowing auth directives to be
7889      independent of the server root, so the server documents can be
7890      moved to a different directory or machine more easily.
7891      [David J. MacKenzie]
7892
7893   *) If no TransferLog is given explicitly, decline
7894      to log.  This supports coexistence with other logging modules,
7895      such as the custom one that UUNET uses. [David J. MacKenzie]
7896
7897   *) Check for titles in server-parsed HTML files.
7898      Ignore leading newlines and returns in titles.  The old behavior
7899      of replacing a newline after <title> with a space causes the
7900      title to be misaligned in the listing. [David J. MacKenzie]
7901
7902   *) Change mod_cern_meta to be configurable on a per-directory basis.
7903      [David J. MacKenzie]
7904
7905   *) Add 'Include' directive to allow inclusion of configuration
7906      files within configuration files. [Randy Terbush]
7907
7908   *) Proxy errors on connect() are logged to the error_log (nothing
7909      new); now they include the IP address and port that failed
7910      (*that's* new).   [Ken Coar, Marc Slemko] PR#352
7911
7912   *) Various architectures now define USE_MMAP_FILES which causes
7913      the server to use mmap() for static files.  There are two
7914      compile-time tunables MMAP_THRESHOLD (minimum number of bytes
7915      required to use mmap(), default is 0), and MMAP_SEGMENT_SIZE (maximum
7916      number of bytes written in one cycle from a single mmap()d object,
7917      default 32768).  [Dean Gaudet]
7918
7919   *) API: Added post_read_request API phase which is run right after reading
7920      the request from a client, or right after an internal redirect.  It is
7921      useful for modules setting environment variables that depend only on
7922      the headers/contents of the request.  It does not run during subrequests
7923      because subrequests inherit pretty much everything from the main
7924      request. [Dean Gaudet]
7925
7926   *) Added mod_unique_id which is used to generate a unique identifier for
7927      each hit, available in the environment variable UNIQUE_ID.
7928      [Dean Gaudet]
7929
7930   *) init_modules is now called after the error logs have been opened.  This
7931      allows modules to emit information messages into the error logs.
7932      [Dean Gaudet]
7933
7934   *) Fixed proxy-pass-through feature of mod_rewrite; Added error logging
7935      information for case where proxy module is not available. [Marc Slemko]
7936
7937   *) PORT: Apache has need for mutexes to serialize its children around
7938      accept.  In prior versions either fcntl file locking or flock file
7939      locking were used.  The method is chosen by the definition of
7940      USE_xxx_SERIALIZED_ACCEPT in conf.h.  xxx is FCNTL for fcntl(),
7941      and FLOCK for flock().  New options have been added:
7942         - SYSVSEM to use System V style semaphores
7943         - PTHREAD to use POSIX threads (appears to work on Solaris only)
7944         - USLOCK to use IRIX uslock
7945      Based on timing various techniques, the following changes were made
7946      to the defaults:
7947         - Linux 2.x uses flock instead of fcntl
7948         - Solaris 2.x uses pthreads
7949         - IRIX uses SysV semaphores -- however multiprocessor IRIX boxes
7950           work far faster if you -DUSE_USLOCK_SERIALIZED_ACCEPT
7951      [Dean Gaudet, Pierre-Yves Kerembellec <Pierre-Yves.Kerembellec@vtcom.fr>,
7952      Martijn Koster <m.koster@pobox.com>]
7953
7954   *) PORT: The semantics of accept/select make it very desirable to use
7955      mutexes to serialize accept when multiple Listens are in use.  But
7956      in the case where only a single socket is open it is sometimes
7957      redundant to serialize accept().  Not all unixes do a good job with
7958      potentially dozens of children blocked on accept() on the same
7959      socket.  It's now possible to define SINGLE_LISTEN_UNSERIALIZED_ACCEPT and
7960      the server will avoid serialization when listening on only one socket,
7961      and use serialization when listening on multiple sockets.
7962      [Dean Gaudet] PR#467
7963
7964   *) Configure changes: TestLib replaced by TestCompile, which has
7965      some additional capability (such as doing a sanity check of
7966      the compiler and flags selected); the version of Solaris is now
7967      available via the #define value of SOLARIS2; IRIX n32bit libs
7968      now supported and selectable by new Configuration Rule: IRIXN32;
7969      We no longer default to -O2 optimization.  [Jim Jagielski]
7970
7971   *) Updated Configure: Configuration now uses AddModule to specify
7972      module source or binary file location, relative to src directory.
7973      Modules can be dropped into modules/extra, or in their own 
7974      directory, and modules can come with a Makefile or Configure can 
7975      create one.  Modules can add compiler or library information to 
7976      generated Makefiles. [Paul Sutton]
7977
7978   *) Source core re-organisation: distributed modules are now in 
7979      modules/standard. All other source code is in main. OS-specific
7980      code is in os/{unix,emx,win32} directories. [Paul Sutton]
7981
7982   *) mod_browser has been removed, since it's replaced by mod_setenvif.
7983      [Ken Coar]
7984
7985   *) Fix another long-standing bug in sub_req_lookup_file where it would
7986      happily skip past access checks on subdirectories looked up with
7987      relative paths.  (It's used by mod_dir, mod_negotiation,
7988      and mod_include.) [Dean Gaudet]
7989
7990   *) directory_walk optimization to reduce an O(N*M) loop to O(N+M) where
7991      N is the number of <Directory> sections, and M is the number of
7992      components in the filename of an object.
7993
7994      To achieve this optimization the following config changes were made:
7995         - Wildcards (* and ?, not the regex forms) in <Directory>s,
7996           <Files>s, and <Location>s now treat a slash as a special
7997           character.  For example "/home/*/public_html" previously would
7998           match "/home/a/andrew/public_html", now it only matches things
7999           like "/home/bob/public_html".  This mimics /bin/sh behaviour.
8000         - It's possible now to use [] wildcarding in <Directory>, <Files>
8001           or <Location>.
8002         - Regex <Directory>s are applied after all non-regex <Directory>s.
8003
8004     [Dean Gaudet]
8005
8006   *) Fix a bug introduced in 1.3a1 directory_walk regarding .htaccess files
8007      and corrupted paths.  [Dean Gaudet]
8008
8009   *) Enhanced and cleaned up the URL rewriting engine of mod_rewrite:
8010      First the grouped parts of RewriteRule pattern matches (parenthesis!) can
8011      be accessed now via backreferences $1..$9 in RewriteConds test-against
8012      strings in addition to RewriteRules subst string. Second the grouped
8013      parts of RewriteCond pattern matches (parenthesis!) can be accessed now
8014      via backreferences %1..%9 both in following RewriteCond test-against
8015      strings and RewriteRules subst string. This provides maximum flexibility
8016      through the use of backreferences.
8017      Additionally the rewriting engine was cleaned up by putting common
8018      code to the new expand_backrefs_inbuffer() function. 
8019      [Ralf S. Engelschall]
8020
8021   *) When merging the main server's <Directory> and <Location> sections into
8022      a vhost, put the main server's first and the vhost's second.  Otherwise
8023      the vhost can't override the main server.  [Dean Gaudet] PR#717
8024
8025   *) The <Directory> code would merge and re-merge the same section after
8026      a match was found, possibly causing problems with some modules.
8027      [Dean Gaudet]
8028
8029   *) ip-based vhosts are stored and queried using a hashing function, which
8030      has been shown to improve performance on servers with many ip-vhosts.
8031      Some other changes had to be made to accommodate this:
8032         - the * address for vhosts now behaves like _default_
8033         - the matching process now is:
8034             - match an ip-vhost directly via hash (possibly matches main
8035               server)
8036             - if that fails, just pretend it matched the main server
8037             - if so far only the main server has been matched, perform
8038               name-based lookups (ServerName, ServerAlias, ServerPath)
8039               *only on name-based vhosts*
8040             - if they fail, look for _default_ vhosts
8041      [Dean Gaudet, Dave Hankins <dhankins@sugarat.net>]
8042
8043   *) dbmmanage overhaul:
8044      - merge dbmmanage and dbmmanage.new functionality, remove dbmmanage.new 
8045      - tie() to AnyDBM_File which will use one of DB_File, NDBM_File or
8046        GDBM_File (-ldb, -lndbm, -lgdbm) (trying each in that order)
8047      - provide better seed for rand
8048      - prompt for password as per getpass(3) (turn off echo, read from
8049        /dev/tty, etc.)
8050      - use "newstyle" crypt based on $Config{osname} ($^O)
8051      - will not add a user if already in database, use new `update' command
8052        instead
8053      - added `check' command to check a users' password
8054      - added `import' command to convert existing password text-files or 
8055        dbm files exported with `view'
8056      - more descriptive usage, general cleanup, 'use strict' clean, etc.
8057      [Doug MacEachern]
8058
8059   *) Added psocket() which is a pool form of socket(), various places within
8060      the proxy weren't properly blocking alarms while registering the cleanup
8061      for its sockets.  bclose() now uses pclose() and pclosesocket().  There
8062      was a bug where the client socket was being close()d twice due a still
8063      registered cleanup.  [Dean Gaudet]
8064
8065   *) A few cleanups were made to reduce time(), getpid(), and signal() calls.
8066      [Dean Gaudet]
8067
8068   *) PORT: AIX >= 4.2 requires -lm due to libc changes.
8069      [Jason Venner <jason@idiom.com>] PR#667
8070
8071   *) Enable ``=""'' for RewriteCond directives to match against
8072      the empty string. This is the preferred way instead of ``^$''.
8073      [Ralf S. Engelschall]
8074
8075   *) Fixed an infinite loop in mod_imap for references above the server root
8076      [Dean Gaudet] PR#748
8077
8078   *) mod_proxy now has a ReceiveBufferSize directive, similar to
8079      SendBufferSize, so that the TCP window can be set appropriately
8080      for LFNs. [Phillip A. Prindeville]
8081
8082   *) mod_browser has been replaced by the more general mod_setenvif
8083      (courtesy of Paul Sutton).  BrowserMatch* directives are still
8084      available, but are now joined by SetEnvIf*, UnSetEnvIf*, and
8085      UnSetEnvIfZero directives.  [Ken Coar]
8086
8087   *) "HostnameLookups double" forces double-reverse DNS to succeed in
8088      order for remote_host to be set (for logging, or for the env var
8089      REMOTE_HOST).  The old define MAXIMUM_DNS has been deprecated.
8090      [Dean Gaudet]
8091
8092   *) mod_access overhaul:
8093      - Now understands network/netmask syntax (i.e.  10.1.0.0/255.255.0.0)
8094        and cidr syntax (i.e. 10.1.0.0/16).  PR#762
8095      - Critical path was sped up by pre-computing a few things at config time.
8096      - The undocumented syntax "allow user-agents" was removed,
8097        the replacement is "allow from env=foobar" combined with mod_browser.
8098      - When used with hostnames it now forces a double-reverse lookup
8099        no matter what the directory settings are.  This double-reverse
8100        doesn't affect any of the other routines that use the remote
8101        hostname.  In particular it's still passed to CGIs and the log
8102        without the double-reverse check.  Related PR#860.
8103      [Dean Gaudet]
8104
8105   *) When a large bwrite() occurs (larger than the internal buffer size),
8106      while there is already something in the buffer, apache will combine
8107      the large write and the buffer into a single writev().  (This is
8108      in anticipation of using mmap() for reading files.)
8109      [Dean Gaudet]
8110
8111   *) In obscure cases where a partial socket write occurred while chunking,
8112      Apache would omit the chunk header/footer on the next block.  Cleaned
8113      up other bugs/inconsistencies in error conditions in buff.c.  Fixed
8114      a bug where a long pause in DNS lookups could cause the last packet
8115      of a response to be unduly delayed.  [Roy Fielding, Dean Gaudet]
8116
8117   *) API: Added child_exit function to module structure.  This is called
8118      once per "heavy-weight process" just before a server child exit()'s 
8119      e.g. when max_requests_per_child is reached, etc.
8120      [Doug MacEachern, Dean Gaudet]
8121
8122   *) mod_include cleanup showed that handle_else was being used to handle
8123      endif.  It didn't cause problems, but it was cleaned up too.
8124      [Howard Fear]
8125
8126   *) mod_cern_meta would attempt to find meta files for the directory itself
8127      in some cases, but not in others.  It now avoids it in all cases.
8128      [Dean Gaudet]
8129
8130   *) mod_mime_magic would core dump if there was a decompression error.
8131      [Martin Kraemer <Martin.Kraemer@mch.sni.de>] PR#904
8132
8133   *) PORT: some variants of DGUX require -lsocket -lnsl
8134      [Alexander L Jones <alex@systems-options.co.uk>] PR#732
8135
8136   *) mod_autoindex now allows sorting of FancyIndexed directory listings
8137      by the various fields (name, size, et cetera), either in ascending
8138      or descending order.  Just click on the column header.  [Ken Coar]
8139
8140   *) PORT: Various tweaks to eliminate pointer-int casting warnings on 64-bit
8141      CPUs like the Alpha.  Apache still stores ints in pointers, but that's
8142      the relatively safe direction.  [Dean Gaudet] PR#344
8143
8144   *) PORT: QNX mmap() support for faster/more reliable scoreboard handling.
8145      [Igor N Kovalenko <infoh@mail.wplus.net>] PR#683
8146
8147   *) child_main avoids an unneeded call to select() when there is only one
8148      listening socket.  [Dean Gaudet]
8149
8150   *) In the event that the server is starved for idle servers it will
8151      spawn 1, then 2, then 4, ..., then 32 servers each second,
8152      doubling each second.  It'll also give a warning in the errorlog
8153      since the most common reason for this is a poor StartServers
8154      setting.  The define MAX_SPAWN_RATE can be used to raise/lower
8155      the maximum.  [Dean Gaudet]
8156
8157   *) Apache now provides an effectively unbuffered connection for
8158      CGI scripts.  This means that data will be sent to the client
8159      as soon as the CGI pauses or stops output; previously, Apache would
8160      buffer the output up to a fixed buffer size before sending, which
8161      could result in the user viewing an empty page until the CGI finished
8162      or output a complete buffer.  It is no longer necessary to use an
8163      "nph-" CGI to get unbuffered output.  Given that most CGIs are written
8164      in a language that by default does buffering (e.g. perl) this
8165      shouldn't have a detrimental effect on performance.
8166
8167      "nph-" CGIs, which formerly provided a direct socket to the client
8168      without any server post-processing, were not fully compatible with
8169      HTTP/1.1 or SSL support.  As such they would have had to implement
8170      the transport details, such as encryption or chunking, in order
8171      to work properly in certain situations.  Now, the only difference
8172      between nph and non-nph scripts is "non-parsed headers".
8173      [Dean Gaudet, Sameer Parekh, Roy Fielding]
8174
8175   *) If a BUFF is switched from buffered to unbuffered reading the first
8176      bread() will return whatever remained in the buffer prior to the
8177      switch. [Dean Gaudet]
8178
8179 Changes with Apache 1.3a1
8180
8181   *) Added another Configure helper script: TestLib. It determines
8182      if a specified library exists.  [Jim Jagielski]
8183
8184   *) PORT: Allow for use of n32bit libraries under IRIX 6.x
8185      [derived from patch from Jeff Hayes <jhayes@aw.sgi.com>]
8186      PR#721
8187
8188   *) PORT: Some architectures use size_t for various lengths in network
8189      functions such as accept(), and getsockname().  The definition
8190      NET_SIZE_T is used to control this. [Dean Gaudet]
8191
8192   *) PORT: Linux: Attempt to detect glibc based systems and include crypt.h
8193      and -lcrypt.  Test for various db libraries (dbm, ndbm, db) when
8194      mod_auth_dbm or mod_auth_db are included.  [Dean Gaudet]
8195
8196   *) PORT: QNX doesn't have initgroups() which support/suexec.c uses.
8197      [Igor N Kovalenko <infoh@mail.wplus.net>]
8198
8199   *) "force-response-1.0" now only applies to requests which are HTTP/1.0 to
8200      begin with.  "nokeepalive" now works for HTTP/1.1 clients.  Added
8201      "downgrade-1.0" which causes Apache to pretend it received a 1.0.
8202      [Dean Gaudet] related PR#875
8203
8204   *) API: Correct child_init() slot declaration from int to void, to
8205      match the init() declaration.  Update mod_example to use the new
8206      hook.  [Ken Coar]
8207
8208   *) added transport handle slot (t_handle) to the BUFF structure
8209      [Doug MacEachern]
8210
8211   *) get_client_block() returns wrong length if policy is
8212      REQUEST_CHUNKED_DECHUNK.
8213      [Kenichi Hori <ken@d2.bs1.fc.nec.co.jp>] PR#815
8214
8215   *) Support the image map format of FrontPage.  For example:
8216         rect /url.hrm 10 20 30 40
8217      ["Chris O'Byrne" <obyrne@iol.ie>] PR#807
8218
8219   *) PORT: -lresolv and -lsocks were in the wrong order for Solaris.
8220      ["Darren O'Shaughnessy" <darren@aaii.oz.au>] PR#846
8221
8222   *) AddModuleInfo directive for mod_info which allows you to annotate
8223      the output of mod_info.  ["Lou D. Langholtz" <ldl@usi.utah.edu>]
8224
8225   *) Added NoProxy directive to avoid using ProxyRemote for selected
8226      addresses.  Added ProxyDomain directive to cause unqualified
8227      names to be qualified by redirection.
8228      [Martin Kraemer <Martin.Kraemer@mch.sni.de>]
8229
8230   *) Support Proxy Authentication, and don't pass the Proxy-Authorize
8231      header to the remote host in the proxy. [Sameer Parekh and
8232      Wallace]
8233
8234   *) Upgraded mod_rewrite from 3.0.6+ to latest officially available version
8235      3.0.9. This upgrade includes: fixed deadlooping on rewriting to same
8236      URLs, fixed rewritelog(), fixed forced response code handling on
8237      redirects from within .htaccess files, disabled pipe locking under
8238      braindead SunOS 4.1.x, allow env variables to be set even on rules with
8239      no substitution, bugfixed situations where HostnameLookups is off, made
8240      mod_rewrite more thread-safe for NT port and fixed problem when creating
8241      an empty query string via "xxx?".
8242          This update also removes the copyright of Ralf S. Engelschall,
8243      i.e. now mod_rewrite no longer has a shared copyright. Instead is is
8244      exclusively copyrighted by the Apache Group now. This happened because
8245      the author now has gifted mod_rewrite exclusively to the Apache Group and 
8246      no longer maintains an external version.
8247      [Ralf S. Engelschall]
8248
8249   *) API: Added child_init function to module structure.  This is called
8250      once per "heavy-weight process" before any requests are handled.
8251      See http_config.h for more details.  [Dean Gaudet]
8252
8253   *) Anonymous_LogEmail was logging on each subrequest.
8254      [Dean Gaudet] PR#421, 868
8255
8256   *) API: Added is_initial_req() which tests if the request being
8257      processed is the initial request, or a subrequest.
8258      [Doug MacEachern]
8259
8260   *) Extended SSI (mod_include) now handles additional relops for
8261      string comparisons (<, >, <=, and >=).  [Bruno Wolff III] PR#41
8262
8263   *) Configure fixed to correctly propagate user-selected options and
8264      settings (such as CC and OPTIM) to Makefiles other than
8265      src/Makefile (notably support/Makefile).  [Ken Coar] PR#666, #834
8266
8267   *) IndexOptions SuppressHTMLPreamble now causes the actual HTML of
8268      directory indices to start with the contents of the HeaderName file
8269      if there is one.  If there isn't one, the behaviour is unchanged.
8270      [Ken Coar, Roy Fielding, Andrey A. Chernov]
8271
8272   *) WIN32: Modules can now be dynamically loaded DLLs using the
8273      LoadModule/LoadFile directives. Note that module DLLs must be
8274      compiled with the multithreaded DLL version of the runtime library.
8275      [Alexei Kosut and Ben Laurie]
8276
8277   *) Automatic indexing removed from mod_dir and placed into mod_autoindex.
8278      This allows the admin to completely remove automatic indexing
8279      from the server, while still supporting the basic functions of
8280      trailing-slash redirects and DirectoryIndex files.  Note that if
8281      you're carrying over an old Configuration file and you use directory
8282      indexing then you'll want to add:
8283
8284      Module autoindex_module    mod_autoindex.o
8285
8286      before mod_dir in your Configuration.  [Dean Gaudet]
8287
8288   *) popendir/pclosedir created to properly protect directory scanning.
8289      [Dean Gaudet] PR#525
8290
8291   *) AliasMatch, ScriptAliasMatch and RedirectMatch directives added,
8292      giving regex support to mod_alias. <DirectoryMatch>, <LocationMatch>
8293      and <FilesMatch> sections added to succeed <DirectoryMatch ~>, etc...
8294      [Alexei Kosut]
8295
8296   *) The AccessFileName directive can now take more than one filename.
8297      ["Lou D. Langholtz" <ldl@usi.utah.edu>]
8298
8299   *) The new mod_mime_magic can be used to "magically" determine the type
8300      of a file if the extension is unknown.  Based on the unix file(1)
8301      command.  [Ian Kluft <ikluft@cisco.com>]
8302
8303   *) We now determine and display the time spent processing a
8304      request if desired.  [Jim Jagielski]
8305
8306   *) mod_status: PID field of "dead" child slots no longer displays
8307      main httpd process's PID.  [Jim Jagielski]
8308
8309   *) Makefile.nt added - to build all the bits from the command line:
8310         nmake -f Makefile.nt
8311          Doesn't yet work properly. [Ben Laurie]
8312
8313   *) Default text of 404 error is now "Not Found" rather than the
8314      potentially misleading "File Not Found".  [Ken Coar]
8315
8316   *) CONFIG: "HostnameLookups" now defaults to off because it is far better
8317      for the net if we require people that actually need this data to
8318      enable it.  [Linus Torvalds]
8319
8320   *) directory_walk() is an expensive function, keep a little more state to
8321      avoid needless string counting.  Add two new functions make_dirstr_parent
8322      and make_dirstr_prefix which replace all existing uses of make_dirstr.
8323      The new functions are a little less general than make_dirstr, but
8324      work more efficiently (less memory, less string counting).
8325      [Dean Gaudet]
8326
8327   *) EXTRA_LFLAGS was changed to EXTRA_LDFLAGS (and LFLAGS was changed
8328      to LDFLAGS) to avoid complications with lex rules in make files.
8329      [Dean Gaudet] PR#372
8330
8331   *) run_method optimized to avoid needless scanning over NULLs in the
8332      module list.  [Dean Gaudet]
8333
8334   *) Revamp of (unix) scoreboard management code such that it avoids
8335      unnecessary traversals of the scoreboard on each hit.  This is
8336      particularly important for high volume sites with a large
8337      HARD_SERVER_LIMIT.  Some of the previous operations were O(n^2),
8338      and are now O(n).  See also SCOREBOARD_MAINTENANCE_INTERVAL in
8339      httpd.h. [Dean Gaudet]
8340
8341   *) In configurations using multiple Listen statements it was possible for
8342      busy sockets to starve other sockets of service.  [Dean Gaudet]
8343
8344   *) Added hook so standalone_main can be replaced at compile time
8345      (define STANDALONE_MAIN)
8346      [Doug MacEachern]
8347
8348   *) Lowest-level read/write functions in buff.c will be replaced with
8349      the SFIO library calls sfread/sfwrite if B_SFIO is defined at
8350      compile time.  The default sfio discipline will behave as apache
8351      would without sfio compiled in.
8352      [Doug MacEachern]
8353
8354   *) Enhance UserDir directive (mod_userdir) to accept a list of
8355      usernames for the 'disable' keyword, and add 'enable user...' to
8356      selectively *en*able userdirs if they're globally disabled.
8357      [Ken Coar]
8358
8359   *) If NETSCAPE_DBM_COMPAT is defined in EXTRA_CFLAGS then Apache
8360      will work with Netscape dbm files.  (dbmmanage will probably not
8361      work however.) [Alexander Spohr <aspohr@netmatic.com>] PR#444
8362
8363   *) Add a ListenBacklog directive to control the backlog parameter
8364      passed to listen().  Also change the default to 511 from 512.
8365      [Marc Slemko]
8366
8367   *) API: A new handler response DONE which informs apache that the
8368      request has been handled and it can finish off quickly, similar to
8369      how it handles errors. [Rob Hartill]
8370
8371   *) Turn off chunked encoding after sending terminating chunk/footer
8372      so that we can't do it twice by accident. [Roy Fielding]
8373
8374   *) mod_expire also issues Cache-Control: max-age headers.
8375      [Rob Hartill]
8376
8377   *) API: Added kill_only_once option for free_proc_chain so that it won't
8378      aggressively try to kill off specific children.  For fastcgi.
8379      [Stanley Gambarin <gambarin@OpenMarket.com>]
8380
8381   *) mod_auth deals with extra ':' delimited fields.  [Marc Slemko]
8382
8383   *) Added IconHeight and IconWidth to mod_dir's IndexOptions directive.
8384      When used together, these cause mod_dir to emit HEIGHT and WIDTH
8385      attributes in the FancyIndexing IMG tags.  [Ken Coar]
8386
8387   *) PORT: Sequent and SONY NEWS-OS support added.  [Jim Jagielski]
8388
8389   *) PORT: Added Windows NT support
8390      [Ben Laurie and Ambarish Malpani <ambarish@valicert.com>]
8391
8392 Changes with Apache 1.2.6
8393
8394   *) mod_include when using XBitHack Full would send ETags in addition to
8395      sending Last-Modifieds.  This is incorrect HTTP/1.1 behaviour.
8396      [Dean Gaudet] PR#1133
8397
8398   *) SECURITY: When a client connects to a particular port/addr, and
8399      gives a Host: header ensure that the virtual host requested can
8400      actually be reached via that port/addr.  [Ed Korthof <ed@organic.com>]
8401
8402   *) Support virtual hosts with wildcard port and/or multiple ports
8403      properly.  [Ed Korthof <ed@organic.com>]
8404
8405   *) Fixed some case-sensitivity issues according to RFC2068.
8406      [Dean Gaudet]
8407
8408   *) Set r->allowed properly in mod_asis.c, mod_dir.c, mod_info.c,
8409      and mod_include.c.  [Dean Gaudet]
8410
8411   *) Variable 'cwd' was being used pointlessly before being set.
8412      [Ken Coar] PR#1738
8413
8414   *) SIGURG doesn't exist on all platforms.
8415      [Mark Andrew Heinrich <heinrich@tinderbox.Stanford.EDU>]
8416
8417   *) When an error occurs during a POST, or other operation with a
8418      request body, the body has to be read from the net before allowing
8419      a keepalive session to continue.  [Roy Fielding] PR#1399
8420
8421   *) When an error occurs in fcntl() locking suggest the user look up
8422      the docs for LockFile.  [Dean Gaudet]
8423
8424   *) table_set() and table_unset() did not deal correctly with
8425      multiple occurrences of the same key. [Stephen Scheck
8426      <sscheck@infonex.net>, Ben Laurie] PR#1604
8427
8428   *) send_fd_length() did not calculate total_bytes_sent properly in error
8429      cases.  [Ben Reser <breser@regnow.com>] PR#1366
8430
8431   *) r->connection->user was allocated in the wrong pool causing corruption
8432      in some cases when used with mod_cern_meta.  [Dean Gaudet] PR#1500
8433
8434   *) mod_proxy was sending HTTP/1.1 responses to ftp requests by mistake.
8435      Also removed the auto-generated link to www.apache.org that was the
8436      source of so many misdirected bug reports.  [Roy Fielding, Marc Slemko]
8437
8438   *) Multiple "close" tokens may have been set in the "Connection"
8439      header, not an error, but a waste.
8440      [Ronald.Tschalaer@psi.ch] PR#1683
8441
8442   *) "basic" and "digest" auth tokens should be tested case-insensitive.
8443      [Ronald.Tschalaer@psi.ch] PR#1599, PR#1666
8444
8445   *) It appears the "257th byte" bug (see
8446      htdocs/manual/misc/known_client_problems.html#257th-byte) can happen
8447      at the 256th byte as well.  Fixed.  [Dean Gaudet]
8448
8449   *) mod_rewrite would not handle %3f properly in some situations.
8450      [Ralf Engelschall]
8451
8452   *) Apache could generate improperly chunked HTTP/1.1 responses when
8453      the bputc() or rputc() functions were used by modules (such as
8454      mod_include).  [Dean Gaudet]
8455
8456   *) #ifdef wrap a few #defines in httpd.h to make life easier on
8457      some ports.  [Ralf Engelschall]
8458
8459   *) Fix MPE compilation error in mod_usertrack.c.  [Mark Bixby]
8460
8461   *) Quote CC='$(CC)' to improve recurse make calls.  [Martin Kraemer]
8462
8463   *) Avoid B_ERROR redeclaration on sysvr4 systems.  [Martin Kraemer]
8464
8465 Changes with Apache 1.2.5
8466
8467   *) SECURITY: Fix a possible buffer overflow in logresolve.  This is
8468      only an issue on systems without a MAXDNAME define or where 
8469      the resolver returns domain names longer than MAXDNAME.  [Marc Slemko]
8470
8471   *) Fix an improper length in an ap_snprintf call in proxy_date_canon().
8472      [Marc Slemko]
8473
8474   *) Fix core dump in the ftp proxy when reading incorrectly formatted
8475      directory listings.  [Marc Slemko]
8476
8477   *) SECURITY: Fix possible minor buffer overflow in the proxy cache.
8478      [Marc Slemko]
8479
8480   *) SECURITY: Eliminate possible buffer overflow in cfg_getline, which
8481      is used to read various types of files such as htaccess and 
8482      htpasswd files.  [Marc Slemko]
8483
8484   *) SECURITY: Ensure that the buffer returned by ht_time is always
8485      properly null terminated.  [Marc Slemko]
8486
8487   *) SECURITY: General mod_include cleanup, including fixing several
8488      possible buffer overflows and a possible infinite loop.  This cleanup
8489      was done against 1.3 code and then backported to 1.2, the result
8490      is a large difference (due to indentation cleanup in 1.3 code).
8491      Users interested in seeing a smaller set of relevant differences
8492      should consider comparing against src/modules/standard/mod_include.c
8493      from the 1.3b3 release.  Non-indentation changes to mod_include
8494      between 1.2 and 1.3 were minimal.  [Dean Gaudet, Marc Slemko]
8495
8496   *) SECURITY: Numerous changes to mod_imap in a general cleanup
8497      including fixing a possible buffer overflow.  This cleanup also
8498      was done with 1.3 code as a basis, see the the previous note
8499      about mod_include.  [Dean Gaudet]
8500
8501   *) SECURITY: If a htaccess file can not be read due to bad 
8502      permissions, deny access to the directory with a HTTP_FORBIDDEN.  
8503      The previous behavior was to ignore the htaccess file if it could not
8504      be read.  This change may make some setups with unreadable
8505      htaccess files stop working.  PR#817  [Marc Slemko]
8506
8507   *) SECURITY: no2slash() was O(n^2) in the length of the input.  
8508      Make it O(n).  This inefficiency could be used to mount a denial 
8509      of service attack against the Apache server.  Thanks to 
8510      Michal Zalewski <lcamtuf@boss.staszic.waw.pl> for reporting
8511      this.  [Dean Gaudet]
8512
8513   *) mod_include used uninitialized data for some uses of && and ||.
8514      [Brian Slesinsky <bslesins@wired.com>] PR#1139
8515
8516   *) mod_imap should decline all non-GET methods.
8517      [Jay Bloodworth <jay@pathways.sde.state.sc.us>]
8518
8519   *) suexec.c wouldn't build without -DLOG_EXEC. [Jason A. Dour]
8520
8521   *) mod_userdir was modifying r->finfo in cases where it wasn't setting
8522      r->filename.  Since those two are meant to be in sync with each other
8523      this is a bug.  ["Paul B. Henson" <henson@intranet.csupomona.edu>]
8524
8525   *) mod_include did not properly handle all possible redirects from sub-
8526      requests.  [Ken Coar]
8527
8528   *) Inetd mode (which is buggy) uses timeouts without having setup the
8529      jmpbuffer. [Dean Gaudet] PR#1064
8530
8531   *) Work around problem under Linux where a child will start looping
8532      reporting a select error over and over.
8533      [Rick Franchuk <rickf@transpect.net>] PR#1107
8534
8535 Changes with Apache 1.2.4
8536
8537   *) The ProxyRemote change in 1.2.3 introduced a bug resulting in the proxy
8538      always making requests with the full-URI instead of just the URI path.
8539      [Marc Slemko, Roy Fielding]
8540
8541   *) Add -lm for AIX versions >= 4.2 to allow Apache to link properly
8542      on this platform.  [Marc Slemko]
8543
8544 Changes with Apache 1.2.3
8545
8546   *) The request to a remote proxy was mangled if it was generated as the
8547      result of a ProxyPass directive. URL schemes other than http:// were not
8548      supported when ProxyRemote was used. PR#260, PR#656, PR#699, PR#713,
8549      PR#812 [Lars Eilebrecht]
8550
8551   *) Fixed proxy-pass-through feature of mod_rewrite; Added error logging
8552      information for case where proxy module is not available. [Marc Slemko]
8553
8554   *) Force proxy to always respond as HTTP/1.0, which it was failing to
8555      do for errors and cached responses.  [Roy Fielding]
8556
8557   *) PORT: Improved support for ConvexOS 11.  [Jeff Venters]
8558
8559 Changes with Apache 1.2.2 [not released]
8560
8561   *) Fixed another long-standing bug in sub_req_lookup_file where it would
8562      happily skip past access checks on subdirectories looked up with relative
8563      paths.  (It's used by mod_dir, mod_negotiation, and mod_include.)
8564      [Dean Gaudet]
8565
8566   *) Add lockfile name to error message printed out when
8567      USE_FLOCK_SERIALIZED_ACCEPT is defined.
8568      [Marc Slemko]
8569
8570   *) Enhanced the chunking and error handling inside the buffer functions.
8571      [Dean Gaudet, Roy Fielding]
8572
8573   *) When merging the main server's <Directory> and <Location> sections into
8574      a vhost, put the main server's first and the vhost's second.  Otherwise
8575      the vhost can't override the main server.  [Dean Gaudet] PR#717
8576
8577   *) The <Directory> code would merge and re-merge the same section after
8578      a match was found, possibly causing problems with some modules.
8579      [Dean Gaudet]
8580
8581   *) Fixed an infinite loop in mod_imap for references above the server root.
8582      [Dean Gaudet] PR#748
8583
8584   *) mod_include cleanup showed that handle_else was being used to handle
8585      endif.  It didn't cause problems, but it was cleaned up too.
8586      [Howard Fear]
8587
8588   *) Last official synchronization of mod_rewrite with author version (because
8589      mod_rewrite is now directly developed by the author at the Apache Group):
8590      o added diff between mod_rewrite 3.0.6+ and 3.0.9
8591        minus WIN32/NT stuff, but plus copyright removement.
8592        In detail:
8593        - workaround for detecting infinite rewriting loops
8594        - fixed setting of env vars when "-" is used as subst string
8595        - fixed forced response code on redirects (PR#777)
8596        - fixed cases where r->args is ""
8597        - kludge to disable locking on pipes under braindead SunOS
8598        - fix for rewritelog in cases where remote hostname is unknown
8599        - fixed totally damaged request_rec walk-back loop
8600      o remove static from local data and add static to global ones.
8601      o replaced ugly proxy finding stuff by simple
8602        find_linked_module("mod_proxy") call.
8603      o added missing negation char on rewritelog()
8604      o fixed a few comment typos
8605      [Ralf S. Engelschall]
8606
8607   *) Anonymous_LogEmail was logging on each subrequest.
8608      [Dean Gaudet] PR#421, PR#868
8609
8610   *) "force-response-1.0" now only applies to requests which are HTTP/1.0 to
8611      begin with.  "nokeepalive" now works for HTTP/1.1 clients.  Added
8612      "downgrade-1.0" which causes Apache to pretend it received a 1.0.
8613      Additionally mod_browser now triggers during translate_name to workaround
8614      a deficiency in the header_parse phase.
8615      [Dean Gaudet] PR#875
8616
8617   *) get_client_block() returns wrong length if policy is 
8618      REQUEST_CHUNKED_DECHUNK.
8619      [Kenichi Hori <ken@d2.bs1.fc.nec.co.jp>] PR#815
8620
8621   *) Properly treat <files> container like other containers in mod_info.
8622      [Marc Slemko] PR#848
8623
8624   *) The proxy didn't treat the "Host:" keyword of the host header as case-
8625      insensitive.  The proxy would corrupt the first line of a response from
8626      an HTTP/0.9 server.  [Kenichi Hori <ken@d2.bs1.fc.nec.co.jp>] PR#813,814
8627
8628   *) mod_include would log some bogus values occasionally.
8629      [Skip Montanaro <skip@calendar.com>, Marc Slemko] PR#797
8630
8631   *) PORT: The slack fd changes in 1.2.1 introduced a problem with SIGHUP
8632      under Solaris 2.x (up through 2.5.1).  It has been fixed.
8633      [Dean Gaudet] PR#832
8634
8635   *) API: In HTTP/1.1, whether or not a request message contains a body
8636      is independent of the request method and based solely on the presence
8637      of a Content-Length or Transfer-Encoding.  Therefore, our default
8638      handlers need to be prepared to read a body even if they don't know
8639      what to do with it; otherwise, the body would be mistaken for the
8640      next request on a persistent connection.  discard_request_body()
8641      has been added to take care of that.  [Roy Fielding] PR#378
8642
8643   *) API: Symbol APACHE_RELEASE provides a numeric form of the Apache
8644      release version number, such that it always increases along the
8645      same lines as our source code branching.  [Roy Fielding]
8646
8647   *) Minor oversight on multiple variants fixed.  [Paul Sutton] PR#94
8648
8649 Changes with Apache 1.2.1
8650
8651   *) SECURITY: Don't serve file system objects unless they are plain files,
8652      symlinks, or directories.  This prevents local users from using pipes
8653      or named sockets to invoke programs for an extremely crude form of
8654      CGI.  [Dean Gaudet]
8655
8656   *) SECURITY: HeaderName and ReadmeName were settable in .htaccess and
8657      could contain "../" allowing a local user to "publish" any file on
8658      the system.  No slashes are allowed now.  [Dean Gaudet]
8659
8660   *) SECURITY: It was possible to violate the symlink Options using mod_dir
8661      (headers, readmes, titles), mod_negotiation (type maps), or
8662      mod_cern_meta (meta files).  [Dean Gaudet]
8663
8664   *) SECURITY: Apache will refuse to run as "User root" unless
8665      BIG_SECURITY_HOLE is defined at compile time.  [Dean Gaudet]
8666
8667   *) CONFIG: If a symlink pointed to a directory then it would be disallowed
8668      if it contained a .htaccess disallowing symlinks.  This is contrary
8669      to the rule that symlink permissions are tested with the symlink
8670      options of the parent directory.  [Dean Gaudet] PR#353
8671
8672   *) CONFIG: The LockFile directive can be used to place the serializing
8673      lockfile in any location.  It previously defaulted to /usr/tmp/htlock.
8674      [Somehow it took four of us: Randy Terbush, Jim Jagielski, Dean Gaudet,
8675      Marc Slemko]
8676
8677   *) Request processing now retains state of whether or not the request
8678      body has been read, so that internal redirects and subrequests will
8679      not try to read it twice (and block). [Roy Fielding]
8680
8681   *) Add a placeholder in modules/Makefile to avoid errors with certain
8682      makes. [Marc Slemko]
8683
8684   *) QUERY_STRING was unescaped in mod_include, it shouldn't be.
8685      [Dean Gaudet] PR#644
8686
8687   *) mod_include was not properly changing the current directory.
8688      [Marc Slemko] PR#742
8689
8690   *) Attempt to work around problems with third party libraries that do not
8691      handle high numbered descriptors (examples include bind, and
8692      solaris libc).  On all systems apache attempts to keep all permanent
8693      descriptors above 15 (called the low slack line).  Solaris users
8694      can also benefit from adding -DHIGH_SLACK_LINE=256 to EXTRA_CFLAGS
8695      which keeps all non-FILE * descriptors above 255.  On all systems
8696      this should make supporting large numbers of vhosts with many open
8697      log files more feasible.  If this causes trouble please report it,
8698      you can disable this workaround by adding -DNO_SLACK to EXTRA_CFLAGS.
8699      [Dean Gaudet] various PRs
8700
8701   *) Related to the last entry, network sockets are now opened before
8702      log files are opened.  The only known case where this can cause
8703      problems is under Solaris with many virtualhosts and many Listen
8704      directives.  But using -DHIGH_SLACK_LINE=256 described above will
8705      work around this problem.  [Dean Gaudet]
8706
8707   *) USE_FLOCK_SERIALIZED_ACCEPT is now default for FreeBSD, A/UX, and
8708      SunOS 4.
8709
8710   *) Improved unix error response logging.  [Marc Slemko]
8711
8712   *) Update mod_rewrite from 3.0.5 to 3.0.6.  New ruleflag
8713      QSA=query_string_append.  Also fixed a nasty bug in per-dir context:
8714      when a URL http://... was used in conjunction with a special
8715      redirect flag, e.g. R=permanent, the permanent status was lost.
8716      [Ronald Tschalaer <Ronald.Tschalaer@psi.ch>, Ralf S. Engelschall]
8717
8718   *) If an object has multiple variants that are otherwise equal Apache
8719      would prefer the last listed variant rather than the first.
8720      [Paul Sutton] PR#94
8721
8722   *) "make clean" at the top level now removes *.o.  [Dean Gaudet] PR#752
8723
8724   *) mod_status dumps core in inetd mode.  [Marc Slemko and Roy Fielding]
8725      PR#566
8726
8727   *) pregsub had an off-by-1 in its error checking code. [Alexei Kosut]
8728
8729   *) PORT: fix rlim_t problems with AIX 4.2. [Marc Slemko] PR#333
8730
8731   *) PORT: Update UnixWare support for 2.1.2.
8732      [Lawrence Rosenman <ler@lerctr.org>] PR#511
8733
8734   *) PORT: NonStop-UX [Joachim Schmitz <schmitz_joachim@tandem.com>] PR#327
8735
8736   *) PORT: Update ConvexOS support for 11.5.
8737      [David DeSimone <fox@convex.com>] PR#399
8738
8739   *) PORT: Support for DEC cc compiler under ULTRIX.
8740      ["P. Alejandro Lopez-Valencia" <alejolo@ideam.gov.co>] PR#388
8741
8742   *) PORT: Support for Maxion/OS SVR4.2 Real Time Unix. [no name given] PR#383
8743
8744   *) PORT: Workaround for AIX 3.x compiler bug in http_bprintf.c.  
8745      [Marc Slemko] PR#725
8746
8747   *) PORT: fix problem compiling http_bprintf.c with gcc under SCO
8748      [Marc Slemko] PR#695
8749
8750 Changes with Apache 1.2
8751
8752 Changes with Apache 1.2b11
8753
8754   *) Fixed open timestamp fd in proxy_cache.c [Chuck Murcko]
8755
8756   *) Added undocumented perl SSI mechanism for -DUSE_PERL_SSI and mod_perl.
8757      [Doug MacEachern, Rob Hartill]
8758
8759   *) Proxy needs to use hard_timeout instead of soft_timeout when it is
8760      reading from one buffer and writing to another, at least until it has
8761      a custom timeout handler.  [Roy Fielding and Petr Lampa]
8762
8763   *) Fixed problem on IRIX with servers hanging in IdentityCheck,
8764      apparently due to a mismatch between sigaction and setjmp.
8765      [Roy Fielding] PR#502
8766
8767   *) Log correct status code if we timeout before receiving a request (408)
8768      or if we received a request-line that was too long to process (414).
8769      [Ed Korthof and Roy Fielding] PR#601
8770
8771   *) Virtual hosts with the same ServerName, but on different ports, were
8772      not being selected properly.  [Ed Korthof]
8773
8774   *) Added code to return the requested IP address from proxy_host2addr()
8775      if gethostbyaddr() fails due to reverse DNS lookup problems. Original
8776      change submitted by Jozsef Hollosi <hollosi@sbcm.com>.
8777      [Chuck Murcko] PR#614
8778
8779   *) If multiple requests on a single connection are used to retrieve
8780      data from different virtual hosts, the virtual host list would be
8781      scanned starting with the most recently used VH instead of the first,
8782      causing most virtual hosts to be ignored.
8783      [Paul Sutton and Martin Mares] PR#610
8784
8785   *) The OS/2 handling of process group was broken by a porting patch for
8786      MPE, so restored prior code for OS/2.  [Roy Fielding and Garey Smiley]
8787
8788   *) Inherit virtual server port from main server if none (or "*") is
8789      given for VirtualHost.  [Dean Gaudet] PR#576
8790
8791   *) If the lookup for a DirectoryIndex name with content negotiation
8792      has found matching variants, but none are acceptable, return the
8793      negotiation result if there are no more DirectoryIndex names to lookup.
8794      [Petr Lampa and Roy Fielding]
8795
8796   *) If a soft_timeout occurs after keepalive is set, then the main child
8797      loop would try to read another request even though the connection
8798      has been aborted.  [Roy Fielding]
8799
8800   *) Configure changes: Allow for whitespace at the start of a
8801      Module declaration. Also, be more understanding about the
8802      CC=/OPTIM= format in Configuration. Finally, fix compiler
8803      flags if using HP-UX's cc compiler. [Jim Jagielski]
8804
8805   *) Subrequests and internal redirects now inherit the_request from the
8806      original request-line. [Roy Fielding]
8807
8808   *) Test for error conditions before creating output header fields, since
8809      we don't want the error message to include those fields.  Likewise,
8810      reset the content_language(s) and content_encoding of the response
8811      before generating or redirecting to an error message, since the new
8812      message will have its own Content-* definitions. [Dean Gaudet]
8813
8814   *) Restored the semantics of headers_out (headers sent only with 200..299
8815      and 304 responses) and err_headers_out (headers sent with all responses).
8816      Avoid the overhead of copying tables if err_headers_out is empty
8817      (the usual case).  [Roy Fielding]
8818
8819   *) Fixed a couple places where a check for the default Content-Type was
8820      not properly checking both the value configured by the DefaultType
8821      directive and the DEFAULT_TYPE symbol in httpd.h.  Changed the value
8822      of DEFAULT_TYPE to match the documented default (text/plain).
8823      [Dean Gaudet] PR#506
8824
8825   *) Escape the HTML-sensitive characters in the Request-URI that is
8826      output for each child by mod_status. [Dean Gaudet and Ken Coar] PR#501
8827
8828   *) Properly initialize the flock structures used by the mutex locking
8829      around accept() when USE_FCNTL_SERIALIZED_ACCEPT is defined.
8830      [Marc Slemko]
8831
8832   *) The method for determining PATH_INFO has been restored to the pre-1.2b
8833      (and NCSA httpd) definition wherein it was the extra path info beyond
8834      the CGI script filename.  The environment variable FILEPATH_INFO has
8835      been removed, and instead we supply the original REQUEST_URI to any
8836      script that wants to be Apache-specific and needs the real URI path.
8837      This solves a problem with existing scripts that use extra path info
8838      in the ScriptAlias directive to pass options to the CGI script.
8839      [Roy Fielding]
8840
8841   *) The _default_ change in 1.2b10 will change the behaviour on configs
8842      that use multiple Listen statements for listening on multiple ports.
8843      But that change is necessary to make _default_ consistent with other
8844      forms of <VirtualHost>.  It requires such configs to be modified
8845      to use <VirtualHost _default_:*>.  The documentation has been
8846      updated.  [Dean Gaudet] PR#530
8847
8848   *) If an ErrorDocument CGI script is used to respond to an error
8849      generated by another CGI script which has already read the message
8850      body of the request, the server would block trying to read the
8851      message body again.  [Rob Hartill]
8852
8853   *) signal() replacement conflicted with a define on QNX (and potentially
8854      other platforms). Fixed. [Ben Laurie] PR#512
8855
8856 Changes with Apache 1.2b10
8857
8858   *) Allow HTTPD_ROOT, SERVER_CONFIG_FILE, DEFAULT_PATH, and SHELL_PATH
8859      to be configured via -D in Configuration.  [Dean Gaudet] PR#449
8860
8861   *) <VirtualHost _default_:portnum> didn't work properly.  [Dean Gaudet]
8862
8863   *) Added prototype for mktemp() for SUNOS4 [Marc Slemko]
8864
8865   *) In mod_proxy.c, check return values for proxy_host2addr() when reading
8866      config, in case the hostent struct returned is trash.
8867      [Chuck Murcko] PR #491
8868
8869   *) Fixed the fix in 1.2b9 for parsing URL query info into args for CGI
8870      scripts.  [Dean Gaudet, Roy Fielding, Marc Slemko]
8871
8872 Changes with Apache 1.2b9  [never announced]
8873
8874   *) Reset the MODULE_MAGIC_NUMBER to account for the unsigned port
8875      changes and in anticipation of 1.2 final release.  [Roy Fielding]
8876
8877   *) Fix problem with scripts not receiving a SIGPIPE when client drops
8878      the connection (e.g., when user presses Stop).  Apache will now stop
8879      trying to send a message body immediately after an error from write.
8880      [Roy Fielding and Nathan Kurz] PR#335
8881
8882   *) Rearrange Configuration.tmpl so that mod_rewrite has higher priority
8883      than mod_alias, and mod_alias has higher priority than mod_proxy;
8884      rearranged other modules to enhance understanding of their purpose
8885      and relative order (and maybe even reduce some overhead).
8886      [Roy Fielding and Sameer Parekh]
8887
8888   *) Fix graceful restart.  Eliminate many signal-related race
8889      conditions in both forms of restart, and in SIGTERM.  See
8890      htdocs/manual/stopping.html for details on stopping and
8891      restarting the parent.  [Dean Gaudet]
8892
8893   *) Fix memory leaks in mod_rewrite, mod_browser, mod_include.  Tune
8894      memory allocator to avoid a behaviour that required extra blocks to
8895      be allocated.  [Dean Gaudet]
8896
8897   *) Allow suexec to access files relative to current directory but not
8898      above.  (Excluding leading / or any .. directory.)  [Ken Coar]
8899      PR#269, 319, 395
8900
8901   *) Fix suexec segfault when group doesn't exist. [Gregory Neil Shapiro]
8902      PR#367, 368, 354, 453
8903
8904   *) Fix the above fix: if suexec is enabled, avoid destroying r->url
8905      while obtaining the /~user and save the username in a separate data
8906      area so that it won't be overwritten by the call to getgrgid(), and
8907      fix some misuse of the pool string allocation functions.  Also fixes
8908      a general problem with parsing URL query info into args for CGI scripts.
8909      [Roy Fielding] PR#339, 367, 354, 453
8910
8911   *) Fix IRIX warning about bzero undefined. [Marc Slemko]
8912
8913   *) Fix problem with <Directory proxy:...>. [Martin Kraemer] PR#271
8914
8915   *) Corrected spelling of "authoritative".  AuthDBAuthoratative became
8916      AuthDBAuthoritative. [Marc Slemko] PR#420
8917
8918   *) MaxClients should be at least 1. [Lars Eilebrecht] PR#375
8919
8920   *) The default handler now logs invalid methods or URIs (i.e. PUT on an
8921      object that can't be PUT, or FOOBAR for some method FOOBAR that
8922      apache doesn't know about at all).  Log 404s that occur in mod_include.
8923      [Paul Sutton, John Van Essen]
8924
8925   *) If a soft timeout (or lingerout) occurs while trying to flush a
8926      buffer or write inside buff.c or fread'ing from a CGI's output,
8927      then the timeout would be ignored. [Roy Fielding] PR#373
8928
8929   *) Work around a bug in Netscape Navigator versions 2.x, 3.x and 4.0b2's
8930      parsing of headers.  If the terminating empty-line CRLF occurs starting
8931      at the 256th or 257th byte of output, then Navigator will think a normal
8932      image is invalid.  We are guessing that this is because their initial
8933      read of a new request uses a 256 byte buffer. We check the bytes written
8934      so far and, if we are about to tickle the bug, we instead insert a
8935      padding header of eminent bogosity. [Roy Fielding and Dean Gaudet] PR#232
8936
8937   *) Fixed SIGSEGV problem when a DirectoryIndex file is also the source
8938      of an external redirection.  [Roy Fielding and Paul Sutton]
8939
8940   *) Configure would create a broken Makefile if the configuration file
8941      contained a commented-out Rule.  [Roy Fielding]
8942
8943   *) Promote per_dir_config and subprocess_env from the subrequest to the
8944      main request in mod_negotiation.  In particular this fixes a bug
8945      where <Files> sections wouldn't properly apply to negotiated content.
8946      [Dean Gaudet]
8947
8948   *) Fix a potential deadlock in mod_cgi script_err handling.
8949      [Ralf S. Engelschall]
8950
8951   *) rotatelogs zero-pads the logfile names to improve alphabetic sorting.
8952      [Mitchell Blank Jr]
8953
8954   *) Updated mod_rewrite to 3.0.4: Fixes HTTP redirects from within
8955      .htaccess files because the RewriteBase was not replaced correctly.
8956      Updated mod_rewrite to 3.0.5: Fixes problem with rewriting inside
8957      <Directory> sections missing a trailing /.  [Ralf S. Engelschall]
8958
8959   *) Clean up Linux settings in conf.h by detecting 2.x versus 1.x.  For
8960      1.x the settings are those of pre-1.2b8.  For 2.x we include
8961      USE_SHMGET_SCOREBOARD (scoreboard in shared memory rather than file) and
8962      HAVE_SYS_RESOURCE_H (enable the RLimit commands).
8963      [Dean Gaudet] PR#336, PR#340
8964
8965   *) Redirect did not preserve ?query_strings when present in the client's
8966      request.  [Dean Gaudet]
8967
8968   *) Configure was finding non-modules on EXTRA_LIBS. [Frank Cringle] PR#380
8969
8970   *) Use /bin/sh5 on ULTRIX.  [P. Alejandro Lopez-Valencia] PR#369
8971
8972   *) Add UnixWare compile/install instructions.  [Chuck Murcko]
8973
8974   *) Add mod_example (illustration of API techniques).  [Ken Coar]
8975
8976   *) Add macro for memmove to conf.h for SUNOS4. [Marc Slemko]
8977
8978   *) Improve handling of directories when filenames have spaces in them.
8979      [Chuck Murcko]
8980
8981   *) For hosts with multiple IP addresses, try all additional addresses if
8982      necessary to get a connect. Fail only if hostent address list is
8983      exhausted. [Chuck Murcko]
8984
8985   *) More signed/unsigned port fixes.  [Dean Gaudet]
8986
8987   *) HARD_SERVER_LIMIT can be defined in the Configuration file now.
8988      [Dean Gaudet]
8989
8990 Changes with Apache 1.2b8
8991
8992   *) suexec.c doesn't close the log file, allowing CGIs to continue writing
8993      to it.  [Marc Slemko]
8994
8995   *) The addition of <Location> and <File> directives made the
8996      sub_req_lookup_simple() function bogus, so we now handle
8997      the special cases directly.  [Dean Gaudet]
8998
8999   *) We now try to log where the server is dumping core when a fatal
9000      signal is received.  [Ken Coar]
9001
9002   *) Improved lingering_close by adding a special timeout, removing the
9003      spurious log messages, removing the nonblocking settings (they
9004      are not needed with the better timeout), and adding commentary
9005      about the NO_LINGCLOSE and USE_SO_LINGER issues.  NO_LINGCLOSE is
9006      now the default for SunOS4, UnixWare, NeXT, and IRIX.  [Roy Fielding]
9007
9008   *) Send error messages about setsockopt failures to the server error
9009      log instead of stderr.  [Roy Fielding]
9010
9011   *) Fix loopholes in proxy cache expiry vis a vis alarms. [Brian Moore]
9012
9013   *) Stopgap solution for CGI 3-second delay with server-side includes: if
9014      processing a subrequest, allocate memory from r->main->pool instead
9015      of r->pool so that we can avoid waiting for free_proc_chain to cleanup
9016      in the middle of an SSI request.  [Dean Gaudet] PR #122
9017
9018   *) Fixed status of response when POST is received for a nonexistent URL
9019      (was sending 405, now 404) and when any method is sent with a
9020      full-URI that doesn't match the server and the server is not acting
9021      as a proxy (was sending 501, now 403).  [Roy Fielding]
9022
9023   *) Host port changed to unsigned short. [Ken Coar] PR #276
9024
9025   *) Fix typo in command definition of AuthAuthoritative. [Ken Coar] PR #246
9026
9027   *) Defined USE_SHMGET_SCOREBOARD for shared memory on Linux.  [Dean Gaudet]
9028
9029   *) Report extra info from errno with many errors that cause httpd to exit.
9030      spawn_child, popenf, and pclosef now have valid errno returns in the
9031      event of an error.  Correct problems where errno was stomped on
9032      before being reported.  [Dean Gaudet]
9033
9034   *) In the proxy, if the cache filesystem was full, garbage_coll() was
9035      never called, and thus the filesystem would remain full indefinitely.
9036      We now also remove incomplete cache files left if the origin server
9037      didn't send a Content-Length header and either the client has aborted
9038      transfer or bwrite() to client has failed. [Petr Lampa]
9039
9040   *) Fixed the handling of module and script-added header fields.
9041      Improved the interface for sending header fields and reduced
9042      the duplication of code between sending okay responses and errors.
9043      We now always send both headers_out and err_headers_out, and
9044      ensure that the server-reserved fields are not being overridden,
9045      while not overriding those that are not reserved.  [Roy Fielding]
9046
9047   *) Moved transparent content negotiation fields to err_headers_out
9048      to reflect above changes.  [Petr Lampa]
9049
9050   *) Fixed the determination of whether or not we should make the
9051      connection persistent for all of the cases where some other part
9052      of the server has already indicated that we should not.  Also
9053      improved the ordering of the test so that chunked encoding will
9054      be set whenever it is desired instead of only when KeepAlive
9055      is enabled. Added persistent connection capability for most error
9056      responses (those that do not indicate a bad input stream) when
9057      accessed by an HTTP/1.1 client. [Roy Fielding]
9058
9059   *) Added missing timeouts for sending header fields, error responses,
9060      and the last chunk of chunked encoding, each of which could have
9061      resulted in a process being stuck in write forever.  Using soft_timeout
9062      requires that the sender check for an aborted connection rather than
9063      continuing after an EINTR.  Timeouts that used to be initiated before
9064      send_http_header (and never killed) are now initiated only within or
9065      around the routines that actually do the sending, and not allowed to
9066      propagate above the caller.  [Roy Fielding]
9067
9068   *) mod_auth_anon required an @ or a . in the email address, not both.
9069      [Dirk vanGulik]
9070
9071   *) per_dir_defaults weren't set correctly until directory_walk for
9072      name-based vhosts.  This fixes an obscure bug with the wrong config
9073      info being used for vhosts that share the same ip as the server.
9074      [Dean Gaudet]
9075
9076   *) Improved generation of modules/Makefile to be more generic for
9077      new module directories. [Ken Coar, Chuck Murcko, Roy Fielding]
9078
9079   *) Generate makefile dependency for Configuration based on the actual
9080      name given when running the Configure process.  [Dean Gaudet]
9081
9082   *) Fixed problem with vhost error log not being set prior to
9083      initializing virtual hosts. [Dean Gaudet]
9084
9085   *) Fixed infinite loop when a trailing slash is included after a type map
9086      file URL (extra path info). [Petr Lampa]
9087
9088   *) Fixed server status updating of per-connection counters. [Roy Fielding]
9089
9090   *) Add documentation for DNS issues (reliability and security), and try
9091      to explain the virtual host matching process.  [Dean Gaudet]
9092
9093   *) Try to continue gracefully by disabling the vhost if a DNS lookup
9094      fails while parsing the configuration file.  [Dean Gaudet]
9095
9096   *) Improved calls to setsockopt.  [Roy Fielding]
9097
9098   *) Negotiation changes: Don't output empty content-type in variant list;
9099      Output charset in variant list; Return sooner from handle_multi() if
9100      no variants found; Add handling of '*' wildcard in Accept-Charset.
9101      [Petr Lampa and Paul Sutton]
9102
9103   *) Fixed overlaying of request/sub-request notes and headers in
9104      mod_negotiation.  [Dean Gaudet]
9105
9106   *) If two variants' charset quality are equal and one is the default
9107      charset (iso-8859-1), then prefer the variant that was specifically
9108      listed in Accept-Charset instead of the default.  [Petr Lampa]
9109
9110   *) Memory allocation problem in push_array() -- it would corrupt memory
9111      when nalloc==0.  [Kai Risku <krisku@tf.hut.fi> and Roy Fielding]
9112
9113   *) invoke_handler() doesn't handle mime arguments in content-type
9114      [Petr Lampa] PR#160
9115
9116   *) Reduced IdentityCheck timeout to 30 seconds, as per RFC 1413 minimum.
9117      [Ken Coar]
9118
9119   *) Fixed problem with ErrorDocument not working for virtual hosts
9120      due to one of the performance changes in 1.2b7. [Dean Gaudet]
9121
9122   *) Log an error message if we get a request header that is too long,
9123      since it may indicate a buffer overflow attack. [Marc Slemko]
9124
9125   *) Made is_url() allow "[-.+a-zA-Z0-9]+:" as a valid scheme and
9126      not reject URLs without a double-slash, as per RFC2068 section 3.2.
9127      [Ken Coar] PR #146, #187
9128
9129   *) Added table entry placeholder for new header_parser callback
9130      in all of the distributed modules. [Ken Coar] PR #191
9131
9132   *) Allow for cgi files without the .EXE extension on them under OS/2.
9133      [Garey Smiley] PR #59
9134
9135   *) Fixed error message when resource is not found and URL contains
9136      path info. [Petr Lampa and Dean Gaudet] PR #40
9137
9138   *) Fixed user and server confusion over what should be a virtual host
9139      and what is the main server, resulting in access to something
9140      other than the name defined in the virtualhost directive (but
9141      with the same IP address) failing. [Dean Gaudet]
9142
9143   *) Updated mod_rewrite to version 3.0.2, which: fixes compile error on
9144      AIX; improves the redirection stuff to enable the users to generally
9145      redirect to http, https, gopher and ftp; added TIME variable for
9146      RewriteCond which expands to YYYYMMDDHHMMSS strings and added the
9147      special patterns >STRING, <STRING and =STRING to RewriteCond, which
9148      can be used in conjunction with %{TIME} or other variables to create
9149      time-dependent rewriting rules. [Ralf S. Engelschall]
9150
9151   *) bpushfd() no longer notes cleanups for the file descriptors it is handed.
9152      Module authors may need to adjust their code for proper cleanup to take
9153      place (that is, call note_cleanups_for_fd()). This change fixes problems
9154      with file descriptors being erroneously closed when the proxy module was
9155      in use. [Ben Laurie]
9156
9157   *) Fix bug in suexec reintroduced by changes in 1.2b7 which allows
9158      initgroups() to hose the group information needed for later
9159      comparisons. [Randy Terbush]
9160
9161   *) Remove unnecessary call to va_end() in create_argv() which
9162      caused a SEGV on some systems.
9163
9164   *) Use proper MAXHOSTNAMELEN symbol for limiting length of server name.
9165      [Dean Gaudet]
9166
9167   *) Clear memory allocated for listeners. [Randy Terbush]
9168
9169   *) Improved handling of IP address as a virtualhost address and
9170      introduced "_default_" as a synonym for the default vhost config.
9171      [Dean Gaudet] PR #212
9172
9173 Changes with Apache 1.2b7
9174
9175   *) Port to  UXP/DS(V20) [Toshiaki Nomura <nom@yk.fujitsu.co.jp>]
9176
9177   *) unset Content-Length if chunked (RFC-2068) [Petr Lampa]
9178
9179   *) mod_negotiation fixes [Petr Lampa] PR#157, PR#158, PR#159
9180      - replace protocol response numbers with symbols
9181      - save variant-list into main request notes
9182      - free allocated memory from subrequests
9183      - merge notes, headers_out and err_headers_out
9184
9185   *) changed status check mask in proxy_http.c from "HTTP/#.# ### *" to
9186      "HTTP/#.# ###*" to be more lenient about what we accept.
9187      [Chuck Murcko]
9188
9189   *) more proxy FTP bug fixes:
9190      - Changed send_dir() to remove user/passwd from displayed URL.
9191      - Changed login error messages to be more descriptive.
9192      - remove setting of SO_DEBUG socket option
9193      - Make ftp_getrc() more lenient about multiline responses,
9194        specifically, 230 responses which don't have continuation 230-
9195        on each line). These seem to be all NT FTP servers, and while
9196        perhaps questionable, they appear to be legal by RFC 959.
9197      - Add missing kill_timeout() after transfer to user completes.
9198      [Chuck Murcko]
9199
9200   *) Fixed problem where a busy server could hang when restarting
9201      after being sent a SIGHUP due to child processes not exiting.
9202      [Marc Slemko]
9203
9204   *) Modify mod_include escaping so a '\' only signifies an escaped
9205      character if the next character is one that needs
9206      escaping.  [Ben Laurie]
9207
9208   *) Eliminated possible infinite loop in mod_imap when relative URLs are
9209      used with a 'base' directive that does not have a '/' in it.
9210      [Marc Slemko, reported by Onno Witvliet <onno@tc.hsa.nl>]
9211
9212   *) Reduced the default timeout from 1200 seconds to 300, and the
9213      one in the sample configfile from 400 to 300.  [Marc Slemko]
9214
9215   *) Stop vbprintf from crashing if given a NULL string pointer;
9216      print (null) instead.  [Ken Coar]
9217
9218   *) Don't disable Nagle algorithm if system doesn't have TCP_NODELAY.
9219      [Marc Slemko and Roy Fielding]
9220
9221   *) Fixed problem with mod_cgi-generated internal redirects trying to
9222      read the request message-body twice. [Archie Cobbs and Roy Fielding]
9223
9224   *) Reduced timeout on lingering close, removed possibility of a blocked
9225      read causing the child to hang, and stopped logging of errors if
9226      the socket is not connected (reset by client).  [Roy Fielding]
9227
9228   *) Rearranged main child loop to remove duplication of code in
9229      select/accept and keep-alive requests, fixed several bugs regarding
9230      checking scoreboard_image for exit indication and failure to
9231      account for all success conditions and trap all error conditions,
9232      prevented multiple flushes before closing the socket; close the entire
9233      socket buffer instead of just one descriptor, prevent logging of
9234      EPROTO and ECONNABORTED on platforms where supported, and generally
9235      improved readability.  [Roy Fielding]
9236
9237   *) Extensive performance improvements. Cleaned up inefficient use of
9238      auto initializers, multiple is_matchexp calls on a static string,
9239      and excessive merging of response_code_strings. [Dean Gaudet]
9240
9241   *) Added double-buffering to mod_include to improve performance on
9242      server-side includes. [Marc Slemko]
9243
9244   *) Several fixes for suexec wrapper. [Randy Terbush]
9245      - Make wrapper work for files on NFS filesystem.
9246      - Fix portability problem of MAXPATHLEN.
9247      - Fix array overrun problem in clean_env().
9248      - Fix allocation of PATH environment variable
9249
9250   *) Removed extraneous blank line is description of mod_status chars.
9251      [Kurt Kohler]
9252
9253   *) Logging of errors from the call_exec routine simply went nowhere,
9254      since the logfile fd has been closed, so now we send them to stderr.
9255      [Harald T. Alvestrand]
9256
9257   *) Fixed core dump when DocumentRoot is a CGI.
9258      [Ben Laurie, reported by geddis@tesserae.com]
9259
9260   *) Fixed potential file descriptor leak in mod_asis; updated it and
9261      http_core to use pfopen/pfclose instead of fopen/fclose.
9262      [Randy Terbush and Roy Fielding]
9263
9264   *) Fixed handling of unsigned ints in ap_snprintf() on some chips such
9265      as the DEC Alpha which is 64-bit but uses 32-bit ints.
9266      [Dean Gaudet and Ken Coar]
9267
9268   *) Return a 302 response code to the client when sending a redirect
9269      due to a missing trailing '/' on a directory instead of a 301; now
9270      it is cacheable. [Markus Gyger]
9271
9272   *) Fix condition where, if a bad directive occurs in .htaccess, and
9273      sub_request() goes first to this directory, then log_reason() will
9274      SIGSEGV because it doesn't have initialized r->per_dir_config.
9275      [PR#162 from Petr Lampa, fix by Marc Slemko and Dean Gaudet]
9276
9277   *) Fix handling of lang_index in is_variant_better().  This was
9278      causing problems which resulted in the server sending the
9279      wrong language document in some cases. [Petr Lampa]
9280
9281   *) Remove free() from clean_env() in suexec wrapper. This was nuking
9282      the clean environment on some systems.
9283
9284   *) Tweak byteserving code (e.g. serving PDF files) to work around
9285      bugs in Netscape Navigator and Microsoft Internet Explorer.
9286      Emit Content-Length header when sending multipart/byteranges.
9287      [Alexei Kosut]
9288
9289   *) Port to HI-UX/WE2. [Nick Maclaren]
9290
9291   *) Port to HP MPE operating system for HP 3000 machines
9292      [Mark Bixby <markb@cccd.edu>]
9293
9294   *) Fixed bug which caused a segmentation fault if only one argument
9295      given to RLimit* directives. [Ed Korthof]
9296
9297   *) Continue persistent connection after 204 or 304 response. [Dean Gaudet]
9298
9299   *) Improved buffered output to the client by delaying the flush decision
9300      until the BUFF code is actually about to read the next request.
9301      This fixes a problem introduced in 1.2b5 with clients that send
9302      an extra CRLF after a POST request. Also improved chunked output
9303      performance by combining writes using writev() and removing as
9304      many bflush() calls as possible.  NOTE: Platforms without writev()
9305      must add -DNO_WRITEV to the compiler CFLAGS, either in Configuration
9306      or Configure, unless we have already done so.  [Dean Gaudet]
9307
9308   *) Fixed mod_rewrite bug which truncated the rewritten URL [Marc Slemko]
9309
9310   *) Fixed mod_info output corruption bug introduced by buffer overflow
9311      fixes. [Dean Gaudet]
9312
9313   *) Fixed http_protocol to correctly output all HTTP/1.1 headers, including
9314      for the special case of a 304 response.  [Paul Sutton]
9315
9316   *) Improved handling of TRACE method by bypassing normal method handling
9317      and header parsing routines; fixed Allow response to always allow TRACE.
9318      [Dean Gaudet]
9319
9320   *) Fixed compiler warnings in the regex library. [Dean Gaudet]
9321
9322   *) Cleaned-up some of the generated HTML. [Ken Coar]
9323
9324 Changes with Apache 1.2b6
9325
9326   *) Allow whitespace in imagemap mapfile coordinates. [Marc Slemko]
9327
9328   *) Fix typo introduced in fix for potential infinite loop around
9329      accept() in child_main(). This change caused the rev to 1.2b6.
9330      1.2b5 was never a public beta.
9331
9332 Changes with Apache 1.2b5
9333
9334   *) Change KeepAlive semantics (On|Off instead of a number), add
9335      MaxKeepAliveRequests directive. [Alexei Kosut]
9336
9337   *) Various NeXT compilation patches, as well as a change in
9338      regex/regcomp.c since that file also used a NEXT define.
9339      [Andreas Koenig]
9340
9341   *) Allow * to terminate the end of a directory match in mod_dir.
9342      Allows /~* to match for both /~joe and /~joe/. [David Bronder]
9343
9344   *) Don't call can_exec() if suexec_enabled. Calling this requires
9345      scripts executed by the suexec wrapper to be world executable, which
9346      defeats one of the advantages of running the wrapper. [Randy Terbush]
9347
9348   *) Portability Fix: IRIX complained with 'make clean' about *pure* (removed)
9349      [Jim Jagielski]
9350
9351   *) Migration from sprintf() to snprintf() to avoid buffer
9352      overflows. [Marc Slemko]
9353
9354   *) Provide portable snprintf() implementation (ap_snprintf)
9355      as well as *cvt family. [Jim Jagielski]
9356
9357   *) Portability Fix: NeXT lacks unistd.h so we wrap it's inclusion
9358      [Jim Jagielski]
9359
9360   *) Remove mod_fastcgi.c from the distribution. This module appears
9361      to be maintained more through the Open Market channels and should
9362      continue to be easily available at http://www.fastcgi.com/
9363
9364   *) Fixed bug in modules/Makefile that wouldn't allow building in more
9365      than one subdirectory (or cleaning, either). [Jeremy Laidman]
9366
9367   *) mod_info assumed that the config files were relative to ServerRoot.
9368      [Ken the Rodent]
9369
9370   *) CGI scripts called as an error document resulting from failed
9371      CGI execution would hang waiting for POST'ed data. [Rob Hartill]
9372
9373   *) Log reason when mod_dir returns access HTTP_FORBIDDEN
9374      [Ken the Rodent]
9375
9376   *) Properly check errno to prevent display of a directory index
9377      when server receives a long enough URL to confuse stat().
9378      [Marc Slemko]
9379
9380   *) Several security enhancements to suexec wrapper. It is _highly_
9381      recommended that previously installed versions of the wrapper
9382      be replaced with this version.  [Randy Terbush, Jason Dour]
9383
9384         - ~user execution now properly restricted to ~user's home
9385           directory and below.
9386         - execution restricted to UID/GID > 100
9387         - restrict passed environment to known variables
9388         - call setgid() before initgroups() (portability fix)
9389         - remove use of setenv() (portability fix)
9390
9391   *) Add HTTP/1.0 response forcing. [Ben Laurie]
9392
9393   *) Add access control via environment variables. [Ben Laurie]
9394
9395   *) Add rflush() function. [Alexei Kosut]
9396
9397   *) remove duplicate pcalloc() call in new_connection().
9398
9399   *) Fix incorrect comparison which could allow number of children =
9400      MaxClients + 1 if less than HARD_SERVER_LIMIT. Also fix potential
9401      problem if StartServers > HARD_SERVER_LIMIT. [Ed Korthof]
9402
9403   *) Updated support for OSes (MachTen, ULTRIX, Paragon, ISC, OpenBSD
9404      AIX PS/2, CONVEXOS. [Jim Jagielski]
9405
9406   *) Replace instances of inet_ntoa() with inet_addr() for ProxyBlock.
9407      It's more portable. [Martin Kraemer]
9408
9409   *) Replace references to make in Makefile.tmpl with $(MAKE).
9410      [Chuck Murcko]
9411
9412   *) Add ProxyBlock directive w/IP address caching. Add IP address
9413      caching to NoCache directive as well. ProxyBlock works with all
9414      handlers; NoCache now also works with FTP for anonymous logins.
9415      Still more code cleanup. [Chuck Murcko]
9416
9417   *) Add "header parse" API hook [Ben Laurie]
9418
9419   *) Fix byte ordering problems for REMOTE_PORT [Chuck Murcko]
9420
9421   *) suEXEC wrapper was freeing memory that had not been malloc'ed.
9422
9423   *) Correctly allow access and auth directives in <Files> sections in
9424      server config files. [Alexei Kosut]
9425
9426   *) Fix bug with ServerPath that could cause certain files to be not
9427      found by the server. [Alexei Kosut]
9428
9429   *) Fix handling of ErrorDocument so that it doesn't remove a trailing
9430      double-quote from text and so that it properly checks for unsupported
9431      status codes using the new index_of_response interface. [Roy Fielding]
9432
9433   *) Multiple fixes to the lingering_close code in order to avoid being
9434      interrupted by a stray timeout, to avoid lingering on a connection
9435      that has already been aborted or never really existed, to ensure that
9436      we stop lingering as soon as any error condition is received, and to
9437      prevent being stuck indefinitely if the read blocks.  Also improves
9438      reporting of error conditions.  [Marc Slemko and Roy Fielding]
9439
9440   *) Fixed initialization of parameter structure for sigaction.
9441      [mgyger@itr.ch, Adrian Filipi-Martin]
9442
9443   *) Fixed reinitializing the parameters before each call to accept and
9444      select, and removed potential for infinite loop in accept.
9445      [Roy Fielding, after useful PR from adrian@virginia.edu]
9446
9447   *) Fixed condition where, if a child fails to fork, the scoreboard would
9448      continue to say SERVER_STARTING forever. Eventually, the main process
9449      would refuse to start new children because count_idle_servers() will
9450      count those SERVER_STARTING entries and will always report that there
9451      are enough idle servers. [Phillip Vandry]
9452
9453   *) Fixed bug in bcwrite regarding failure to account for partial writes.
9454      Avoided calling bflush() when the client is pipelining requests.
9455      Removed unnecessary flushes from http_protocol. [Dean Gaudet]
9456
9457   *) Added description of "." mode in server-status [Jim Jagielski]
9458
9459 Changes with Apache 1.2b4
9460
9461   *) Fix possible race condition in accept_mutex_init() that
9462      could leave a small security hole open allowing files to be
9463      overwritten in cases where the server UID has write permissions.
9464      [Marc Slemko]
9465
9466   *) Fix awk compatibilty problem in Configure. [Jim Jagielski]
9467
9468   *) Fix portablity problem in util_script where ARG_MAX may not be
9469      defined for some systems.
9470
9471   *) Add changes to allow compilation on Machten 4.0.3 for PowerPC.
9472      [Randal Schwartz]
9473
9474   *) OS/2 changes to support an MMAP style scoreboard file and UNIX
9475      style magic #! token for better script portability. [Garey Smiley]
9476
9477   *) Fix bug in suexec wrapper introduced in b3 that would cause failed
9478      execution for ~userdir CGI. [Jason Dour]
9479
9480   *) Fix initgroups() business in suexec wrapper. [Jason Dour]
9481
9482   *) Fix month off by one in suexec wrapper logging.
9483
9484 Changes with Apache 1.2b3:
9485
9486   *) Fix error in mod_cgi which could cause resources not to be properly
9487      freed, or worse. [Dean Gaudet]
9488
9489   *) Fix find_string() NULL pointer dereference. [Howard Fear]
9490
9491   *) Add set_flag_slot() at the request of Dirk and others.
9492      [Dirk vanGulik]
9493
9494   *) Sync mod_rewrite with patch level 10. [Ralf Engelschall]
9495
9496   *) Add changes to improve the error message given for invalid
9497      ServerName parameters. [Dirk vanGulik]
9498
9499   *) Add "Authoritative" directive for Auth modules that don't
9500      currently have it. This gives admin control to assign authoritative
9501      control to an authentication scheme and allow "fall through" for
9502      those authentication modules that aren't "Authoritative" thereby
9503      allowing multiple authentication mechanisms to be chained.
9504      [Dirk vanGulik]
9505
9506   *) Remove requirement for ResourceConfig/AccessConfig if not using
9507      the three config file layout. [Randy Terbush]
9508
9509   *) Add PASV mode to mod_proxy FTP handler. [Chuck Murcko]
9510
9511   *) Changes to suexec wrapper to fix the following problems:
9512      1.  symlinked homedirs will kill ~userdirs.
9513      2.  initgroups() on Linux 2.0.x clobbers gr->grid.
9514      3.  CGI command lines paramters problems
9515      4.  pw-pwdir for "docroot check" still the httpd user's pw record.
9516     [Randy Terbush, Jason Dour]
9517
9518   *) Change create_argv() to accept variable arguments. This fixes
9519      a problem where arguments were not getting passed to the CGI via
9520      argv[] when the suexec wrapper was active. [Randy Terbush, Jake Buchholz]
9521
9522   *) Collapse multiple slashes in path URLs to properly apply
9523      handlers defined by <Location>. [Alexei Kosut]
9524
9525   *) Define a sane set of DEFAULT_USER and DEFAULT_GROUP values for AIX.
9526
9527   *) Improve the accuracy of request duration timings by setting
9528      r->request_time in read_request_line() instead of read_request().
9529      [Dean Gaudet]
9530
9531   *) Reset timeout while reading via get_client_block() in mod_cgi.c
9532      Fixes problem with timed out transfers of large files. [Rasmus Lerdorf]
9533
9534   *) Add the ability to pass different Makefile.tmpl files to Configure
9535      using the -make flag. [Rob Hartill]
9536
9537   *) Fix coredump triggered when sending a SIGHUP to the server caused
9538      by an assertion failure, in turn caused by an uninitialised field in a
9539      listen_rec.
9540      [Ben Laurie]
9541
9542   *) Add FILEPATH_INFO variable to CGI environment, which is equal to
9543      PATH_INFO from previous versions of Apache (in certain situations,
9544      Apache 1.2's PATH_INFO will be different than 1.1's). [Alexei Kosut]
9545      [later removed in 1.2b11]
9546
9547   *) Add rwrite() function to API to allow for sending strings of
9548      arbitrary length. [Doug MacEachern]
9549
9550   *) Remove rlim_t typedef for NetBSD. Do older versions need this?
9551
9552   *) Defined rlim_t and WANTHSREGEX=yes and fixed waitpid() substitute for
9553      NeXT. [Jim Jagielski]
9554
9555   *) Removed recent modification to promote the status code on internal
9556      redirects, since the correct fix was to change the default log format
9557      in mod_log_config so that it outputs the original status. [Rob Hartill]
9558
9559 Changes with Apache 1.2b2:
9560
9561   *) Update set_signals() to use sigaction() for setting handlers.
9562      This appears to fix a re-entrant problem in the seg_fault()
9563      bus_error() handlers. [Randy Terbush]
9564
9565   *) Changes to allow mod_status compile for OS/2 [Garey Smiley]
9566
9567   *) changes for DEC AXP running OSF/1 v3.0. [Marc Evans]
9568
9569   *) proxy_http.c bugfixes:  [Chuck Murcko]
9570         1) fixes possible NULL pointer reference w/NoCache
9571         2) fixes NoCache behavior when using ProxyRemote (ProxyRemote
9572            host would cache nothing if it was in the local domain,
9573            and the local domain was in the NoCache list)
9574         3) Adds Host: header when not available
9575         4) Some code cleanup and clarification
9576
9577   *) mod_include.c bugfixes:
9578         1) Fixed an ommission that caused include variables to not
9579            be parsed in config errmsg directives [Howard Fear]
9580         2) Remove HAVE_POSIX_REGEX cruft [Alexei Kosut]
9581         3) Patch to fix compiler warnings [perrot@lal.in2p3.fr]
9582         4) Allow backslash-escaping to all quoted text
9583            [Ben Yoshino <ben@wiliki.eng.hawaii.edu>]
9584         5) Pass variable to command line if not set in XSSI's env
9585            [Howard Fear]
9586
9587   *) Fix infinite loop when processing Content-language lines in
9588      type-map files. [Alexei Kosut]
9589
9590   *) Closed file-globbing hole in test-cgi script. [Brian Behlendorf]
9591
9592   *) Fixed problem in set_[user|group] that prevented CGI execution
9593      for non-virtualhosts when suEXEC was enabled. [Randy Terbush]
9594
9595   *) Added PORTING information file.  [Jim Jagielski]
9596
9597   *) Added definitions for S_IWGRP and S_IWOTH to conf.h [Ben Laurie]
9598
9599   *) Changed default group to "nogroup" instead of "nobody" [Randy Terbush]
9600
9601   *) Fixed define typo of FCNTL_SERIALIZED_ACCEPT where
9602      USE_FCNTL_SERIALIZED_ACCEPT was intended.
9603
9604   *) Fixed additional uses of 0xffffffff where INADDR_NONE was intended,
9605      which caused problems of systems where socket s_addr is >32bits.
9606
9607   *) Added comment to explain (r->chunked = 1) side-effect in
9608      http_protocol.c [Roy Fielding]
9609
9610   *) Replaced use of index() in mod_expires.c with more appropriate
9611      and portable isdigit() test.  [Ben Laurie]
9612
9613   *) Updated Configure for ...
9614         OS/2          (DEF_WANTHSREGEX=yes, other code changes)
9615         *-dg-dgux*    (bad pattern match)
9616         QNX           (DEF_WANTHSREGEX=yes)
9617         *-sunos4*     (DEF_WANTHSREGEX=yes, -DUSEBCOPY)
9618         *-ultrix      (new)
9619         *-unixware211 (new)
9620      and added some user diagnostic info.  [Ben Laurie]
9621
9622   *) In helpers/CutRule, replaced "cut" invocation with "awk" invocation
9623      for better portability. [Jim Jagielski]
9624
9625   *) Updated helpers/GuessOS for ...
9626         SCO 5            (recognize minor releases)
9627         SCO UnixWare     (braindamaged uname, whatever-whatever-unixware2)
9628         SCO UnixWare 2.1.1      (requires a separate set of #defines in conf.h)
9629         IRIX64           (-sgi-irix64)
9630         ULTRIX           (-unknown-ultrix)
9631         SINIX            (-whatever-sysv4)
9632         NCR Unix         (-ncr-sysv4)
9633      and fixed something in helpers/PrintPath  [Ben Laurie]
9634
9635 Changes with Apache 1.2b1
9636
9637   *) Not listed. See <http://www.apache.org/docs/new_features_1_2.html>
9638
9639 Changes with Apache 1.1.1
9640
9641   *) Fixed bug where Cookie module would make two entries in the
9642      logfile for each access [Mark Cox]
9643
9644   *) Fixed bug where Redirect in .htaccess files would cause memory
9645      leak. [Nathan Neulinger]
9646
9647   *) MultiViews now works correctly with AddHandler [Alexei Kosut]
9648
9649   *) Problems with mod_auth_msql fixed [Dirk vanGulik]
9650
9651   *) Fix misspelling of "Anonymous_Authorative" directive in mod_auth_anon.
9652
9653 Changes with Apache 1.1.0
9654
9655   *) Bring NeXT support up to date. [Takaaki Matsumoto]
9656
9657   *) Bring QNX support up to date. [Ben Laurie]
9658
9659   *) Make virtual hosts default to main server keepalive parameters.
9660      [Alexei Kosut, Ben Laurie]
9661
9662   *) Allow ScanHTMLTitles to work with lowercase <title> tags. [Alexei Kosut]
9663
9664   *) Fix missing address family for connect, also remove unreachable statement
9665      in mod_proxy. [Ben Laurie]
9666
9667   *) mod_env now turned on by default in Configuration.tmpl.
9668
9669   *) Bugs which were fixed:
9670         a) yet more mod_proxy bugs [Ben Laurie]
9671         b) CGI works again with inetd [Alexei Kosut]
9672         c) Leading colons were stripped from passwords [osm@interguide.com]
9673         d) Another fix to multi-method Limit problem [jk@tools.de]
9674
9675 Changes with Apache 1.1b4
9676
9677   *) r->bytes_sent variable restored. [Robert Thau]
9678
9679   *) Previously broken multi-method <Limit> parsing fixed. [Robert Thau]
9680
9681   *) More possibly unsecure programs removed from the support directory.
9682
9683   *) More mod_auth_msql authentication improvements.
9684
9685   *) VirtualHosts based on Host: headers no longer conflict with the
9686      Listen directive.
9687
9688   *) OS/2 compatibility enhancements. [Gary Smiley]
9689
9690   *) POST now allowed to directory index CGI scripts.
9691
9692   *) Actions now work with files of the default type.
9693
9694   *) Bugs which were fixed:
9695         a) more mod_proxy bugs
9696         b) early termination of inetd requests
9697         c) compile warnings on several systems
9698         d) problems when scripts stop reading output early
9699
9700 Changes with Apache 1.1b3
9701
9702   *) Much of cgi-bin and all of cgi-src has been removed, due to
9703      various security holes found and that we could no longer support
9704      them.
9705
9706   *) The "Set-Cookie" header is now special-cased to not merge multiple
9707      instances, since certain popular browsers can not handle multiple
9708      Set-Cookie instructions in a single header. [Paul Sutton]
9709
9710   *) rprintf() added to buffer code, occurrences of sprintf removed.
9711      [Ben Laurie]
9712
9713   *) CONNECT method for proxy module, which means tunneling SSL should work.
9714      (No crypto needed)  Also a NoCache config directive.
9715
9716   *) Several API additions: pstrndup(), table_unset() and get_token()
9717      functions now available to modules.
9718
9719   *) mod_imap fixups, in particular Location: headers are now complete
9720      URL's.
9721
9722   *) New "info" module which reports on installed module set through a
9723      special URL, a la mod_status.
9724
9725   *) "ServerPath" directive added - allows for graceful transition
9726      for Host:-header-based virtual hosts.
9727
9728   *) Anonymous authentication module improvements.
9729
9730   *) MSQL authentication module improvements.
9731
9732   *) Status module design improved - output now table-based. [Ben Laurie]
9733
9734   *) htdigest utility included for use with digest authentication
9735      module.
9736
9737   *) mod_negotiation: Accept values with wildcards to be treated with
9738      less priority than those without wildcards at the same quality
9739      value. [Alexei Kosut]
9740
9741   *) Bugs which were fixed:
9742         a) numerous mod_proxy bugs
9743         b) CGI early-termination bug [Ben Laurie]
9744         c) Keepalives not working with virtual hosts
9745         d) RefererIgnore problems
9746         e) closing fd's twice in mod_include (causing core dumps on
9747            Linux and elsewhere).
9748
9749 Changes with Apache 1.1b2
9750
9751   *) Bugfixes:
9752         a) core dumps in mod_digest
9753         b) truncated hostnames/ip address in the logs
9754         c) relative URL's in mod_imap map files
9755
9756 Changes with Apache 1.1b1
9757
9758   *) Not listed. See <http://www.apache.org/docs/new_features_1_1.html>
9759
9760 Changes with Apache 1.0.3
9761
9762   *) Internal redirects which occur in mod_dir.c now preserve the
9763      query portion of a request (the bit after the question mark).
9764      [Adam Sussman]
9765
9766   *) Escape active characters '<', '>' and '&' in html output in
9767      directory listings, error messages and redirection links.
9768      [David Robinson]
9769
9770   *) Apache will now work with LynxOS 2.3 and later [Steven Watt]
9771
9772   *) Fix for POSIX compliance in waiting for processes in alloc.c.
9773      [Nick Williams]
9774
9775   *) setsockopt no longer takes a const declared argument [Martijn Koster]
9776
9777   *) Reset timeout timer after each successful fwrite() to the network.
9778      This patch adds a reset_timeout() procedure that is called by
9779      send_fd() to reset the timeout ever time data is written to the net.
9780      [Nathan Schrenk]
9781
9782   *) timeout() signal handler now checks for SIGPIPE and reports
9783      lost connections in a more user friendly way. [Rob Hartill]
9784
9785   *) Location of the "scoreboard" file which used to live in /tmp is
9786      now configurable (for OSes that can't use mmap) via ScoreBoardFile
9787      which works similar to PidFile (in httpd.conf) [Rob Hartill]
9788
9789   *) Include sys/resource.h in the correct place for SunOS4 [Sameer Parekh]
9790
9791   *) the pstrcat call in mod_cookies.c didn't have an ending NULL,
9792      which caused a SEGV with cookies enabled
9793
9794   *) Output warning when MinSpareServers is set to <= 0 and change it to 1
9795      [Rob Hartill]
9796
9797   *) Log the UNIX textual error returned by some system calls, in
9798      particular errors from accept() [David Robinson]
9799
9800   *) Add strerror function to util.c for SunOS4 [Randy Terbush]
9801
9802 Changes with Apache 1.0.2
9803
9804   *) patch to get Apache compiled on UnixWare 2.x, recommended as
9805      a temporary measure, pending rewrite of rfc931.c. [Chuck Murcko]
9806
9807   *) Fix get_basic_auth_pw() to set the auth_type of the request.
9808      [David Robinson]
9809
9810   *) past changes to http_config.c to only use the
9811      setrlimit function on systems defining RLIMIT_NOFILE
9812      broke the feature on SUNOS4. Now defines HAVE_RESOURCE
9813      for SUNOS and prototypes the needed functions.
9814
9815   *) Remove uses of MAX_STRING_LEN/HUGE_STRING_LEN from several routines.
9816      [David Robinson]
9817
9818   *) Fix use of pointer to scratch memory. [Cliff Skolnick]
9819
9820   *) Merge multiple headers from CGI scripts instead of taking last
9821      one. [David Robinson]
9822
9823   *) Add support for SCO 5. [Ben Laurie]
9824
9825 Changes with Apache 1.0.1
9826
9827   *) Silence mod_log_referer and mod_log_agent if not configured
9828      [Randy Terbush]
9829
9830   *) Recursive includes can occur if the client supplies PATH_INFO data
9831      and the server provider uses relative links; as file.html
9832      relative to /doc.shtml/pathinfo is /doc.shtml/file.html. [David Robinson]
9833
9834   *) The replacement for initgroups() did not call {set,end}grent(). This
9835      had two implications: if anything else used getgrent(), then
9836      initgroups() would fail, and it was consuming a file descriptor.
9837      [Ben Laurie]
9838
9839   *) On heavily loaded servers it was possible for the scoreboard to get
9840      out of sync with reality, as a result of a race condition.
9841      The observed symptoms are far more Apaches running than should
9842      be, and heavy system loads, generally followed by catastrophic
9843      system failure. [Ben Laurie]
9844
9845   *) Fix typo in license. [David Robinson]
9846
9847 Changes with Apache 1.0.0                                        23 Nov 1995
9848
9849   *) Not listed. See <http://www.apache.org/docs/new_features_1_0.html>
9850
9851 Changes with Apache 0.8.16                                       05 Nov 1995
9852
9853   *) New man page for 'httpd' added to support directory [David Robinson]
9854
9855   *) .htgroup files can have more than one line giving members for a
9856      given group (each must have the group name in front), for NCSA
9857      back-compatibility [Robert Thau]
9858
9859   *) Mutual exclusion around accept() is on by default for SVR4 systems
9860      generally, since they generally can't handle multiple processes in
9861      accept() on the same socket.  This should cure flaky behavior on
9862      a lot of those systems.  [David Robinson]
9863
9864   *) AddType, AddEncoding, and AddLanguage directives take multiple
9865      extensions on a single command line [David Robinson]
9866
9867   *) UserDir can be disabled for a given virtual host by saying
9868      "UserDir disabled" in the <VirtualHost> section --- it was a bug
9869      that this didn't work.  [David Robinson]
9870
9871   *) Compiles on QNX [Ben Laurie]
9872
9873   *) Corrected parsing of ctime time format [David Robinson]
9874
9875   *) httpd does a perror() before exiting if it can't log its pid
9876      to the PidFile, to make diagnosing the error a bit easier.
9877      [David Robinson]
9878
9879   *) <!--#include file="..."--> can no longer include files in the
9880      parent directory, for NCSA back-compatibility.  [David Robinson]
9881
9882   *) '~' is *not* escaped in URIs generated for directory listings
9883      [Roy Fielding]
9884
9885   *) Eliminated compiler warning in the imagemap module [Randy Terbush]
9886
9887   *) Fixed bug involving handling URIs with escaped %-characters
9888      in redirects [David Robinson]
9889
9890 Changes with Apache 0.8.15                                       14 Oct 1995
9891
9892   *) Switched to new, simpler license
9893
9894   *) Eliminated core dumps with improperly formatted DBM group files [Mark Cox]
9895
9896   *) Don't allow requests for ordinary files to have PATH_INFO [Ben Laurie]
9897
9898   *) Reject paths containing %-escaped '%' or null characters [David Robinson]
9899
9900   *) Correctly handles internal redirects to files with names containing '%'
9901      [David Robinson]
9902
9903   *) Repunctuated some error messages [Aram Mirzadeh, Andrew Wilson]
9904
9905   *) Use geteuid() rather than getuid() to see if we have root privilege,
9906      so that server correctly resets privilege if run setuid root.  [Andrew
9907      Wilson]
9908
9909   *) Handle ftp: and telnet: URLs correctly in imagemaps (built-in module)
9910      [Randy Terbush]
9911
9912   *) Fix relative URLs in imagemap files [Randy Terbush]
9913
9914   *) Somewhat better fix for the old "Alias /foo/ /bar/" business
9915      [David Robinson]
9916
9917   *) Don't repeatedly open the ErrorLog if a bunch of <VirtualHost>
9918      entries all name the same one. [David Robinson]
9919
9920   *) Fix directory listings with filenames containing unusual characters
9921      [David Robinson]
9922
9923   *) Better URI-escaping for generated URIs in directories with filenames
9924      containing unusual characters [Ben Laurie]
9925
9926   *) Fixed potential FILE* leak in http_main.c [Ben Laurie]
9927
9928   *) Unblock alarms on error return from spawn_child() [David Robinson]
9929
9930   *) Sample Config files have extra note for SCO users [Ben Laurie]
9931
9932   *) Configuration has note for HP-UX users [Rob Hartill]
9933
9934   *) Eliminated some bogus Linux-only #defines in conf.h [Aram Mirzadeh]
9935
9936   *) Nuked bogus #define in httpd.h [David Robinson]
9937
9938   *) Better test for whether a system has setrlimit() [David Robinson]
9939
9940   *) Calls update_child_status() after reopen_scoreboard() [David Robinson]
9941
9942   *) Doesn't send itself SIGHUP on startup when run in the -X debug-only mode
9943      [Ben Laurie]
9944
9945 Changes with Apache 0.8.14                                       19 Sep 1995
9946
9947   *) Compiles on SCO ODT 3.0 [Ben Laurie]
9948
9949   *) AddDescription works (better) [Ben Laurie]
9950
9951   *) Leaves an intelligible error diagnostic when it can't set group
9952      privileges on standalone startup [Andrew Wilson]
9953
9954   *) Compiles on NeXT again --- the 0.8.13 RLIMIT patch was failing on
9955      that machine, which claims to be BSD but does not support RLIMIT.
9956      [Randy Terbush]
9957
9958   *) gcc -Wall no longer complains about an unused variable when util.c
9959      is compiled with -DMINIMAL_DNS [Andrew Wilson]
9960
9961   *) Nuked another compiler warning for -Wall on Linux [Aram Mirzadeh]
9962
9963 Changes with Apache 0.8.13                                       07 Sep 1995
9964
9965   *) Make IndexIgnore *work* (ooops) [Jarkko Torppa]
9966
9967   *) Have built-in imagemap code recognize & honor Point directive [James
9968      Cloos]
9969
9970   *) Generate cleaner directory listings in directories with a mix of
9971      long and short filenames [Rob Hartill]
9972
9973   *) Properly initialize dynamically loaded modules [Royston Shufflebotham]
9974
9975   *) Properly default ServerName for virtual servers [Robert Thau]
9976
9977   *) Rationalize handling of BSD in conf.h and elsewhere [Randy Terbush,
9978      Paul Richards and a cast of thousands...]
9979
9980   *) On self-identified BSD systems (we don't try to guess any more),
9981      allocate a few extra file descriptors per virtual host with setrlimit,
9982      if we can, to avoid running out. [Randy Terbush]
9983
9984   *) Write 22-character lock file name into buffer with enough space
9985      on startup [Konstantin Olchanski]
9986
9987   *) Use archaic setpgrp() interface on NeXT, which requires it [Brian
9988      Pinkerton]
9989
9990   *) Suppress -Wall warning by casting const away in util.c [Aram Mirzadeh]
9991
9992   *) Suppress -Wall warning by initializing variable in negotiation code
9993      [Tobias Weingartner]
9994
9995 Changes with Apache 0.8.12                                       31 Aug 1995
9996
9997   *) Doesn't pause three seconds after including a CGI script which is
9998      too slow to die off (this is done by not even trying to kill off
9999      subprocesses, including the SIGTERM/pause/SIGKILL routine, until
10000      after the entire document has been processed).  [Robert Thau]
10001
10002   *) Doesn't do SSI if Options Includes is off.  (Ooops).  [David Robinson]
10003
10004   *) Options IncludesNoExec allows inclusion of at least text/* [Roy Fielding]
10005
10006   *) Allows .htaccess files to override <Directory> sections naming the
10007      same directory [David Robinson]
10008
10009   *) Removed an efficiency hack in sub_req_lookup_uri which was
10010      causing certain extremely marginal cases (e.g., ScriptAlias of a
10011      *particular* index.html file) to fail.  [David Robinson]
10012
10013   *) Doesn't log an error when the requested URI requires
10014      authentication, but no auth header line was supplied by the
10015      client; this is a normal condition (the client doesn't no auth is
10016      needed here yet).  [Robert Thau]
10017
10018   *) Behaves more sanely when the name server loses its mind [Sean Welch]
10019
10020   *) RFC931 code compiles cleanly on old BSDI releases [Randy Terbush]
10021
10022   *) RFC931 code no longer passes out name of prior clients on current
10023      requests if the current request came from a server that doesn't
10024      do RFC931.  [David Robinson]
10025
10026   *) Configuration script accepts "Module" lines with trailing whitespace.
10027      [Robert Thau]
10028
10029   *) Cleaned up compiler warning from mod_access.c [Robert Thau]
10030
10031   *) Cleaned up comments in mod_cgi.c [Robert Thau]
10032
10033 Changes with Apache 0.8.11                                       24 Aug 1995
10034
10035   *) Wildcard <Directory> specifications work.  [Robert Thau]
10036
10037   *) Doesn't loop for buggy CGI on Solaris [Cliff Skolnick]
10038
10039   *) Symlink checks (FollowSymLinks off, or SymLinkIfOwnerMatch) always check
10040      the file being requested itself, in addition to the directories leading
10041      up to it. [Robert Thau]
10042
10043   *) Logs access failures due to symlink checks or invalid client address
10044      in the error log [Roy Fielding, Robert Thau]
10045
10046   *) Symlink checks deal correctly with systems where lstat of
10047      "/path/to/some/link/" follows the link.  [Thau, Fielding]
10048
10049   *) Doesn't reset DirectoryIndex to 'index.html' when
10050      other directory options are set in a .htaccess file.  [Robert Thau]
10051
10052   *) Clarified init code and nuked bogus warning in mod_access.c
10053      [Florent Guillaume]
10054
10055   *) Corrected several directives in sample srm.conf
10056      --- includes corrections to directory indexing icon-related directives
10057      (using unknown.gif rather than unknown.xbm as the DefaultIcon, doing
10058      icons for encodings right, and turning on AddEncoding by default).
10059      [Roy Fielding]
10060
10061   *) Corrected descriptions of args to AddIcon and AddAlt in command table
10062      [James Cloos]
10063
10064   *) INSTALL & README mention "contributed modules" directory [Brian
10065      Behlendorf]
10066
10067   *) Fixed English in the license language...  "for for" --> "for".
10068      [Roy Fielding]
10069
10070   *) Fixed ScriptAlias/Alias interaction by moving ScriptAlias handling to
10071      mod_alias.c, merging it almost completely with handling of Alias, and
10072      adding a 'notes' field to the request_rec which allows the CGI module
10073      to discover whether the Alias module has put this request through
10074      ScriptAlias (which it needs to know for back-compatibility, as the old
10075      NCSA code did not check Options ExecCGI in ScriptAlias directories).
10076      [Robert Thau]
10077
10078 Changes with Apache 0.8.10                                       18 Aug 1995
10079
10080   *) AllowOverride applies to the named directory, and not just
10081      subdirectories.  [David Robinson]
10082
10083   *) Do locking for accept() exclusion (on systems that need it)
10084      using a special file created for the purpose in /usr/tmp, and
10085      not the error log; using the error log causes real problems
10086      if it's NFS-mounted; this is known to be the cause of a whole
10087      lot of "server hang" problems with Solaris.  [David Robinson;
10088      thanks to Merten Schumann for help diagnosing the problem].
10089
10090 Changes with Apache 0.8.9                                        12 Aug 1995
10091
10092   *) Compiles with -DMAXIMUM_DNS ---- ooops! [Henrik Mortensen]
10093
10094   *) Nested includes see environment variables of the including document,
10095      for NCSA bug-compatibility (some sites have standard footer includes
10096      which try to print out the last-modified date).  [Eric Hagberg/Robert
10097      Thau]
10098
10099   *) <!--exec cgi="/some/uri/here"--> always treats the item named by the
10100      URI as a CGI script, even if it would have been treated as something
10101      else if requested directly, for NCSA back-compatibility.  (Note that
10102      this means that people who know the name of the script can see the
10103      code just by asking for it).  [Robert Thau]
10104
10105   *) New version of dbmmanage script included in support directory as
10106      dbmmanage.new.
10107
10108   *) Check if scoreboard file couldn't be opened, and say so, rather
10109      then going insane [David Robinson]
10110
10111   *) POST to CGI works on A/UX [Jim Jagielski]
10112
10113   *) AddIcon and AddAlt commands work properly [Rob Hartill]
10114
10115   *) NCSA server push works properly --- the Arena bug compatibility
10116      workaround, which broke it, is gone (use -DARENA_BUG_WORKAROUND
10117      if you still want the workaround).  [Rob Hartill]
10118
10119   *) If client didn't submit any Accept-encodings, ignore encodings in
10120      content negotiation.  (NB this will all have to be reworked anyway
10121      for the new HTTP draft).  [Florent Guillaume]
10122
10123   *) Don't dump core when trying to log timed-out requests [Jim Jagielski]
10124
10125   *) Really honor CacheNegotiatedDocs [Florent Guillaume]
10126
10127   *) Give Redirect priority over Alias, for NCSA bug compatibility
10128      [David Robinson]
10129
10130   *) Correctly set PATH_TRANSLATED in all cases from <!--#exec cmd=""-->,
10131      paralleling earlier bug fix for CGI [David Robinson]
10132
10133   *) If DBM auth is improperly configured, report a server error and don't
10134      dump core.
10135
10136   *) Deleted FCNTL_SERIALIZED_ACCEPTS from conf.h entry for A/UX;
10137      it seems to work well enough without it (even in a 10 hits/sec
10138      workout), and the overhead for the locking under A/UX is
10139      alarmingly high (though it is very low on other systems).
10140      [Eric Hagberg, Jim Jagielski]
10141
10142   *) Fixed portability problems with mod_cookies.c [Cliff Skolnick]
10143
10144   *) Further de-Berklize mod_cookies.c; change the bogus #include.  [Brian
10145      Behlendorf/Eric Hagberg]
10146
10147   *) More improvements to default Configuration for A/UX [Jim Jagielski]
10148
10149   *) Compiles clean on NEXT [Rob Hartill]
10150
10151   *) Compiles clean on SGI [Robert Thau]
10152
10153 Changes with Apache 0.8.8                                        08 Aug 1995
10154
10155   *) SunOS library prototypes now never included unless explicitly
10156      requested in the configuration (via -DSUNOS_LIB_PROTOTYPES);
10157      people using GNU libc on SunOS are screwed by prototypes for the
10158      standard library.
10159
10160      (Those who wish to compile clean with gcc -Wall on a standard
10161      SunOS setup need the prototypes, and may obtain them using
10162      -DSUNOS_LIB_PROTOTYPES.  Those wishing to use -Wall on a system
10163      with nonstandard libraries are presumably competent to make their
10164      own arrangements).
10165
10166   *) Strips trailing '/' characters off both args to the Alias command,
10167      to make 'Alias /foo/ /bar/' work.
10168
10169 Changes with Apache 0.8.7                                        03 Aug 1995
10170
10171   *) Don't hang when restarting with a child from 'TransferLog "|..."' running
10172      [reported by David Robinson]
10173
10174   *) Compiles clean on OSF/1 [David Robinson]
10175
10176   *) Added some of the more recent significant changes (AddLanguage stuff,
10177      experimental LogFormat support) to CHANGES file in distribution root
10178      directory
10179
10180 Changes with Apache 0.8.6                                        02 Aug 1995
10181
10182   *) Deleted Netscape reload workaround --- it's in violation of HTTP specs.
10183      (If you actually wanted a conditional GET which bypassed the cache, you
10184      couldn't get it). [Reported by Roy Fielding]
10185
10186   *) Properly terminate headers on '304 Not Modified' replies to conditional
10187      GETs --- no browser we can find cares much, but the CERN proxy chokes.
10188      [Reported by Cliff Skolnick; fix discovered independently by Rob Hartill]
10189
10190   *) httpd -v doesn't call itself "Shambhala".  [Reported by Chuck Murcko]
10191
10192   *) SunOS lib-function prototypes in conf.h conditionalized on __GNUC__,
10193      not __SUNPRO_C (they're needed to quiet gcc -Wall, but acc chokes on 'em,
10194      and older versions don't set the __SUNPRO_C preprocessor variable).  On
10195      all other systems, these are never used anyway.  [Reported by Mark Cox].
10196
10197   *) Scoreboard file (/tmp/htstatus.*) no longer publically writable.
10198
10199 Changes with Apache 0.8.5                                        01 Aug 1995
10200
10201   *) Added last-minute configurable log experiment, as optional module
10202
10203   *) Correctly set r->bytes_sent for HTTP/0.9 requests, so they get logged
10204      properly.  (One-line fix to http_protocol.c).
10205
10206   *) Work around bogus behavior when reloading from Netscape.
10207      It's Netscape's bug --- for some reason they expect a request with
10208      If-modified-since: to not function as a conditional GET if it also
10209      comes with Pragma: no-cache, which is way out of line with the HTTP
10210      spec (according to Roy Fielding, the redactor).
10211
10212   *) Added parameter to set maximum number of server processes.
10213
10214   *) Added patches to make it work on A/UX.  A/UX is *weird*.  [Eric Hagberg,
10215      Jim Jagielski]
10216
10217   *) IdentityCheck bugfix [Chuck Murcko].
10218
10219   *) Corrected cgi-src/Makefile entry for new imagemap script.  [Alexei Kosut]
10220
10221   *) More sample config file corrections; add extension to AddType for
10222      *.asis, move AddType generic description to its proper place, and
10223      fix miscellaneous typos. [ Alexei Kosut ]
10224
10225   *) Deleted the *other* reference to the regents from the Berkeley
10226      legal disclaimer (everyplace).
10227
10228   *) Nuked Shambhala name from src/README; had already cleaned it out
10229      of everywhere else.
10230
10231 Changes with Apache 0.8.4
10232
10233   *) Changes to server-pool management parms --- renamed current
10234      StartServers to MinSpareServers, created separate StartServers
10235      parameter which means what it says, and renamed MaxServers to
10236      MaxSpareServers (though the old name still works, for NCSA 1.4
10237      back-compatibility).  The old names were generally regarded as
10238      too confusing.  Also altered "docs" in sample config files.
10239
10240   *) More improvements to default config files ---
10241      sample directives (commented out) for XBitHack, BindAddress,
10242      CacheNegotiatedDocs, VirtualHost; decent set of AddLanguage
10243      defaults, AddTypes for send-as-is and imagemap magic types, and
10244      improvements to samples for DirectoryIndex [Alexei Kosut]
10245
10246   *) Yet more improvements to default config files --- changes to
10247      Alexei's sample AddLanguage directives, and sample LanguagePriority
10248      [ Florent Guillaume ]
10249
10250   *) Set config file locations properly if not set in httpd.conf
10251      [ David Robinson ]
10252
10253   *) Don't escape URIs in internal redirects multiple times; don't
10254      do that when translating PATH_INFO to PATH_TRANSLATED either.
10255      [ David Robinson ]
10256
10257   *) Corrected spelling of "Required" in 401 error reports [Andrew Wilson]
10258
10259 Changes with Apache 0.8.3
10260
10261   *) Edited distribution README to *briefly* summarize installation
10262      procedures, and give a pointer to the INSTALL file in the src/
10263      directory.
10264
10265   *) Upgraded imagemap script in cgi-bin to 1.8 version from more
10266      recent NCSA distributions.
10267
10268   *) Bug fix to previous bug fix --- if .htaccess file and <Directory>
10269      exist for the same directory, use both and don't segfault.  [Reported
10270      by David Robinson]
10271
10272   *) Proper makefile dependencies [David Robinson]
10273
10274   *) Note (re)starts in error log --- reported by Rob Hartill.
10275
10276   *) Only call no2slash() after get_path_info() has been done, to
10277      preserve multiple slashes in the PATH_INFO [NCSA compatibility,
10278      reported by Andrew Wilson, though this one is probably a real bug]
10279
10280   *) Fixed mod_imap.c --- relative paths with base_uri referer don't
10281      dump core when Referer is not supplied. [Randy Terbush]
10282
10283   *) Lightly edited sample config files to refer people to our documentation
10284      instead of NCSA's, and to list Rob McCool as *original* author (also
10285      deleted his old, and no doubt non-functional email address).  Would be
10286      nice to have examples of new features...
10287
10288 Changes with Apache 0.8.2                                        19 Jul 1995
10289
10290   *) Added AddLanuage code [Florent Guillaume]
10291
10292   *) Don't say "access forbidden" when a CGI script is not found.  [Mark Cox]
10293
10294   *) All sorts of problems when MultiViews finds a directory.  It would
10295      be nice if mod_dir.c was robust enough to handle that, but for now,
10296      just punt.  [reported by Brian Behlendorf]
10297
10298   *) Wait for all children on restart, to make sure that the old socket
10299      is gone and we can reopen it.  [reported by Randy Terbush]
10300
10301   *) Imagemap module is enabled in default Configuration
10302
10303   *) RefererLog and UserAgentLog modules properly default the logfile
10304      [Randy Terbush]
10305
10306   *) Mark Cox's mod_cookies added to the distribution as an optional
10307      module (commented out in the default Configuration, and noted as
10308      an experiment, along with mod_dld). [Mark Cox]
10309
10310   *) Compiles on ULTRIX (a continuing battle...). [Robert Thau]
10311
10312   *) Fixed nasty bug in SIGTERM handling [reported by Randy Terbush]
10313
10314   *) Changed "Shambhala" to "Apache" in API docs. [Robert Thau]
10315
10316   *) Added new, toothier legal disclaimer. [Robert Thau; copied from BSD
10317      license]
10318
10319 Changes with Apache 0.8.1
10320
10321   *) New imagemap module [Randy Terbush]
10322
10323   *) Replacement referer log module with NCSA-compatible RefererIgnore
10324      [Matthew Gray again]
10325
10326   *) Don't mung directory listings with very long filenames.
10327      [Florent Guillaume]
10328
10329 Changes with Apache 0.8.0 (nee Shambhala 0.6.2)                  16 Jul 1995
10330
10331   *) New config script.  See INSTALL for info.  [Robert Thau]
10332
10333   *) Scoreboard mechanism for regulating the number of extant server
10334      processes.  MaxServers and StartServers defaults are the same as
10335      for NCSA, but the meanings are slightly different.  (Actually,
10336      I should probably lower the MaxServers default to 10).
10337
10338      Before asking for a new connection, each server process checks
10339      the number of other servers which are also waiting for a
10340      connection.  If there are more than MaxServers, it quietly dies
10341      off.  Conversely, every second, the root, or caretaker, process
10342      looks to see how many servers are waiting for a new connection;
10343      if there are fewer than StartServers, it starts a new one.  This
10344      does not depend on the number of server processes already extant.
10345      The accounting is arranged through a "scoreboard" file, named
10346      /tmp/htstatus.*, on which each process has an independent file
10347      descriptor (they need to seek without interference).
10348
10349      The end effect is that MaxServers is the maximum number of
10350      servers on an *inactive* server machine, but more will be forked
10351      off to handle unusually heavy loads (or unusually slow clients);
10352      these will die off when they are no longer needed --- without
10353      reverting to the overhead of full forking operation.  There is a
10354      hard maximum of 150 server processes compiled in, largely to
10355      avoid forking out of control and dragging the machine down.
10356      (This is arguably too high).
10357
10358      In my server endurance tests, this mechanism did not appear to
10359      impose any significant overhead, even after I forced it to put the
10360      scoreboard file on a normal filesystem (which might have more
10361      overhead than tmpfs).  [Robert Thau]
10362
10363   *) Set HTTP_FOO variables for SSI <!--#exec cmd-->s, not just CGI scripts.
10364      [Cliff Skolnick]
10365
10366   *) Read .htaccess files even in directory with <Directory> section.
10367      (Former incompatibility noted on mailing list, now fixed). [Robert
10368      Thau]
10369
10370   *) "HEAD /" gives the client a "Bad Request" error message, rather
10371      than trying to send no body *and* no headers.  [Cliff Skolnick].
10372
10373   *) Don't produce double error reports for some very obscure cases
10374      mainly involving auth configuration (the "all modules decline to
10375      handle" case which is a sure sign of a server bug in most cases,
10376      but also happens when authentication is badly misconfigured).
10377      [Robert Thau]
10378
10379   *) Moved FCNTL_SERIALIZED_ACCEPT defines into conf.h (that's what
10380      it's *for*, and this sort of thing really shouldn't be cluttering
10381      up the Makefile). [Robert Thau]
10382
10383   *) Incidental code cleanups in http_main.c --- stop dragging
10384      sa_client around; just declare it where used.  [Robert Thau]
10385
10386   *) Another acc-related fix.  (It doesn't like const char
10387      in some places...). [Mark Cox]
10388
10389 Changes with Shambhala 0.6.1                                     13 Jul 1995
10390
10391   *) Fixed auth_name-related typos in http_core.c [Brian Behlendorf]
10392      Also, fixed auth typo in http_protocol.c unmasked by this fix.
10393
10394   *) Compiles clean with acc on SunOS [Paul Sutton]
10395
10396   *) Reordered modules in modules.c so that Redirect takes priority
10397      over ScriptAlias, for NCSA bug-compatibility [Rob Hartill] ---
10398      believe it or not, he has an actual site with a ScriptAlias and
10399      a Redirect declared for the *exact same directory*.  Even *my*
10400      compatibility fetish wouldn't motivate me to fix this if the fix
10401      required any effort, but it doesn't, so what the hey.
10402
10403   *) Fixed to properly default several server_rec fields for virtual
10404      servers from the corresponding fields in the main server_rec.
10405      [Cliff Skolnick --- 'port' was a particular irritant].
10406
10407   *) No longer kills off nph- child processes before they are
10408      finished sending output. [Matthew Gray]
10409
10410 Changes with Shambhala 0.6.0                                     10 Jul 1995
10411
10412   *) Two styles of timeout --- hard and soft.  soft_timeout()s just put
10413      the connection to the client in an "aborted" state, but otherwise
10414      allow whatever handlers are running to clean up.  hard_timeout()s
10415      abort the request in progress completely; anything not tied to some
10416      resource pool cleanup will leak.  They're still around because I
10417      haven't yet come up with a more elegant way of handling
10418      timeouts when talking to something that isn't the client.  The
10419      default_handler and the dir_handler now use soft timeouts, largely
10420      so I can test the feature.  [Robert Thau]
10421
10422   *) TransferLog "| my_postprocessor ..." seems to be there.  Note that
10423      the case of log handlers dying prematurely is probably handled VERY
10424      gracelessly at this point, and if the logger stops reading input,
10425      the server will hang.  (It is known to correctly restart the
10426      logging process on server restart; this is (should be!) going through
10427      the same SIGTERM/pause/SIGKILL routine used to ding an errant CGI
10428      script).  [Robert Thau]
10429
10430   *) asis files supported (new module).  [Robert Thau]
10431
10432   *) IdentityCheck code is compiled in, but has not been tested.  (I
10433      don't know anyone who runs identd). [Robert Thau]
10434
10435   *) PATH_INFO and PATH_TRANSLATED are not set unless some real PATH_INFO
10436      came in with the request, for NCSA bug-compatibility. [Robert Thau]
10437
10438   *) Don't leak the DIR * on HEAD request for a directory. [Robert Thau]
10439
10440   *) Deleted the block_alarms() stuff from dbm_auth; no longer necessary,
10441      as timeouts are not in scope. [Robert Thau]
10442
10443   *) quoted-string args in config files now handled correctly (doesn't drop
10444      the last character). [Robert Thau; reported by Randy Terbush]
10445
10446   *) Fixed silly typo in http_main.c which was suddenly fatal in HP-UX.
10447      How the hell did it ever work? [Robert Thau; reported by Rob Hartill]
10448
10449   *) mod_core.c --- default_type returns DEFAULT_TYPE (the compile-time
10450      default default type); the former default default behavior when all
10451      type-checkers defaulted had been a core dump.  [Paul Sutton]
10452
10453   *) Copy filenames out of the struct dirent when indexing
10454      directories.  (On Linux, readdir() returns a pointer to the same
10455      memory area every time).  Fix is in mod_dir.c.  [Paul Sutton]
10456
10457 Changes with Shambhala 0.5.3 [not released]
10458
10459   *) Default response handler notes "file not found" in the error log,
10460      if the file was not found.  [Cliff Skolnick].
10461
10462   *) Another Cliff bug --- "GET /~user" now properly redirects (the userdir
10463      code no longer sets up bogus PATH_INFO which fakes out the directory
10464      handler). [Cliff Skolnick]
10465
10466 Changes with Shambhala 0.5.2                                     06 Jul 1995
10467
10468   *) Changes to http_main.c --- root server no longer plays silly
10469      games with SIGCHLD, and so now detects and replaces dying
10470      children.  Child processes just die on SIGTERM, without taking
10471      the whole process group with them.  Potential problem --- if any
10472      child process refuses to die, we hang in restart.
10473      MaxRequestsPerChild may still not work, but it certainly works
10474      better than it did before this!  [Robert Thau]
10475
10476   *) mod_dir.c bug fixes: ReadmeName and HeaderName
10477      work (or work better, at least); over-long description lines
10478      properly terminated. [Mark Cox]
10479
10480   *) http_request.c now calls unescape_url() more places where it
10481      should [Paul Sutton].
10482
10483   *) More directory handling bugs (reported by Cox)
10484      Parent Directory link is now set correctly. [Robert Thau]
10485
10486 Changes with Shambhala 0.5.1                                     04 Jul 1995
10487
10488   *) Generalized cleanup interface in alloc.c --- any function can be
10489      registered with alloc.c as a cleanup for a resource pool;
10490      tracking of files and file descriptors has been reimplemented in
10491      terms of this interface, so I can give it some sort of a test.
10492      [Robert Thau]
10493
10494   *) More changes in alloc.c --- new cleanup_for_exec() function,
10495      which tracks down and closes all file descriptors which have been
10496      registered with the alloc.c machinery before the server exec()s a
10497      child process for CGI or <!--#exec-->.  CGI children now get
10498      started with exactly three file descriptors open.  Hopefully,
10499      this cures the problem Rob H. was having with overly persistent
10500      CGI connections. [Robert Thau]
10501
10502   *) Mutual exclusion around the accept() in child_main() --- this is
10503      required on at least SGI, Solaris and Linux, and is #ifdef'ed in
10504      by default on those systems only (-DFCNTL_SERIALIZED_ACCEPT).
10505      This uses fcntl(F_SETLK,...) on the error log descriptor because
10506      flock() on that descriptor won't work on systems which have BSD
10507      flock() semantics, including (I think) Linux 1.3 and Solaris.
10508
10509      This does work on SunOS (when the server is idle, only one
10510      process in the pool is waiting on accept()); it *ought* to work
10511      on the other systems. [Robert Thau]
10512
10513   *) FreeBSD and BSDI portability tweaks [Chuck Murcko]
10514
10515   *) sizeof(*sa_client) bugfix from [Rob Hartill]
10516
10517   *) pstrdup(..., NULL) returns NULL, [Randy Terbush]
10518
10519   *) block_alarms() to avoid leaking the DBM* in dbm auth (this should
10520      be unnecessary if I go to the revised timeout-handling scheme).
10521      [Robert Thau]
10522
10523   *) For NCSA bug-compatibility, set QUERY_STRING env var (to a null
10524      string) even if none came in with the request.  [Robert Thau]
10525
10526   *) CHANGES file added to distribution ;-).
10527
10528 Changes with Shambhala 0.4.5
10529
10530   *) mod_dld --- early dynamic loading support [rst]
10531   *) Add wildcard content handlers for XBITHACK; default_hander now
10532      invoked with that mechanism (as a handler hanging off mod_core) [rst]
10533   *) XBITHACK supported as a wildcard content-handler, and 
10534      configurable at run-time (not just at compile time, as in the
10535      "patchy server" releases) [rst]
10536
10537 Changes with Shambhala 0.4.4                                     30 Jun 1995
10538
10539   *) Fixed basic thinkos in mod_dbm_auth.c [rst, reported by Mark Cox]
10540   *) Handle Addtype x/y .z [rst, reported by Cox]
10541
10542 Changes with Shambhala 0.4.3
10543
10544   *) Fixed very dumb bug in mod_alias; "Alias" and "Redirect" are not
10545      synonymous [rst, terbush]
10546
10547 Changes with Shambhala 0.4.1                                     28 Jun 1995
10548
10549   *) First-cut virtual host implementation; some refit in the config
10550      reading code, and log management, was necessary to support this [rst]
10551   *) Sub-pool machinery, originally added to avoid excessive storage
10552      allocation on listings of large directories (which turned out to
10553      be the problem that the 0.3 storage accounting was added to
10554      find).  Subrequests and mod_dir changed to use subpools.  [rst]
10555   *) More memory debugging --- free list consistency checks. [rst]
10556   *) Added err_headers to request_rec, with support elsewhere [rst]
10557   *) Other fixes to minor bugs in mod_dir and mod_includes [rst, terbush]
10558
10559 Changes with Shambhala 0.3                                       19 Jun 1995
10560
10561   *) Switch ONE_PROCESS to a runtime command-line option (-X)
10562   *) Don't compile in mod_ai_backcompat by default
10563   *) Switch name of server from Apache to Shambhala in Makefile
10564   *) Add some accounting routines to track memory usage in the pools,
10565      for debugging
10566
10567 Changes with Shambhala 0.2
10568
10569   *) Set DOCUMENT_ROOT CGI variable
10570   *) Add single-process debugging, as a compile-time option (ONE_PROCESS)
10571   *) Add critical section protection to handling of cleanup structures 
10572      in alloc.c [rst]
10573   *) Significant code reorg within the server core to group related
10574      functions together [rst]
10575   *) Correctly handle clients that hang up before sending any request
10576      [rst]
10577   *) Replace dying child processes. [rst]
10578
10579 Changes with Shambhala 0.1                                       12 Jun 1995
10580
10581    Major rewrite of the pre-existing "patchy server" codebase, by
10582    Robert Thau (rst).  Significant portions of the server code, such
10583    as configuration-file handling and HTTP authentication support,
10584    were ripped out and rewritten from scratch.  Code that was not
10585    completely rewritten was significantly altered.
10586
10587    Major changes with this release include:
10588
10589    *) Introduction of the module API; in request handling, the central 
10590       machinery just dispatches to various modules, which actually do
10591       most of the work.  Configuration handling is similar --- modules
10592       declare their own commands, and the central machinery just
10593       dispatches to them.  
10594
10595       API features from shambhala/0.1 were substantially unchanged in
10596       Apache 1.0 and 1.1.  (1.0 API features not yet present in this
10597       release, such as wildcard handlers and subpools, were added in
10598       subsequent Shambhala releases, and were also generally rst's
10599       work). 
10600
10601    *) This release included the following modules:
10602
10603       mod_access      (access control --- allow and deny directives),
10604       mod_alias       (Alias and Redirect commands),
10605       mod_auth        (straight HTTP authentication, based on flat-files)
10606       mod_auth_dbm    (same, with dbm files)
10607       mod_cgi         (CGI scripts and, in this release, ScriptAlias)
10608       mod_common_log  (CLF access logs; later renamed mod_log_common)
10609       mod_dir         (directory indexing)
10610       mod_include     (server-side includes)
10611       mod_mime        (AddType directives)
10612       mod_negotiation (content negotiation)
10613       mod_userdir     (support for users' public_html directories)
10614
10615       It also included a mod_ai_backcompat, which was a private hack
10616       for back-compatibility with rst's own AI-lab servers.
10617
10618       All of these modules were substantially complete, and functional 
10619       or nearly so (a few, which implemented features not in use at
10620       Thau's site, required patches of a few lines).
10621
10622    *) sub-request machinery, to allow modules to determine how other
10623       modules would assign MIME types to a given file, or optionally
10624       serve its content (this is heavily used by mod_dir, mod_include
10625       and mod_negotiation).
10626
10627    *) Resource pool system for keeping track of memory allocated and
10628       files opened in service of a particular request.  Much of the
10629       code in the modules (when they weren't rewrites) was adjusted to 
10630       replace a pervasive convention of using fixed-size buffers on
10631       the stack with an equally pervasive convention of using memory
10632       allocated with palloc().
10633
10634    *) Reorganization of data structures associated with a given
10635       request to eliminate use of global variables and the troublesome 
10636       unmunge_name function (used in NCSA and early Apache releases to 
10637       attempt to determine the URI which mapped to a given filename
10638       --- a difficult proposition, given that it is easy to produce
10639       setups in which multiple URIs map to the same file).
10640
10641    *) Source files renamed and rearranged
10642
10643    *) Very simple pre-forking behavior --- parent process forked off a 
10644       fixed number of children, and then just waited for SIGHUP.
10645
10646    *) Other more minor changes too numerous to list.
10647
10648    This release included modified versions of a lot of code from the
10649    Apache 0.6.4 public release, plus an early pre-forking patch
10650    codeveloped by Robert Thau and Rob Hartill.
10651
10652 Changes with Apache 0.7.3                                        20 Jun 1995
10653
10654    *) There were a bunch of changes between Apache 0.6.4 and 0.7.3 that
10655       were incorporated by Rob Hartill on the main branch while Robert Thau
10656       worked on the Shambhala rewrite above.  Most were merged into the
10657       Shambala architecture after Apache 0.8.0.
10658
10659 Changes with Apache 0.6.4                                        13 May 1995
10660
10661    *) Patches by Rob Hartill, Cliff Skolnick, Randy Terbush, Robert Thau,
10662       and others.
10663
10664 Changes with Apache 0.5.1                                        10 Apr 1995
10665
10666 Changes with Apache 0.4                                          02 Apr 1995
10667
10668   *) Patches by Brian Behlendorf, Andrew Wilson, Robert Thau,
10669      and Rob Hartill.
10670
10671 Changes with Apache 0.3                                          24 Mar 1995
10672
10673   *) Patches by Robert Thau, David Robinson, Rob Hartill, and
10674      Carlos Varela.
10675
10676 Changes with Apache 0.2                                          18 Mar 1995
10677
10678   *) Based on NCSA httpd 1.3 by Rob McCool and patches by CERT,
10679      Roy Fielding, Robert Thau, Nicolas Pioch, David Robinson,
10680      Brian Behlendorf, Rob Hartill, and Cliff Skolnick.