Newer
Older
*) PORT: Various porting changes to support AIX 3.2, 4.1.5, 4.2 and 4.3.
Additionally the checks for finding the vendor DSO library were moved
from mod_so.c to Configure because first it needs $PLAT etc. and second
mod_so already uses an abstraction layer and does not fiddle with the
vendor functions itself.
[Jens-Uwe Mager, Ralf S. Engelschall]
*) PORT: Some optimization defines for NetBSD
*) PORT: Dynamic Shared Object (DSO) support for NetBSD.
[Jaromir Dolecek <dolecek ics.muni.cz>, Ralf S. Engelschall] PR#2158
10013
10014
10015
10016
10017
10018
10019
10020
10021
10022
10023
10024
10025
10026
10027
10028
10029
10030
10031
10032
*) Add Dynamic Shared Object (DSO) support for AIX (at least 4.2 but older
AIX variants should work fine, too. Even AIX 3.x should work). This is
accomplished by using the free DSO emulation code from Jens-Uwe Mager
which we put into a os/unix/os-dso-aix.c file.
[Ralf S. Engelschall]
*) PORT: Fix compiler warnings under AIX >= 4.2 where the manual pages imply
that we should use NET_SIZE_T == int but the include files force size_t.
[Ralf S. Engelschall]
*) Fix two bugs in select() handling in http_main.c.
[Roy Fielding]
*) Suppress "error(0)" messages for ap_log_error() when the APLOG_NOERRNO
is unset (as it is in situations like timeouts) where it is unclear
whether errno is set or not. [Martin Kraemer]
*) Just having APACI's localstatedir is too general and not enough for most
of the systems. 1.3b6 again required manual APACI patches by package
maintainers from Red Hat and FreeBSD because for their filesystem layout a
little bit more flexibility in configuring the paths is needed. Hence we
provide three additional configure options (--runtimedir, --logfiledir,
--proxycachedir) which now can be used for more granular adjustments if
--localstatedir is not enough to fit the particular needs. As a nice
side-effect this reduces some subdir fiddling in configure+Makefile.tmpl.
[Ralf S. Engelschall]
*) Make the install root for "make install" in APACI's Makefile overrideable
by package authors. This way we are even more friendly to package
maintainers (especially Debian and Red Hat) who build for the real prefix
10044
10045
10046
10047
10048
10049
10050
10051
10052
10053
10054
10055
10056
10057
10058
10059
10060
10061
10062
10063
10064
10065
10066
10067
10068
10069
10070
10071
10072
10073
10074
10075
10076
10077
10078
10079
10080
10081
10082
10083
10084
10085
10086
10087
10088
10089
10090
10091
10092
10093
10094
10095
10096
10097
10098
10099
10100
10101
10102
10103
10104
10105
10106
10107
10108
10109
10110
10111
10112
via "configure --prefix=/<real>" but use a different local prefix via
"make root=/tmp/apache install" for rolling the package without bristling
the target location on their system.
[Ralf S. Engelschall]
*) Workaround sed limitations in APACI's configure script by now
substituting in chunks of 50 commands (because for instance HPUX's vendor
sed has a limit of max. 98 commands)
[Ralf S. Engelschall] PR#2136
*) Adding SOCKS5 support and fixing existing SOCKS4 support.
[Ralf S. Engelschall] PR#2140
*) Manually fix some symbols which were not renamed to prefix ap_ in the BIG
RENAMING process because they are defined as pre-processor macros instead
of real functions: bputc, bgetc, piped_log_write_fd, piped_log_read_fd
[Ralf S. Engelschall]
*) Workaround braindead AWK's when generating ap_config.h: The split() and
substr() functions cannot be nested under vendor AWK from Solaris 2.6.
[Ralf S. Engelschall] PR#2139
*) Various bugfixes and cleanups for the APACI configure script:
o fix IFS handling for _nested_ situation
o fix Perl interpreter search: take first one found instead of last one
o fix DSO consistency check
o print error messages to stderr instead of stdout
o add install-quiet for --shadow situation to Makefile stub
o reduce complexity by avoiding sed-hacks for rule and module list loops
[Ralf S. Engelschall]
*) Fix DEBUG_CGI situation in mod_cgi.c [David MacKenzie] PR#2114
*) Make sure the input field separator (IFS) shell variable is explicitly
initialized correctly before _every_ `for' loop and also restored after
the loops. [Ralf S. Engelschall]
*) Make sure that "make install" doesn't overwrite the `mime.types' and
`magic' files from an existing Apache installation. Because people often
customize these for own MIME and content types.
[Ralf S. Engelschall]
*) PORT: Dynamic Shared Object (DSO) support for OpenBSD 2.x
[Peter Galbavy, Ralf S. Engelschall] PR#2109
*) Fix the path to the ScoreBoardFile in the install-config target, too.
[Ralf S. Engelschall] PR#2105
*) Let "configure" clear out the users parameters (provided as shell
variables) to avoid side-effects in "src/Configure" when the user
exported them (which is not needed, but some users do it).
[Ralf S. Engelschall] PR#2101
*) Provide backward compatibility from some old src/Configuration.tmpl
parameter names to the canonical Autoconf-style shell variable names. For
instance CFLAGS vs. EXTRA_CFLAGS. The EXTRA_xxx variants are accepted now
but a hint message is displayed. [Ralf S. Engelschall]
*) Make sure that "make install" doesn't overwrite the DocumentRoot and
CGI scripts from an existing Apache installation.
[Ralf S. Engelschall, Jim Jagielski] PR#2084
*) Make `configure --compat' more "compatible" by first
let the libexecdir default to EPREFIX/libexec instead of EPREFIX/bin and
second by making sure the "avoid-bristling-suffix" /apache is not
appended to sysconfdir, datadir, localstatedir and includedir when
--compat is used. [Ralf S. Engelschall, Lars Eilebrecht]
*) NeXT required strdup() in support/logresolve.c
*) AIX required sys/select.h in support/ab.c
*) Fix the path to the MimeMagicFile in the install-config target, too.
[Ralf S. Engelschall] PR#2089
*) PORT: Added HP-UX 11 patches [Jeff Earickson <jaearick colby.edu>]
10122
10123
10124
10125
10126
10127
10128
10129
10130
10131
10132
10133
10134
10135
10136
10137
10138
10139
10140
10141
10142
10143
10144
10145
10146
10147
10148
10149
10150
10151
10152
10153
10154
10155
10156
10157
10158
10159
10160
10161
10162
10163
10164
10165
10166
10167
10168
10169
10170
10171
10172
10173
10174
10175
10176
10177
10178
10179
10180
10181
10182
10183
10184
10185
10186
10187
10188
10189
10190
10191
10192
10193
10194
10195
10196
10197
10198
10199
10200
10201
10202
10203
10204
10205
10206
10207
10208
10209
10210
10211
10212
10213
10214
10215
10216
10217
10218
*) If you start apache with the -S command line option it will dump
out the parsed vhost settings. This is useful for folks trying
to figure out what is wrong with their vhost configuration.
(Other dumps may be added in the future.) [Dean Gaudet]
*) Add %pA, %pI, and %pp codes to ap_vformatter (and hence ap_bprintf,
ap_snprintf, and ap_psprintf). See include/ap.h for docs.
[Dean Gaudet]
*) Because /usr/local/apache is the default prefix the ``configure
--compat'' option no longer has to set prefix, again. This way the
--compat option honors a leading --prefix option. [Lars Eilebrecht]
*) PORT: Cast the first argument of dlopen() in ap_os_dso_load()
to `char *' under OSF1 and FreeBSD 2.x where it is defined this way
to avoid "discard const" warnings. [Ralf S. Engelschall]
*) If a specific handler is set for a file yet the request still
ends up being handled by the default handler, log an error
message before handling it. This catches things such as trying
to use SSIs without mod_include enabled. [Marc Slemko]
*) Fix error logging for the startup case where ap_log_error() still uses
stderr as the target. Now the default log level is honored here, too.
[Ralf S. Engelschall]
*) PORT: Make sure some AWK's don't fail in src/Configure with "string too
long" errors when generating the MODULES entry for src/Makefile
[Ben Hyde, Ralf S. Engelschall]
*) Make sure src/Configure doesn't complain about the old directory
/usr/local/etc/httpd/ when APACI is used. [Lars Eilebrecht]
Changes with Apache 1.3b6
*) PORT: Clean up warnings on Ultrix and HPUX. [Ben Hyde]
*) Adding DSO support for the HP/UX platform by emulating the dlopen-style
interface via the similar but proprietary HP/UX shl_xxx-style system
calls. [Ralf S. Engelschall]
*) PORT: Updated UnixWare 2.0.x and 2.1.x entries for DSO support and made
APACI Makefile.tmpl "install" target more robust for sensible UnixWare
Make. [Ralf S. Engelschall]
*) ++++ THE BIG SYMBOL RENAMING ++++
To avoid symbol clashes with third-party code compiled into the server,
we globally applied the prefix "ap_" to the following classes of
functions:
- Apache provided general functions (e.g., ap_cpystrn)
- Public API functions (e.g., palloc, bgets)
- Private functions which we can't make static (because of
cross-object usage) but should be (e.g., new_connection)
For backward source compatibility a new header file named compat.h was
created which provides defines for the old symbol names and can be used
by third-party module authors.
[The Apache Group]
*) Added dynamic shared object (DSO) support for SVR4-derivates: The
problem under SVR4 is that there is no command flag to force the linker
to export the global symbols of the httpd executable therewith they are
available to the DSO's. Instead of problematic hacks like creating a
dummy.so file (containing dummy references to all global symbols) the
httpd binary is linked against, we use a clean trick stolen from Perl 5:
Placing the Apache core code itself into a DSO library named libhttpd.so.
This way the global symbols _HAVE_ to be exported and thus are available
to any manually loaded DSO's under runtime. To reduce the impact to the
user to null we go even further and create a stub httpd executable which
automatically keeps track of the DSO library loading itself and thus
hides the complete mechanism from the user. Although the generation of
this DSO library is automatically triggered for platforms which
essentially need it (mostly all SVR4-derivates) it can be also enabled
manually via the Rule SHARED_CORE. This can be interesting in the future
where we perhaps exploit this libhttpd.so mechanism for providing nifty
features like graceful upgrades, or whatever.
[Ralf S. Engelschall, Martin Kraemer]
*) Build the libraries before building the rest of the tools. [Ben Hyde]
*) Add "distclean" target to src/-Makefiles to provide "make distclean" also
inside the src subtree (i.e. for non-APACI users). Following GNU Makefile
conventions while "clean" removes only stuff created by "all" targets,
"distclean" additionally removes the stuff from the configuration
process. This way "make distclean" (hence the name) provides a fresh
source tree as it was for distribution.
[Ralf S. Engelschall]
*) Allow top-level (APACI) Makefile to break on build errors
the same way the src/ subtree Makefiles breaks on them by replacing the
initial APACI sed-subdir-display-kludge with a more clean
variable-passing-solution: variable SDP can optionally hold the subdir
prefix which is consistently used for displaying the subdir movement.
This way even the top-level Makefile can stop correctly on errors as the
user expects. [Ralf S. Engelschall]
*) Fixed ordering of argument checks for RewriteBase directive.
10220
10221
10222
10223
10224
10225
10226
10227
10228
10229
10230
10231
10232
10233
10234
10235
10236
10237
10238
10239
10240
10241
10242
10243
10244
10245
10246
10247
10248
10249
10250
10251
10252
10253
10254
10255
10256
10257
10258
10259
10260
10261
10262
10263
10264
10265
10266
10267
10268
10269
10270
10271
10272
10273
*) Change Win32 IS_MODULE to SHARED_MODULE to match Unix' method of
indicating that a module is being compiled for dynamic loading. Also
remove #define IS_MODULE from modules and add SHARED_MODULE define
to the mak/dsp files. [Alexei Kosut]
*) Reduce logging level of "normal" warning messages to APLOG_INFO,
since we are now logging APLOG_WARNING by default. [Roy Fielding]
*) PORT: OS/2 tweak to deal with multiple .exe targets. [Brian Havard]
*) Add documentation file and src/Configuration.tmpl entry for the
experimental mod_mmap_static module. Because although it is and marked as
an experimental one it is distributed and thus should be documented and
prepared for configuration the same way as all others modules.
[Ralf S. Engelschall]
*) Add query (-q) option to apxs support tool to be able to manually query
specific settings from apxs. This is needed for instance when you
manually want to access Apache's header files and you need to assemble
the -I option. Now you can do -I`apxs -q INCLUDEDIR`.
[Ralf S. Engelschall]
*) Now src/Configure uses a fallback strategy for the shared object support
on platforms where no explicit information is available: If a Perl
installation exists we ask it about its shared object support and if it's
the dlopen-style one we shamelessly guess the compiler and linker flags
for creating shared objects from Perls knowledge. Of course, the user is
warning about what we are doing and informed that he should send us
the guessed flags when they work. [Ralf S. Engelschall]
*) Provide APACI --without-support option to be able to disable the build
and installation of the support tools from the src/support/ area.
Although its useful to have these installed per default we should provide
a way to compile and install without them for backward-compatibility.
[Ralf S. Engelschall]
*) Add of the new APache eXtenSion (apxs) support tool for building and
installing modules into an _already installed_ Apache package through the
dynamic shared object (DSO) mechanism [mod_so.c]. The trick here is that
this approach actually doesn't need the Apache source tree. The
(APACI-installed) server package is enough, because this now includes the
Apache C header files (PREFIX/include) and the new APXS tool
(SBINDIR/apxs). The intend is to provide a handy tool for third-party
module authors to build their Apache modules _OUTSIDE_ the Apache source
tree while avoiding them to fiddle around with the totally platform
dependend way of compiling DSO files. The tool supports all ranges of
modules, from trivial ones (single mod_foo.c) to complex ones (like PHP3
which has a mod_php3.c plus a pre-built libmodphp3-so.a) and even can
on-the-fly generate a minimalistic Makefile and sample module for the
first step to provide both a quick success event and to demonstrate the
APXS mechanism to module authors. [Ralf S. Engelschall]
*) Fix core dumps in use of CONNECT in proxy.
10275
10276
10277
10278
10279
10280
10281
10282
10283
10284
10285
10286
10287
10288
10289
10290
10291
10292
10293
10294
10295
10296
10297
10298
10299
10300
10301
10302
10303
10304
10305
10306
10307
10308
10309
10310
10311
10312
10313
10314
10315
10316
10317
10318
10319
10320
10321
*) Modify the log directives in httpd.conf-dist files to use CustomLog
so that users have examples of how CustomLog can be used.
[Lars Eilebrecht]
*) Add the new Apache Autoconf-style Interface (APACI) for the top-level of
the Apache distribution tree. Until Apache 1.3 there was no real
out-of-the-box batch-capable build and installation procedure for the
complete Apache package. This is now provided by a top-level "configure"
script and a corresponding top-level "Makefile.tmpl" file. The goal is
to provide a GNU Autoconf-style frontend which is capable to both drive
the old src/Configure stuff in batch and additionally installs the
package with a GNU-conforming directory layout. Any options from the old
configuration scheme are available plus a lot of new options for flexibly
customizing Apache. [Ralf S. Engelschall]
*) The floating point ap_snprintf code wasn't threadsafe.
Had to remove the HAVE_CVT macro in order to do threadsafe
calling of the ?cvt() floating point routines. [Dean Gaudet]
*) PORT: Add the SCO_SV port. [Jim Jagielski] PR#1962
*) PORT: IRIX needs the -n32 flag iff using the 'cc' compiler
[Jim Jagielski] PR#1901
*) BUG: Configure was using TCC and CC inconsistently. Make sure
Configure knows which CC we are using. [Jim Jagielski]
*) "Options +Includes" wasn't correctly merged if "+IncludesNoExec"
was defined in a parent directory. [Lars Eilebrecht]
*) API: ap_snprintf() code mutated into ap_vformatter(), which is
a generic printf-style routine that can call arbitrary output
routines. Use this to replace http_bprintf.c. Add new routines
psprintf(), pvsprintf() which allocate the exact amount of memory
required for a string from a pool. Use psprintf() to clean up
various bits of code which used ap_snprintf()/pstrdup().
[Dean Gaudet]
*) PORT: HAVE_SNPRINTF doesn't do anything any longer. This is because
ap_snprintf() has different semantics and formatting codes than
snprintf(). [Dean Gaudet]
*) SIGXCPU and SIGXFSZ are now reset to SIG_DFL at boot-time. This
is necessary on at least Solaris where the /etc/rc?.d scripts
are run with these signals ignored, and "SIG_IGN" settings are
maintained across exec().
*) Fix the check for symbolic links in ``RewriteCond ... -l'': stat() was
used instead of lstat() and thus this flag didn't work as expected.
10327
10328
10329
10330
10331
10332
10333
10334
10335
10336
10337
10338
10339
10340
10341
10342
10343
10344
10345
10346
*) Fix the proxy pass-through feature of mod_rewrite for the case of
existing QUERY_STRING now that mod_proxy was recently changed because of
the new URL parsing stuff. [Ralf S. Engelschall]
*) A few changes to scoreboard definitions which helps gcc generate
better code. [Dean Gaudet]
*) ANSI C doesn't guarantee that "int foo : 2" in a structure will
be a signed bitfield. So mark a few bitfields as signed to
ensure correct code. [Dean Gaudet]
*) The default for HostnameLookups was changed to Off, but there
was a problem and it wasn't taking effect. [Dean Gaudet]
*) PORT: Clean up undefined signals on some platforms (SCO, BeOS).
[Dean Gaudet]
*) After a SIGHUP the listening sockets in the parent weren't
properly marked for closure on fork().
10348
10349
10350
10351
10352
10353
10354
10355
10356
10357
10358
10359
10360
10361
10362
10363
10364
*) Allow %2F in two situations: 1) it is in the query part of the URI,
therefore not exposed to %2F -> '/' translations and 2) the request
is a proxy request, so we're not dealing with a local resource anyway.
Without this, the proxy would fail to work for any URL's with
%2f in them (occurs quite often in
http://.../cgi-bin/...?http%3A%2F%2F... references) [Martin Kraemer]
*) Protect against FD_SETSIZE mismatches. [Dean Gaudet]
*) Make the shared object compilation command more portable by avoiding
the direct combination of `-c' & `-o' which is not honored by some
compilers like UnixWare's cc. [Ralf S. Engelschall]
*) WIN32: the proxy was creating filenames missing the last four
characters. While this normally doesn't stop anything from
working, it can result in extra collisions.
10366
10367
10368
10369
10370
10371
10372
10373
10374
10375
10376
10377
10378
10379
10380
10381
10382
10383
10384
10385
10386
10387
10388
10389
10390
10391
10392
10393
10394
10395
10396
10397
10398
10399
10400
10401
*) Now mod_proxy uses the response string (in addition to the response status
code) from the already used FTP SIZE command to setup the Content-Length
header if available. [Ralf S. Engelschall] PR#1183
*) Reanimated the (still undocumented) proxy receive buffer size directive:
Renamed from ReceiveBufferSize to ProxyReceiveBufferSize because the old
name was really too generic, added documentation for this directive to
the mod_proxy.html and corrected the hyperlink to it in the
new_features_1.3.html document. [Ralf S. Engelschall] PR#1348
*) Fix a bug in the src/helpers/fp2rp script and make it a little bit
faster [Martin Kraemer]
*) Make Configure die when you give it an unknown command switch.
[Ben Hyde]
*) Add five new and fresh manpages for the support programs: dbmmanage.1,
suexec.8, htdigest.1, rotatelogs.8 and logresolve.8. Now all up-to-date
and per default compiled support programs have manual pages - just to
document our stuff a little bit more and to be able to do really
Unix-like installations ;-) [Ralf S. Engelschall]
*) Major cleanups to the Configure script to make it and its generated
Makefiles again readable and maintainable: add SRCDIR option, removed
INCLUDES_DEPTH[0-2] kludge, cleanup of TARGET option, cleanup of
generated sections, consequently added Makefile headers with inheritance
information, added subdir movement messages for easier following where
the build process currently stays (more verbose then standard Make, less
verbose than GNU make), same style to comments in the Configure script,
added Apache license header, fixed a few bugs, etc. [Ralf S. Engelschall]
*) Add the new ApacheBench program "ab" to src/support/: This is derived
from the ZeusBench benchmarking program and can be used to determine the
response performance of an Apache installation. This version is
officially licensed with Zeus Technology, Ltd. See the license agreement
statements in <199803171224.NAA24547 en1.engelschall.com> in apache-core.
10403
10404
10405
10406
10407
10408
10409
10410
10411
10412
10413
10414
10415
10416
10417
10418
10419
10420
10421
10422
10423
10424
10425
10426
10427
10428
10429
10430
10431
10432
10433
10434
10435
10436
10437
10438
10439
10440
10441
10442
10443
10444
10445
10446
10447
10448
10449
10450
10451
10452
10453
10454
10455
10456
10457
10458
10459
10460
[Ralf S. Engelschall]
*) API: Various core functions that are definately not part of the API
have been made static, and a few have been marked API_EXPORT. Still
more have been marked CORE_EXPORT and are not intended for general
use by modules. [Doug MacEachern, Dean Gaudet]
*) mod_proxy was not clearing the Proxy-Connection header from
requests; now it does. This did not violate any spec, however
causes poor interactions when you are talking to remote proxies.
[Marc Slemko] PR#1741
*) Various cleanups to the command line interface and manual pages.
[Ralf S. Engelschall]
*) cfg_getline() was not properly handling lines that did not end
with a line termination character. [Marc Slemko] PR#1869, 1909
*) Performance tweak to mod_log_config. [Dmitry Khrustalev]
*) Clean up some undocumented behavior of mod_setenvif related to
"merging" two SetEnvIf directives when they match the same header
and regex. Document that mod_setenvif will perform comparisons in
the order they appear in the config file. Optimize mod_setenvif by
doing more work at config time rather than at runtime.
[Dean Gaudet]
*) src/include/ap_config.h now wraps it's #define's with #ifndef/#endif's
to allow for modules to overrule them and to reduce redefinition
warnings [Jim Jagielski]
*) [PORT] For A/UX change the OS-#define for -DAUX to -DAUX3.
[Jim Jagielski]
*) Making the hard-coded cross-module function call mime_find_ct() (from
mod_proxy to mod_mime) obsolete by making sure the API hook for MIME type
checking is really called even for proxy requests except for URLs with
HTTP schemes (because there we can optimize by not running the type
checking hooks due to the fact that the proxy gets the MIME Content-type
from the remote host later). This change cleans up mod_mime by removing
the ugly export kludge, makes the one-liner file mod_mime.h obsolete, and
especially unbundles mod_proxy and mod_mime. This way they both now can
be compiled as shared objects and are no longer tied together.
[Ralf S. Engelschall]
*) util.c cleanup and speedup. [Dean Gaudet]
*) API: Clarification, pstrndup() will always copy n bytes of the source
and NUL terminate at the (n+1)st byte. [Dean Gaudet]
*) Mark module command_rec and handler_rec structures const so that they
end up in the read-only data section (and are friendlier to systems
that don't do optimistic memory allocation on fork()). [Dean Gaudet]
*) Add check to the "Port" directive to make sure the specified
port is in the appropriate range. [Ben Hyde]
*) Performance improvements to invoke_handler().
10462
10463
10464
10465
10466
10467
10468
10469
10470
10471
10472
10473
10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487
*) Added support for building shared objects even for library-style modules
(which are built from more than one object file). This now provides the
ability to build mod_proxy as a shared object module. Additionally
modules like mod_example are now also supported for shared object
building because the generated Makefiles now no longer assume there is at
least one statically linked module. [Ralf S. Engelschall]
*) API: Clarify usage of content_type, handler, content_encoding,
content_language and content_languages fields in request_rec. They
must always be lowercased; and the strings pointed to shouldn't
be modified (you must copy them to modify them). Fix a few bugs
related to this. [Dean Gaudet]
*) API: Clarification: except for RAW_ARGS, all command handlers can
treat the char * parameters as permanent, and modifiable. There
is no need to pstrdup() them. Clean up some needless pstrdup().
[Dean Gaudet]
*) Now mod_so keeps track of which module shared objects with which names
are loaded and thus avoids multiple loading and unloading and irritating
error_log messages. [Ralf S. Engelschall]
*) Prior to the existence of mod_setenv it was necessary to tweak the TZ
environment variable in the apache core. But that tweaking interferes
with mod_setenv. So don't tweak if the user has specified an explicit
*) rputs() did not calculate r->sent_bodyct properly.
*) The CGI spec says that REMOTE_HOST should be set to the remote hosts's
name, or left unset if this value is unavailable. Apache was setting
it to the IP address when unavailable.
10497
10498
10499
10500
10501
10502
10503
10504
10505
10506
10507
10508
10509
10510
10511
10512
10513
10514
10515
10516
10517
10518
10519
10520
10521
10522
10523
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533
10534
10535
10536
10537
10538
10539
10540
10541
10542
10543
10544
10545
10546
10547
10548
10549
10550
10551
10552
10553
10554
10555
10556
10557
10558
10559
10560
10561
10562
10563
10564
*) Various improvements to the configuration and build support for compiling
modules as shared objects. Especially Solaris 2.x, SunOS 4.1, IRIX and
OSF1 support with GCC and vendor compilers was added. This way shared
object support is now provided out-of-the-box for FreeBSD, Linux,
Solaris, SunOS, IRIX and OSF1. In short: On all major platforms!
[Ralf S. Engelschall]
*) Minor cleanup in http_main -- split QNX and OS2 specific "mmap"
scoreboard code into separate #defines -- USE_POSIX_SCOREBOARD
and USE_OS2_SCOREBOARD. [Dean Gaudet]
*) Fix one more special locking problem for RewriteMap programs in
mod_rewrite: According to the documentation of flock(), "Locks are on
files, not file descriptors. That is, file descriptors duplicated
through dup(2) or fork(2) do not result in multiple instances of a lock,
but rather multiple references to a single lock. If a process holding a
lock on a file forks and the child explicitly unlocks the file, the
parent will lose its lock.". To overcome this we have to make sure the
RewriteLock file is opened _AFTER_ the childs were spawned which is now
the case by opening it in the child_init instead of the module_init API
hook. [Ralf S. Engelschall] PR#1029
*) Change to Location and LocationMatch semantics. LocationMatch no
longer lets a single slash match multiple adjacent slashes in the
URL. This change is for consistency with RewriteRule and
AliasMatch. Multiple slashes have meaning in URLs that they do
not have in (some) filesystems. Location on the other hand can
be considered a shorthand for a more complicated regex, and it
does match multiple slashes with a single slash -- which is
also consistent with the Alias directive.
[Dean Gaudet] related PR#1440
*) Fix bug with mod_mime_magic causing certain files, including files
of length 0, to result in no response from the server.
[Dean Gaudet]
*) The Configure script now generates src/include/ap_config.h which
contains the set of defines used when Apache is compiled on a platform.
This file can then be included by external modules before including
any Apache header files in case they are being built separately from
Apache. Along with this change, a couple of minor changes were
made to make Apache's #defines coexist peacefully with any autoconf
defines an external module might have. [Rasmus Lerdorf]
*) Fix mod_rewrite for the ugly API case where <VirtualHost> sections exist
but without any RewriteXXXXX directives. Here mod_rewrite is given no
chance by the API to initialize its per-server configuration and thus
receives the wrong one from the main server. This is now avoided by
remembering the server together with the config structure while
configuring and later assuming there is no config when we see a
difference between the remembered server and the one calling us.
[Ralf S. Engelschall] PR#1790
*) Fixed the DBM RewriteMap support for mod_rewrite: First the support now
is automatically disabled under configure time when the dbm_xxx functions
are not available. Second, two heavy source code errors in the DBM
support code were fixed. This makes DBM RewriteMap's usable again after
a long time of brokenness. [Ralf S. Engelschall] PR#1696
*) Now all configuration files support Unix-style line-continuation via
the trailing backslash ("\") character. This enables us to write down
complex or just very long directives in a more readable way. The
backslash character has to be really the last character before the
newline and it has not been prefixed by another (escaping) backslash.
[Ralf S. Engelschall]
*) When using ProxyPass the ?querystring was not passed correctly.
10566
10567
10568
10569
10570
10571
10572
10573
10574
10575
10576
10577
10578
10579
10580
10581
10582
10583
10584
10585
10586
10587
10588
10589
10590
10591
10592
10593
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605
10606
10607
10608
10609
10610
10611
*) To deal with modules being compiled and [dynamically] linked
at a different time from the core, the SERVER_VERSION and
SERVER_BUILT symbols have been abstracted through the new
API routines apapi_get_server_version() and apapi_get_server_built().
[Ken Coar] PR#1448
*) WIN32: Preserve trailing slash in canonical path (and hence
in PATH_INFO). [Paul Sutton, Ben Laurie]
*) PORT: USE_PTHREAD_SERIALIZED_ACCEPT has proven unreliable
depending on the rev of Solaris and what mixture of modules
are in use. So it has been disabled, and Solaris is back to
using USE_FCNTL_SERIALIZED_ACCEPT. Users may experiment with
USE_PTHREAD_SERIALIZED_ACCEPT at their own risk, it may speed
up static content only servers. Or it may fail unpredictably.
[Dean Gaudet] PR#1779, 1854, 1904
*) mod_test_util_uri.c created which tests the logic in util_uri.c.
[Dean Gaudet]
*) API: Rewrite of absoluteURI handling, and in particular how
absoluteURIs match vhosts. Unless a request is a proxy request, a
"http://host" url is treated as if a similar "Host:" header had been
supplied. This change was made to support future HTTP/1.x protocols
which may require clients to send absoluteURIs for all requests.
In order to achieve this change subtle changes were made to the API. In a
request_rec, r->hostlen has been removed. r->unparsed_uri now exists so
that the unmodified uri can be retrieved easily. r->proxyreq is not set
by the core, modules must set it during the post_read_request or
translate_names phase.
Plus changes to the virtualhost test suite for absoluteURI testing.
This fixes several bugs with the proxy proxying requests to vhosts
managed by the same httpd.
[Dean Gaudet]
*) API: Cleanup of code in http_vhost.c, and remove vhost matching
code from mod_rewrite. The vhost matching is now performed by a
globally available function matches_request_vhost(). [Dean Gaudet]
*) Reduce memory usage, and speed up ServerAlias support. As a
side-effect users can list multiple ServerAlias directives
and they're all considered.
*) The "poly" directive in image maps did not include the borders of the
polygon, whereas the "rect" directive does. Fix this inconsistency.
*) Add the `%a' construct to LogFormat and CustomLog to log the client IP
10622
10623
10624
10625
10626
10627
10628
10629
10630
10631
10632
10633
10634
10635
10636
10637
10638
10639
10640
10641
10642
10643
10644
10645
10646
10647
10648
10649
10650
10651
10652
10653
10654
10655
10656
10657
10658
10659
10660
10661
10662
10663
10664
10665
10666
10667
10668
10669
10670
10671
10672
10673
10674
10675
10676
10677
10678
10679
10680
10681
10682
10683
10684
10685
10686
10687
10688
10689
10690
10691
10692
10693
10694
10695
*) API: A new source module main/util_uri.c; It contains a routine
parse_uri_components() and friends which breaks a URI into its component
parts. These parts are stored in a uri_components structure called
parsed_uri within each request_rec, and are available to all modules.
Additionally, an unparse routine is supplied which re-assembles the URI
components back to an URI, optionally hiding the username:password@ part
from ftp proxy requests, and other useful routines. Within the structure,
you find on a ready-for-use basis:
scheme; /* scheme ("http"/"ftp"/...) */
hostinfo; /* combined [user[:password]@]host[:port] */
user; /* user name, as in http://user:passwd@host:port/ */
password; /* password, as in http://user:passwd@host:port/ */
hostname; /* hostname from URI (or from Host: header) */
port_str; /* port string (integer representation is in "port") */
path; /* the request path (or "/" if only scheme://host was given) */
query; /* Everything after a '?' in the path, if present */
fragment; /* Trailing "#fragment" string, if present */
This is meant to serve as the platform for *BIG* savings in
code complexity for the proxy module (and maybe the vhost logic).
[Martin Kraemer]
*) Make all possible meta-construct expansions ($N, %N, %{NAME} and
${map:key}) available for all location where a string is created in
mod_rewrite rewriting rulesets: 1st arg of RewriteCond, 2nd arg of
RewriteRule and for the [E=NAME:STRING] flag of RewriteRule. This way the
possible expansions are consequently usable at all string creation
locations. [Ralf S. Engelschall]
*) Fix initialization of RewriteLogLevel (default now is 0 as documented
and not 1) and the per-virtual-server merging of directives. Now all
directives except `RewriteEngine' and `RewriteOption' are either
completely overridden (default) or completely inherited (when
`RewriteOptions inherit') is used. [Ralf S. Engelschall] PR#1325
*) Fix `RewriteMap' program lookup in situations where such maps are
defined but disabled (`RewriteEngine off') in per-server context.
[Ralf S. Engelschall] PR#1431
*) Fix bug introduced in 1.3b4-dev, config with no Port setting would cause
server to bind to port 0 rather than 80. [Dean Gaudet]
*) Fix long-standing problem with RewriteMap _programs_ under Unix derivates
(like SunOS and FreeBSD) which don't accept the locking of pipes
directly. A new directive RewriteLock is introduced which can be used to
setup a separate locking file which then is used for synchronization.
[Ralf S. Engelschall] PR#1029
*) WIN32: The server root is obtained from the registry key
HKLM\SOFTWARE\Apache Group\Apache\<version> (version is currently
"1.3 beta"), unless overridden by the -d command line flag. The
value is stored by running "apache -i -d serverroot". [Paul Sutton]
*) Merged os/win32/mod_dll.c into modules/standard/mod_so.c to support
dynamic loading on Win32 and Unix via the same module. [Paul Sutton]
*) Now mod_rewrite no longer makes problematic assumptions on the characters
a username can contain when trying to expand it via /etc/passwd.
[Ralf S. Engelschall]
*) The mod_setenvif BrowserMatch backwards compatibility command did not
work properly with spaces in the regex. [Ronald Tschalaer] PR#1825
*) Add new RewriteMap types: First, `rnd' which is equivalent to the `txt'
type but with a special post-processing for the looked-up value: It
parses it into alternatives according to `|' chars and then only one
particular alternative is chosen randomly (this is an essential
functionality needed for balancing between backend-servers when using
Apache as a Reverse Proxy. The looked up value here is a list of
servers). Second, `int' with the built-in maps named `tolower' and
`toupper' which can be used to map URL parts to a fixed case (this is an
essential feature to fix the case of server names when doing mass
virtual-hosting with the help of mod_rewrite instead of using
<VirtualHost> sections). [Ralf S. Engelschall, parts based on code from
10697
10698
10699
10700
10701
10702
10703
10704
10705
10706
10707
10708
10709
10710
10711
10712
10713
*) Add a new directive to mod_proxy similar to ProxyPass: `ProxyPassReverse'.
This directive lets Apache adjust the URL in Location-headers on HTTP
redirect responses sent by the remote server. This way the virtually
mapped area is no longer left on redirects and thus by-passed which is
especially essential when running Apache as a reverse proxy.
[Ralf S. Engelschall]
*) Hide Proxy-Authorization from CGI/SSI/etc just like Authorization is
hidden. [Alvaro Martinez Echevarria]
*) Apache will, when started with the -X (single process) debugging flag,
honor the SIGINT or SIGQUIT signals again now. This capability got lost
a while ago during OS/2 signal handling changes.
*) [PORT] Work around the fact that NeXT runs on more than the
m68k chips in mod_status [Scott Anguish and Timothy Luoma
*) [PORT] Recognize FreeBSD versions so we can use the OS regex as well
as handling unsigned-chars for FreeBSD v3 and v2 [Andrey Chernov
*) Use SA_RESETHAND or SA_ONESHOT when installing the coredump handlers.
In particular the handlers could trigger themselves into an infinite
loop if RLimitMem was used with a small amount of memory -- too small
for the signal stack frame to be set up. [Dean Gaudet]
*) Fix problems with absoluteURIs introduced during 1.3b4. [Dean Gaudet,
*) Fix multiple UserDir problem introduced during 1.3b4-dev.
[Dean Gaudet] PR#1850
*) ap_cpystrn() had an off-by-1 error.
*) API: As Ken suggested the check_cmd_context() function and related
defines are non-static now so modules can use 'em. [Martin Kraemer]
*) mod_info would occasionally produce an unpaired <tt> in its
output. Fixed. [Martin Kraemer]
*) By default AIX binds a process (and it's children) to a single
processor. httpd children now unbind themselves from that cpu
and re-bind to one selected at random via bindprocessor()
[Doug MacEachern]
*) Linux 2.0 and above implement RLIMIT_AS, RLIMIT_DATA has almost no
effect. Work around it by using RLIMIT_AS for the RLimitMEM
*) mod_mime_magic error message should indicate the filename when
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
*) Previously Apache would permit </Files> to end <FilesMatch> (and
similary for Location and Directory), now this is diagnosed as an
error. Improve error messages for mismatched sections (<Files>,
<FilesMatch>, <Directory>, <DirectoryMatch>, ...).
[Dean Gaudet, Martin Kraemer]
*) <Files> is not permitted within <Location> (because of the
semantic ordering). [Dean Gaudet] PR#379
*) <Files> with wildcards was broken by the change in wildcard
semantics (* does not match /). To fix this, <Files> now
apply only to the basename of the request filename. This
fixes some other inconsistencies in <Files> semantics
(such as <Files a*b> not working). [Dean Gaudet] PR#1817
*) Removed bogus "dist.tar" target from Makefile.tmpl and make sure
backup files are removed on "clean" target [Ralf S. Engelschall]
*) PORT: Add -lm to LIBS for HPUX. [Dean Gaudet] PR#1639
*) Various errors from select() and accept() in child_main() would
result in an infinite loop. It seems these two tickle kernel
or library bugs occasionally, and result in log spammage and
a generally bad scene. Now the child exits immediately,
which seems to be a good workaround.
[Dean Gaudet] PR#1747, 1107, 588, 1787, 987, 588
*) Cleaned up some race conditions in unix child_main during
initialization. [Dean Gaudet]
*) SECURITY: "UserDir /abspath" without a * in the path would allow
remote users to access "/~.." and bypass access restrictions
(but note /~../.. was handled properly).
*) API: os_is_path_absolute() now takes a const char * instead of a char *.
[Dean Gaudet]
Changes with Apache 1.3b5
*) Source file dependencies in Makefile.tmpl files throughout the
source tree were updated to accurately reflect reality.
[Dean Gaudet]
*) Preserve the content encoding given by the AddEncoding directive
when the client doesn't otherwise specify an encoding.
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
*) Sort out problems with canonical filename handling happening too late.
[Dean Gaudet, Ben Laurie]
Changes with Apache 1.3b4
*) The module structure was modified to include a *dynamic_load_handle
in the STANDARD_MODULE_STUFF portion, and the MODULE_MAGIC_NUMBER
has been bumped accordingly. [Paul Sutton]
*) All BrowserMatch directives mentioned in
htdocs/manual/known_client_problems.html are in the default
configuration files. [Lars Eilebrecht]
*) MiNT port update. [Jan Paul Schmidt]
*) HTTP/1.1 requires x-gzip and gzip encodings be treated
equivalent, similarly for x-compress and compress. Apache
now ignores a leading x- when comparing encodings. It also
preserves the encoding the client requests (for example if
it requests x-gzip, then Apache will respond with x-gzip
in the Content-Encoding header).
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
*) Fix a memory leak on keep-alive connections. [Igor Tatarinov]
*) Added mod_so module to support dynamic loading of modules on Unix
(like mod_dld for Win32). This replaces mod_dld.c. Use SharedModule
instead of AddModule in Configuration to build shared modules
[Sameer Parekh, Paul Sutton]
*) Minor cleanups to r->finfo handling in some modules.
[Dean Gaudet]
*) Abstract read()/write() to ap_read()/ap_write().
Makes it easier to add other types of IO code such as SFIO.
[Randy Terbush]
*) API: Generalize default_port manipulations to make support of
different protocols easier. [Ben Laurie, Randy Terbush]
*) There are many cases where users do not want Apache to form
self-referential urls using the "canonical" ServerName and Port.
The new UseCanonicalName directive (default on), if set to off
will cause Apache to use the client-supplied hostname and port.
API: Part of this change required a change to the construct_url()
prototype; and the addition of get_server_name() and
get_server_port().
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
PR#315, 459, 485, 1433
*) Yet another rearrangement of the source tree.. now all the common
header files are in the src/include directory. The -Imain -Iap
references in Makefiles have been changed to the simpler -Iinclude
instead. In addition to simplifying the build a little bit, this
also makes it clear when a module is referencing something in a
other than kosher manner (e.g., the proxy including mod_mime.h).
Module-private header files (the proxy, mod_mime, the regex library,
and mod_rewrite) have not been moved to src/include; nor have
the OS-abstraction files. [Ken Coar]
*) Fix a bug where r->hostname didn't have the :port stripped
from it. [Dean Gaudet]
*) Tweaked the headers_out table size, and the subprocess_env
table size guess in rename_original_environment(). Added
MAKE_TABLE_PROFILE which can help discover make_table()
calls that use too small an initial guess, see alloc.c.
[Dean Gaudet]
*) Options and AllowOverride weren't properly merging in the main
server setting inside vhosts (only an issue when you have no
<Directory> or other section containing an Options that affects
a request). Options +foo or -foo in the main_server wouldn't
affect the main_server's lookup defaults. [Dean Gaudet]
*) Variable 'cwd' was being used pointlessly before being set.
[Ken Coar] PR#1738
*) r->allowed handling cleaned up in the standard modules.
[Dean Gaudet]
*) Some case-sensitivity issues cleaned up to be consistent with
RFC2068. [Dean Gaudet]
*) SIGURG doesn't exist everywhere.
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
*) mod_unique_id was erroneously generating a second unique id when
an internal redirect occured. Such redirects occur, for example,
when processing a DirectoryIndex match. [Dean Gaudet]
*) API: table_add, table_merge, and table_set include implicit pstrdup()
of the key and value. But in many cases this is not required
because the key/value is a constant, or the value has been built
by pstrcat() or other similar means. New routines table_addn,
table_mergen, and table_setn have been added to the API, these
routines do not pstrdup() their arguments. The core code and
standard modules were changed to take advantage of these routines.
The resulting server is up to 20% faster in some situations.
Note that it is easy to get code subtly wrong if you pass a key/value
which is in a pool other than the pool of the table. The only
safe thing to do is to pass key/values which are in the pool of
the table, or in one of the ancestors of the pool of the table.
i.e. if the table is part of a subrequest, a value from the main
request's pool is OK since the subrequest pool is a sub_pool of the
main request's pool (and therefore has a lifespan at most as long as
the main pool). There is debugging code which can detect improper
usage, enabled by defining POOL_DEBUG. See alloc.c for more details.
*) More mod_mime_magic cleanup: fewer syscalls; should handle "files"
which don't exist on disk more gracefully; handles vhosts properly.
Update documentation to reflect the code -- if there's no
MimeMagicFile directive then the module is not enabled.
[Dean Gaudet]
*) PORT: Some older *nix dialects cannot automatically start scripts
which begin with a #! interpreter line (the shell starts the scripts
appropriately on these platforms). Apache now supports starting of
"hashbang-scripts" when the NEED_HASHBANG_EMUL define is set.
[Martin Kraemer, with code from Peter Wemm <peter zeus.dialix.oz.au>
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
taken from tcsh]
*) API: "typedef array_header table" removed from alloc.h, folks should
have been writing to use table as if it were an opaque type, but even
some standard modules got this wrong. By changing the definition
to "typedef struct table table" module authors will receive compile
time warnings that they're doing the wrong thing. This change
facilitates future changes with more sophisticated table
structures. Specifically, module authors should be using table_elts()
to get access to an array_header * for the table. [Dean Gaudet]
*) API: Renamed new_connection() to avoid namespace collision with LDAP
library routines. [Ken Coar, Rasmus Lerdorf]
*) WIN32: mod_speling is now available on the Win32 platform.
[Marc Slemko]
*) For clarity the following compile time definition was changed:
SAFE_UNSERIALIZED_ACCEPT -> SINGLE_LISTEN_UNSERIALIZED_ACCEPT
Also, for example, HAVE_MMAP would mean to use mmap() scoreboards
and not be a general notice that the OS has mmap(). Now the
HAVE_MMAP/SHMGET #defines strictly are informational that the
OS has that method of shared memory; the type to use for
the scoreboard is a seperate #define (USE_MMAP_SCOREBOARD
and USE_SHMGET_SCOREBOARD). This allows outside modules to
determine if shared memory is available and allows Apache
to determine the best method to use for the scoreboard.
[Jim Jagielski]
*) PORT: UnixWare 2.1.2 SMP appears to require USE_FCNTL_SERIALIZED_ACCEPT,
as do various earlier versions. It should be safe on all versions.
Unixware 1.x appears to have the same SIGHUP bug as solaris does with
the slack code. A few other cleanups for Unixware.
[Tom Hughes <thh cyberscience.com>] PR#1082, PR#1282, PR#1499, PR#1553
*) PORT: A/UX can handle single-listen accepts without mutex
locking, so we add SINGLE_LISTEN_UNSERIALIZED_ACCEPT. [Jim Jagielski]
*) When die() happens we need to eat any request body if one exists.
Otherwise we can't continue with a keepalive session. This shows up
as a POST problem with MSIE 4.0, typically against pages which are
authenticated. [Roy Fielding] PR#1399
*) If you define SECURITY_HOLE_PASS_AUTHORIZATION then the Authorization
header will be passed to CGIs. This is generally a security hole, so
it's not a default. [Marc Slemko] PR#549
*) Fix Y2K problem with date printing in suexec log.
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
*) WIN32 deserves a pid file. [Ben Hyde]
*) suexec errors now include the errno/description. [Marc Slemko] PR#1543
*) PORT: OSF/1 now uses USE_FLOCK_SERIALIZED_ACCEPT to solve PR#467.
The choice of flock vs. fcntl was made based on timings which showed that
even on non-NFS, non-exported filesystems fcntl() was an order of
magnitude slower. It also uses SINGLE_LISTEN_UNSERIALIZED_ACCEPT so
that single socket users will see no difference. [Dean Gaudet] PR#467
*) "File does not exist" error message was erroneously including the
errno. [Marc Slemko]
*) Improve the warning message generated when a client drops the
connection (hits stop button, etc.) during a send. [Roy Fielding]
*) Defining GPROF will disable profiling in the parent and enable it
in the children. If you're profiling under Linux this is pretty much
necessary because SIGPROF is lost across a fork(). [Dean Gaudet]
*) htdigest and htpasswd needed slight tweaks to work on OS/2 and WIN32.
[Brian Havard]
*) The NeXT cc (which is gcc hacked up) doesn't appear to support some
gcc functionality. Work around it.