Newer
Older
12001
12002
12003
12004
12005
12006
12007
12008
12009
12010
12011
12012
12013
12014
12015
12016
12017
12018
12019
12020
12021
12022
12023
12024
12025
12026
12027
12028
12029
12030
12031
12032
12033
12034
12035
12036
12037
12038
12039
12040
12041
12042
12043
12044
12045
12046
12047
12048
12049
12050
12051
12052
12053
12054
12055
12056
12057
12058
12059
12060
12061
12062
12063
12064
12065
12066
12067
12068
12069
12070
12071
12072
12073
12074
12075
Changes with Apache 1.2.3
*) The request to a remote proxy was mangled if it was generated as the
result of a ProxyPass directive. URL schemes other than http:// were not
supported when ProxyRemote was used. PR#260, PR#656, PR#699, PR#713,
PR#812 [Lars Eilebrecht]
*) Fixed proxy-pass-through feature of mod_rewrite; Added error logging
information for case where proxy module is not available. [Marc Slemko]
*) Force proxy to always respond as HTTP/1.0, which it was failing to
do for errors and cached responses. [Roy Fielding]
*) PORT: Improved support for ConvexOS 11. [Jeff Venters]
Changes with Apache 1.2.2 [not released]
*) Fixed another long-standing bug in sub_req_lookup_file where it would
happily skip past access checks on subdirectories looked up with relative
paths. (It's used by mod_dir, mod_negotiation, and mod_include.)
[Dean Gaudet]
*) Add lockfile name to error message printed out when
USE_FLOCK_SERIALIZED_ACCEPT is defined.
[Marc Slemko]
*) Enhanced the chunking and error handling inside the buffer functions.
[Dean Gaudet, Roy Fielding]
*) When merging the main server's <Directory> and <Location> sections into
a vhost, put the main server's first and the vhost's second. Otherwise
the vhost can't override the main server. [Dean Gaudet] PR#717
*) The <Directory> code would merge and re-merge the same section after
a match was found, possibly causing problems with some modules.
[Dean Gaudet]
*) Fixed an infinite loop in mod_imap for references above the server root.
[Dean Gaudet] PR#748
*) mod_include cleanup showed that handle_else was being used to handle
endif. It didn't cause problems, but it was cleaned up too.
[Howard Fear]
*) Last official synchronization of mod_rewrite with author version (because
mod_rewrite is now directly developed by the author at the Apache Group):
o added diff between mod_rewrite 3.0.6+ and 3.0.9
minus WIN32/NT stuff, but plus copyright removement.
In detail:
- workaround for detecting infinite rewriting loops
- fixed setting of env vars when "-" is used as subst string
- fixed forced response code on redirects (PR#777)
- fixed cases where r->args is ""
- kludge to disable locking on pipes under braindead SunOS
- fix for rewritelog in cases where remote hostname is unknown
- fixed totally damaged request_rec walk-back loop
o remove static from local data and add static to global ones.
o replaced ugly proxy finding stuff by simple
find_linked_module("mod_proxy") call.
o added missing negation char on rewritelog()
o fixed a few comment typos
[Ralf S. Engelschall]
*) Anonymous_LogEmail was logging on each subrequest.
[Dean Gaudet] PR#421, PR#868
*) "force-response-1.0" now only applies to requests which are HTTP/1.0 to
begin with. "nokeepalive" now works for HTTP/1.1 clients. Added
"downgrade-1.0" which causes Apache to pretend it received a 1.0.
Additionally mod_browser now triggers during translate_name to workaround
a deficiency in the header_parse phase.
[Dean Gaudet] PR#875
*) get_client_block() returns wrong length if policy is
REQUEST_CHUNKED_DECHUNK.
*) Properly treat <files> container like other containers in mod_info.
[Marc Slemko] PR#848
*) The proxy didn't treat the "Host:" keyword of the host header as case-
insensitive. The proxy would corrupt the first line of a response from
an HTTP/0.9 server. [Kenichi Hori <ken d2.bs1.fc.nec.co.jp>] PR#813,814
*) mod_include would log some bogus values occasionally.
12087
12088
12089
12090
12091
12092
12093
12094
12095
12096
12097
12098
12099
12100
12101
12102
12103
12104
12105
12106
12107
12108
12109
12110
12111
12112
12113
12114
12115
12116
12117
12118
12119
12120
12121
12122
12123
12124
12125
12126
12127
12128
12129
12130
12131
12132
12133
12134
12135
12136
12137
12138
12139
12140
12141
12142
12143
12144
12145
12146
12147
12148
12149
12150
12151
12152
12153
12154
12155
12156
12157
12158
12159
12160
12161
12162
12163
12164
12165
12166
12167
12168
12169
12170
12171
12172
*) PORT: The slack fd changes in 1.2.1 introduced a problem with SIGHUP
under Solaris 2.x (up through 2.5.1). It has been fixed.
[Dean Gaudet] PR#832
*) API: In HTTP/1.1, whether or not a request message contains a body
is independent of the request method and based solely on the presence
of a Content-Length or Transfer-Encoding. Therefore, our default
handlers need to be prepared to read a body even if they don't know
what to do with it; otherwise, the body would be mistaken for the
next request on a persistent connection. discard_request_body()
has been added to take care of that. [Roy Fielding] PR#378
*) API: Symbol APACHE_RELEASE provides a numeric form of the Apache
release version number, such that it always increases along the
same lines as our source code branching. [Roy Fielding]
*) Minor oversight on multiple variants fixed. [Paul Sutton] PR#94
Changes with Apache 1.2.1
*) SECURITY: Don't serve file system objects unless they are plain files,
symlinks, or directories. This prevents local users from using pipes
or named sockets to invoke programs for an extremely crude form of
CGI. [Dean Gaudet]
*) SECURITY: HeaderName and ReadmeName were settable in .htaccess and
could contain "../" allowing a local user to "publish" any file on
the system. No slashes are allowed now. [Dean Gaudet]
*) SECURITY: It was possible to violate the symlink Options using mod_dir
(headers, readmes, titles), mod_negotiation (type maps), or
mod_cern_meta (meta files). [Dean Gaudet]
*) SECURITY: Apache will refuse to run as "User root" unless
BIG_SECURITY_HOLE is defined at compile time. [Dean Gaudet]
*) CONFIG: If a symlink pointed to a directory then it would be disallowed
if it contained a .htaccess disallowing symlinks. This is contrary
to the rule that symlink permissions are tested with the symlink
options of the parent directory. [Dean Gaudet] PR#353
*) CONFIG: The LockFile directive can be used to place the serializing
lockfile in any location. It previously defaulted to /usr/tmp/htlock.
[Somehow it took four of us: Randy Terbush, Jim Jagielski, Dean Gaudet,
Marc Slemko]
*) Request processing now retains state of whether or not the request
body has been read, so that internal redirects and subrequests will
not try to read it twice (and block). [Roy Fielding]
*) Add a placeholder in modules/Makefile to avoid errors with certain
makes. [Marc Slemko]
*) QUERY_STRING was unescaped in mod_include, it shouldn't be.
[Dean Gaudet] PR#644
*) mod_include was not properly changing the current directory.
[Marc Slemko] PR#742
*) Attempt to work around problems with third party libraries that do not
handle high numbered descriptors (examples include bind, and
solaris libc). On all systems apache attempts to keep all permanent
descriptors above 15 (called the low slack line). Solaris users
can also benefit from adding -DHIGH_SLACK_LINE=256 to EXTRA_CFLAGS
which keeps all non-FILE * descriptors above 255. On all systems
this should make supporting large numbers of vhosts with many open
log files more feasible. If this causes trouble please report it,
you can disable this workaround by adding -DNO_SLACK to EXTRA_CFLAGS.
[Dean Gaudet] various PRs
*) Related to the last entry, network sockets are now opened before
log files are opened. The only known case where this can cause
problems is under Solaris with many virtualhosts and many Listen
directives. But using -DHIGH_SLACK_LINE=256 described above will
work around this problem. [Dean Gaudet]
*) USE_FLOCK_SERIALIZED_ACCEPT is now default for FreeBSD, A/UX, and
SunOS 4.
*) Improved unix error response logging. [Marc Slemko]
*) Update mod_rewrite from 3.0.5 to 3.0.6. New ruleflag
QSA=query_string_append. Also fixed a nasty bug in per-dir context:
when a URL http://... was used in conjunction with a special
redirect flag, e.g. R=permanent, the permanent status was lost.
[Ronald Tschalaer <Ronald.Tschalaer psi.ch>, Ralf S. Engelschall]
*) If an object has multiple variants that are otherwise equal Apache
would prefer the last listed variant rather than the first.
[Paul Sutton] PR#94
*) "make clean" at the top level now removes *.o. [Dean Gaudet] PR#752
*) mod_status dumps core in inetd mode. [Marc Slemko and Roy Fielding]
PR#566
*) pregsub had an off-by-1 in its error checking code. [Alexei Kosut]
*) PORT: fix rlim_t problems with AIX 4.2. [Marc Slemko] PR#333
*) PORT: Update UnixWare support for 2.1.2.
*) PORT: NonStop-UX [Joachim Schmitz <schmitz_joachim tandem.com>] PR#327
*) PORT: Update ConvexOS support for 11.5.
*) PORT: Support for DEC cc compiler under ULTRIX.
12198
12199
12200
12201
12202
12203
12204
12205
12206
12207
12208
12209
12210
12211
12212
12213
12214
12215
12216
12217
12218
12219
12220
12221
12222
12223
12224
12225
12226
12227
12228
12229
12230
12231
12232
*) PORT: Support for Maxion/OS SVR4.2 Real Time Unix. [no name given] PR#383
*) PORT: Workaround for AIX 3.x compiler bug in http_bprintf.c.
[Marc Slemko] PR#725
*) PORT: fix problem compiling http_bprintf.c with gcc under SCO
[Marc Slemko] PR#695
Changes with Apache 1.2
Changes with Apache 1.2b11
*) Fixed open timestamp fd in proxy_cache.c [Chuck Murcko]
*) Added undocumented perl SSI mechanism for -DUSE_PERL_SSI and mod_perl.
[Doug MacEachern, Rob Hartill]
*) Proxy needs to use hard_timeout instead of soft_timeout when it is
reading from one buffer and writing to another, at least until it has
a custom timeout handler. [Roy Fielding and Petr Lampa]
*) Fixed problem on IRIX with servers hanging in IdentityCheck,
apparently due to a mismatch between sigaction and setjmp.
[Roy Fielding] PR#502
*) Log correct status code if we timeout before receiving a request (408)
or if we received a request-line that was too long to process (414).
[Ed Korthof and Roy Fielding] PR#601
*) Virtual hosts with the same ServerName, but on different ports, were
not being selected properly. [Ed Korthof]
*) Added code to return the requested IP address from proxy_host2addr()
if gethostbyaddr() fails due to reverse DNS lookup problems. Original
12234
12235
12236
12237
12238
12239
12240
12241
12242
12243
12244
12245
12246
12247
12248
12249
12250
12251
12252
12253
12254
12255
12256
12257
12258
12259
12260
12261
12262
12263
12264
12265
12266
12267
12268
12269
12270
12271
12272
12273
12274
12275
12276
12277
12278
12279
12280
12281
12282
12283
12284
12285
12286
12287
12288
12289
12290
12291
12292
12293
12294
12295
12296
12297
12298
12299
12300
12301
12302
12303
12304
12305
12306
12307
12308
12309
12310
12311
12312
12313
12314
12315
12316
12317
12318
12319
12320
12321
12322
12323
12324
12325
12326
12327
12328
12329
12330
12331
12332
12333
12334
12335
12336
12337
12338
12339
12340
12341
12342
12343
12344
12345
12346
12347
12348
12349
12350
12351
12352
12353
12354
12355
12356
12357
12358
12359
12360
12361
12362
12363
12364
12365
12366
12367
12368
12369
12370
12371
12372
12373
12374
12375
12376
12377
12378
12379
12380
12381
12382
12383
12384
12385
12386
12387
12388
12389
12390
12391
12392
12393
12394
12395
12396
12397
12398
12399
12400
12401
12402
12403
12404
12405
12406
12407
12408
12409
12410
12411
12412
12413
12414
12415
12416
12417
12418
12419
12420
12421
12422
12423
12424
12425
12426
12427
12428
12429
12430
12431
12432
12433
12434
12435
12436
12437
12438
12439
12440
12441
12442
12443
12444
12445
12446
12447
12448
12449
12450
12451
12452
12453
12454
12455
12456
12457
12458
12459
12460
12461
12462
12463
12464
12465
12466
12467
12468
12469
12470
12471
12472
12473
12474
12475
12476
12477
12478
12479
12480
12481
12482
12483
12484
12485
12486
12487
12488
12489
12490
12491
12492
12493
12494
12495
12496
12497
12498
12499
12500
12501
12502
12503
12504
12505
12506
12507
12508
12509
12510
12511
12512
12513
12514
12515
12516
12517
12518
12519
12520
12521
12522
12523
12524
12525
12526
12527
12528
12529
12530
12531
12532
12533
12534
12535
12536
12537
12538
12539
12540
12541
12542
12543
12544
12545
12546
12547
12548
12549
12550
12551
12552
12553
12554
12555
12556
12557
12558
12559
12560
12561
12562
12563
12564
12565
12566
12567
[Chuck Murcko] PR#614
*) If multiple requests on a single connection are used to retrieve
data from different virtual hosts, the virtual host list would be
scanned starting with the most recently used VH instead of the first,
causing most virtual hosts to be ignored.
[Paul Sutton and Martin Mares] PR#610
*) The OS/2 handling of process group was broken by a porting patch for
MPE, so restored prior code for OS/2. [Roy Fielding and Garey Smiley]
*) Inherit virtual server port from main server if none (or "*") is
given for VirtualHost. [Dean Gaudet] PR#576
*) If the lookup for a DirectoryIndex name with content negotiation
has found matching variants, but none are acceptable, return the
negotiation result if there are no more DirectoryIndex names to lookup.
[Petr Lampa and Roy Fielding]
*) If a soft_timeout occurs after keepalive is set, then the main child
loop would try to read another request even though the connection
has been aborted. [Roy Fielding]
*) Configure changes: Allow for whitespace at the start of a
Module declaration. Also, be more understanding about the
CC=/OPTIM= format in Configuration. Finally, fix compiler
flags if using HP-UX's cc compiler. [Jim Jagielski]
*) Subrequests and internal redirects now inherit the_request from the
original request-line. [Roy Fielding]
*) Test for error conditions before creating output header fields, since
we don't want the error message to include those fields. Likewise,
reset the content_language(s) and content_encoding of the response
before generating or redirecting to an error message, since the new
message will have its own Content-* definitions. [Dean Gaudet]
*) Restored the semantics of headers_out (headers sent only with 200..299
and 304 responses) and err_headers_out (headers sent with all responses).
Avoid the overhead of copying tables if err_headers_out is empty
(the usual case). [Roy Fielding]
*) Fixed a couple places where a check for the default Content-Type was
not properly checking both the value configured by the DefaultType
directive and the DEFAULT_TYPE symbol in httpd.h. Changed the value
of DEFAULT_TYPE to match the documented default (text/plain).
[Dean Gaudet] PR#506
*) Escape the HTML-sensitive characters in the Request-URI that is
output for each child by mod_status. [Dean Gaudet and Ken Coar] PR#501
*) Properly initialize the flock structures used by the mutex locking
around accept() when USE_FCNTL_SERIALIZED_ACCEPT is defined.
[Marc Slemko]
*) The method for determining PATH_INFO has been restored to the pre-1.2b
(and NCSA httpd) definition wherein it was the extra path info beyond
the CGI script filename. The environment variable FILEPATH_INFO has
been removed, and instead we supply the original REQUEST_URI to any
script that wants to be Apache-specific and needs the real URI path.
This solves a problem with existing scripts that use extra path info
in the ScriptAlias directive to pass options to the CGI script.
[Roy Fielding]
*) The _default_ change in 1.2b10 will change the behaviour on configs
that use multiple Listen statements for listening on multiple ports.
But that change is necessary to make _default_ consistent with other
forms of <VirtualHost>. It requires such configs to be modified
to use <VirtualHost _default_:*>. The documentation has been
updated. [Dean Gaudet] PR#530
*) If an ErrorDocument CGI script is used to respond to an error
generated by another CGI script which has already read the message
body of the request, the server would block trying to read the
message body again. [Rob Hartill]
*) signal() replacement conflicted with a define on QNX (and potentially
other platforms). Fixed. [Ben Laurie] PR#512
Changes with Apache 1.2b10
*) Allow HTTPD_ROOT, SERVER_CONFIG_FILE, DEFAULT_PATH, and SHELL_PATH
to be configured via -D in Configuration. [Dean Gaudet] PR#449
*) <VirtualHost _default_:portnum> didn't work properly. [Dean Gaudet]
*) Added prototype for mktemp() for SUNOS4 [Marc Slemko]
*) In mod_proxy.c, check return values for proxy_host2addr() when reading
config, in case the hostent struct returned is trash.
[Chuck Murcko] PR #491
*) Fixed the fix in 1.2b9 for parsing URL query info into args for CGI
scripts. [Dean Gaudet, Roy Fielding, Marc Slemko]
Changes with Apache 1.2b9 [never announced]
*) Reset the MODULE_MAGIC_NUMBER to account for the unsigned port
changes and in anticipation of 1.2 final release. [Roy Fielding]
*) Fix problem with scripts not receiving a SIGPIPE when client drops
the connection (e.g., when user presses Stop). Apache will now stop
trying to send a message body immediately after an error from write.
[Roy Fielding and Nathan Kurz] PR#335
*) Rearrange Configuration.tmpl so that mod_rewrite has higher priority
than mod_alias, and mod_alias has higher priority than mod_proxy;
rearranged other modules to enhance understanding of their purpose
and relative order (and maybe even reduce some overhead).
[Roy Fielding and Sameer Parekh]
*) Fix graceful restart. Eliminate many signal-related race
conditions in both forms of restart, and in SIGTERM. See
htdocs/manual/stopping.html for details on stopping and
restarting the parent. [Dean Gaudet]
*) Fix memory leaks in mod_rewrite, mod_browser, mod_include. Tune
memory allocator to avoid a behaviour that required extra blocks to
be allocated. [Dean Gaudet]
*) Allow suexec to access files relative to current directory but not
above. (Excluding leading / or any .. directory.) [Ken Coar]
PR#269, 319, 395
*) Fix suexec segfault when group doesn't exist. [Gregory Neil Shapiro]
PR#367, 368, 354, 453
*) Fix the above fix: if suexec is enabled, avoid destroying r->url
while obtaining the /~user and save the username in a separate data
area so that it won't be overwritten by the call to getgrgid(), and
fix some misuse of the pool string allocation functions. Also fixes
a general problem with parsing URL query info into args for CGI scripts.
[Roy Fielding] PR#339, 367, 354, 453
*) Fix IRIX warning about bzero undefined. [Marc Slemko]
*) Fix problem with <Directory proxy:...>. [Martin Kraemer] PR#271
*) Corrected spelling of "authoritative". AuthDBAuthoratative became
AuthDBAuthoritative. [Marc Slemko] PR#420
*) MaxClients should be at least 1. [Lars Eilebrecht] PR#375
*) The default handler now logs invalid methods or URIs (i.e. PUT on an
object that can't be PUT, or FOOBAR for some method FOOBAR that
apache doesn't know about at all). Log 404s that occur in mod_include.
[Paul Sutton, John Van Essen]
*) If a soft timeout (or lingerout) occurs while trying to flush a
buffer or write inside buff.c or fread'ing from a CGI's output,
then the timeout would be ignored. [Roy Fielding] PR#373
*) Work around a bug in Netscape Navigator versions 2.x, 3.x and 4.0b2's
parsing of headers. If the terminating empty-line CRLF occurs starting
at the 256th or 257th byte of output, then Navigator will think a normal
image is invalid. We are guessing that this is because their initial
read of a new request uses a 256 byte buffer. We check the bytes written
so far and, if we are about to tickle the bug, we instead insert a
padding header of eminent bogosity. [Roy Fielding and Dean Gaudet] PR#232
*) Fixed SIGSEGV problem when a DirectoryIndex file is also the source
of an external redirection. [Roy Fielding and Paul Sutton]
*) Configure would create a broken Makefile if the configuration file
contained a commented-out Rule. [Roy Fielding]
*) Promote per_dir_config and subprocess_env from the subrequest to the
main request in mod_negotiation. In particular this fixes a bug
where <Files> sections wouldn't properly apply to negotiated content.
[Dean Gaudet]
*) Fix a potential deadlock in mod_cgi script_err handling.
[Ralf S. Engelschall]
*) rotatelogs zero-pads the logfile names to improve alphabetic sorting.
[Mitchell Blank Jr]
*) Updated mod_rewrite to 3.0.4: Fixes HTTP redirects from within
.htaccess files because the RewriteBase was not replaced correctly.
Updated mod_rewrite to 3.0.5: Fixes problem with rewriting inside
<Directory> sections missing a trailing /. [Ralf S. Engelschall]
*) Clean up Linux settings in conf.h by detecting 2.x versus 1.x. For
1.x the settings are those of pre-1.2b8. For 2.x we include
USE_SHMGET_SCOREBOARD (scoreboard in shared memory rather than file) and
HAVE_SYS_RESOURCE_H (enable the RLimit commands).
[Dean Gaudet] PR#336, PR#340
*) Redirect did not preserve ?query_strings when present in the client's
request. [Dean Gaudet]
*) Configure was finding non-modules on EXTRA_LIBS. [Frank Cringle] PR#380
*) Use /bin/sh5 on ULTRIX. [P. Alejandro Lopez-Valencia] PR#369
*) Add UnixWare compile/install instructions. [Chuck Murcko]
*) Add mod_example (illustration of API techniques). [Ken Coar]
*) Add macro for memmove to conf.h for SUNOS4. [Marc Slemko]
*) Improve handling of directories when filenames have spaces in them.
[Chuck Murcko]
*) For hosts with multiple IP addresses, try all additional addresses if
necessary to get a connect. Fail only if hostent address list is
exhausted. [Chuck Murcko]
*) More signed/unsigned port fixes. [Dean Gaudet]
*) HARD_SERVER_LIMIT can be defined in the Configuration file now.
[Dean Gaudet]
Changes with Apache 1.2b8
*) suexec.c doesn't close the log file, allowing CGIs to continue writing
to it. [Marc Slemko]
*) The addition of <Location> and <File> directives made the
sub_req_lookup_simple() function bogus, so we now handle
the special cases directly. [Dean Gaudet]
*) We now try to log where the server is dumping core when a fatal
signal is received. [Ken Coar]
*) Improved lingering_close by adding a special timeout, removing the
spurious log messages, removing the nonblocking settings (they
are not needed with the better timeout), and adding commentary
about the NO_LINGCLOSE and USE_SO_LINGER issues. NO_LINGCLOSE is
now the default for SunOS4, UnixWare, NeXT, and IRIX. [Roy Fielding]
*) Send error messages about setsockopt failures to the server error
log instead of stderr. [Roy Fielding]
*) Fix loopholes in proxy cache expiry vis a vis alarms. [Brian Moore]
*) Stopgap solution for CGI 3-second delay with server-side includes: if
processing a subrequest, allocate memory from r->main->pool instead
of r->pool so that we can avoid waiting for free_proc_chain to cleanup
in the middle of an SSI request. [Dean Gaudet] PR #122
*) Fixed status of response when POST is received for a nonexistent URL
(was sending 405, now 404) and when any method is sent with a
full-URI that doesn't match the server and the server is not acting
as a proxy (was sending 501, now 403). [Roy Fielding]
*) Host port changed to unsigned short. [Ken Coar] PR #276
*) Fix typo in command definition of AuthAuthoritative. [Ken Coar] PR #246
*) Defined USE_SHMGET_SCOREBOARD for shared memory on Linux. [Dean Gaudet]
*) Report extra info from errno with many errors that cause httpd to exit.
spawn_child, popenf, and pclosef now have valid errno returns in the
event of an error. Correct problems where errno was stomped on
before being reported. [Dean Gaudet]
*) In the proxy, if the cache filesystem was full, garbage_coll() was
never called, and thus the filesystem would remain full indefinitely.
We now also remove incomplete cache files left if the origin server
didn't send a Content-Length header and either the client has aborted
transfer or bwrite() to client has failed. [Petr Lampa]
*) Fixed the handling of module and script-added header fields.
Improved the interface for sending header fields and reduced
the duplication of code between sending okay responses and errors.
We now always send both headers_out and err_headers_out, and
ensure that the server-reserved fields are not being overridden,
while not overriding those that are not reserved. [Roy Fielding]
*) Moved transparent content negotiation fields to err_headers_out
to reflect above changes. [Petr Lampa]
*) Fixed the determination of whether or not we should make the
connection persistent for all of the cases where some other part
of the server has already indicated that we should not. Also
improved the ordering of the test so that chunked encoding will
be set whenever it is desired instead of only when KeepAlive
is enabled. Added persistent connection capability for most error
responses (those that do not indicate a bad input stream) when
accessed by an HTTP/1.1 client. [Roy Fielding]
*) Added missing timeouts for sending header fields, error responses,
and the last chunk of chunked encoding, each of which could have
resulted in a process being stuck in write forever. Using soft_timeout
requires that the sender check for an aborted connection rather than
continuing after an EINTR. Timeouts that used to be initiated before
send_http_header (and never killed) are now initiated only within or
around the routines that actually do the sending, and not allowed to
propagate above the caller. [Roy Fielding]
*) mod_auth_anon required an @ or a . in the email address, not both.
[Dirk vanGulik]
*) per_dir_defaults weren't set correctly until directory_walk for
name-based vhosts. This fixes an obscure bug with the wrong config
info being used for vhosts that share the same ip as the server.
[Dean Gaudet]
*) Improved generation of modules/Makefile to be more generic for
new module directories. [Ken Coar, Chuck Murcko, Roy Fielding]
*) Generate makefile dependency for Configuration based on the actual
name given when running the Configure process. [Dean Gaudet]
*) Fixed problem with vhost error log not being set prior to
initializing virtual hosts. [Dean Gaudet]
*) Fixed infinite loop when a trailing slash is included after a type map
file URL (extra path info). [Petr Lampa]
*) Fixed server status updating of per-connection counters. [Roy Fielding]
*) Add documentation for DNS issues (reliability and security), and try
to explain the virtual host matching process. [Dean Gaudet]
*) Try to continue gracefully by disabling the vhost if a DNS lookup
fails while parsing the configuration file. [Dean Gaudet]
*) Improved calls to setsockopt. [Roy Fielding]
*) Negotiation changes: Don't output empty content-type in variant list;
Output charset in variant list; Return sooner from handle_multi() if
no variants found; Add handling of '*' wildcard in Accept-Charset.
[Petr Lampa and Paul Sutton]
*) Fixed overlaying of request/sub-request notes and headers in
mod_negotiation. [Dean Gaudet]
*) If two variants' charset quality are equal and one is the default
charset (iso-8859-1), then prefer the variant that was specifically
listed in Accept-Charset instead of the default. [Petr Lampa]
*) Memory allocation problem in push_array() -- it would corrupt memory
12569
12570
12571
12572
12573
12574
12575
12576
12577
12578
12579
12580
12581
12582
12583
12584
12585
12586
12587
12588
12589
12590
12591
12592
12593
12594
12595
12596
12597
12598
12599
12600
12601
12602
12603
12604
12605
12606
12607
12608
12609
12610
12611
12612
12613
12614
12615
12616
12617
12618
12619
12620
12621
12622
12623
12624
12625
12626
12627
12628
12629
12630
12631
*) invoke_handler() doesn't handle mime arguments in content-type
[Petr Lampa] PR#160
*) Reduced IdentityCheck timeout to 30 seconds, as per RFC 1413 minimum.
[Ken Coar]
*) Fixed problem with ErrorDocument not working for virtual hosts
due to one of the performance changes in 1.2b7. [Dean Gaudet]
*) Log an error message if we get a request header that is too long,
since it may indicate a buffer overflow attack. [Marc Slemko]
*) Made is_url() allow "[-.+a-zA-Z0-9]+:" as a valid scheme and
not reject URLs without a double-slash, as per RFC2068 section 3.2.
[Ken Coar] PR #146, #187
*) Added table entry placeholder for new header_parser callback
in all of the distributed modules. [Ken Coar] PR #191
*) Allow for cgi files without the .EXE extension on them under OS/2.
[Garey Smiley] PR #59
*) Fixed error message when resource is not found and URL contains
path info. [Petr Lampa and Dean Gaudet] PR #40
*) Fixed user and server confusion over what should be a virtual host
and what is the main server, resulting in access to something
other than the name defined in the virtualhost directive (but
with the same IP address) failing. [Dean Gaudet]
*) Updated mod_rewrite to version 3.0.2, which: fixes compile error on
AIX; improves the redirection stuff to enable the users to generally
redirect to http, https, gopher and ftp; added TIME variable for
RewriteCond which expands to YYYYMMDDHHMMSS strings and added the
special patterns >STRING, <STRING and =STRING to RewriteCond, which
can be used in conjunction with %{TIME} or other variables to create
time-dependent rewriting rules. [Ralf S. Engelschall]
*) bpushfd() no longer notes cleanups for the file descriptors it is handed.
Module authors may need to adjust their code for proper cleanup to take
place (that is, call note_cleanups_for_fd()). This change fixes problems
with file descriptors being erroneously closed when the proxy module was
in use. [Ben Laurie]
*) Fix bug in suexec reintroduced by changes in 1.2b7 which allows
initgroups() to hose the group information needed for later
comparisons. [Randy Terbush]
*) Remove unnecessary call to va_end() in create_argv() which
caused a SEGV on some systems.
*) Use proper MAXHOSTNAMELEN symbol for limiting length of server name.
[Dean Gaudet]
*) Clear memory allocated for listeners. [Randy Terbush]
*) Improved handling of IP address as a virtualhost address and
introduced "_default_" as a synonym for the default vhost config.
[Dean Gaudet] PR #212
Changes with Apache 1.2b7
12633
12634
12635
12636
12637
12638
12639
12640
12641
12642
12643
12644
12645
12646
12647
12648
12649
12650
12651
12652
12653
12654
12655
12656
12657
12658
12659
12660
12661
12662
12663
12664
12665
12666
*) unset Content-Length if chunked (RFC-2068) [Petr Lampa]
*) mod_negotiation fixes [Petr Lampa] PR#157, PR#158, PR#159
- replace protocol response numbers with symbols
- save variant-list into main request notes
- free allocated memory from subrequests
- merge notes, headers_out and err_headers_out
*) changed status check mask in proxy_http.c from "HTTP/#.# ### *" to
"HTTP/#.# ###*" to be more lenient about what we accept.
[Chuck Murcko]
*) more proxy FTP bug fixes:
- Changed send_dir() to remove user/passwd from displayed URL.
- Changed login error messages to be more descriptive.
- remove setting of SO_DEBUG socket option
- Make ftp_getrc() more lenient about multiline responses,
specifically, 230 responses which don't have continuation 230-
on each line). These seem to be all NT FTP servers, and while
perhaps questionable, they appear to be legal by RFC 959.
- Add missing kill_timeout() after transfer to user completes.
[Chuck Murcko]
*) Fixed problem where a busy server could hang when restarting
after being sent a SIGHUP due to child processes not exiting.
[Marc Slemko]
*) Modify mod_include escaping so a '\' only signifies an escaped
character if the next character is one that needs
escaping. [Ben Laurie]
*) Eliminated possible infinite loop in mod_imap when relative URLs are
used with a 'base' directive that does not have a '/' in it.
12668
12669
12670
12671
12672
12673
12674
12675
12676
12677
12678
12679
12680
12681
12682
12683
12684
12685
12686
12687
12688
12689
12690
12691
12692
12693
12694
12695
12696
12697
12698
12699
12700
12701
12702
12703
12704
12705
12706
12707
12708
12709
12710
12711
12712
12713
12714
*) Reduced the default timeout from 1200 seconds to 300, and the
one in the sample configfile from 400 to 300. [Marc Slemko]
*) Stop vbprintf from crashing if given a NULL string pointer;
print (null) instead. [Ken Coar]
*) Don't disable Nagle algorithm if system doesn't have TCP_NODELAY.
[Marc Slemko and Roy Fielding]
*) Fixed problem with mod_cgi-generated internal redirects trying to
read the request message-body twice. [Archie Cobbs and Roy Fielding]
*) Reduced timeout on lingering close, removed possibility of a blocked
read causing the child to hang, and stopped logging of errors if
the socket is not connected (reset by client). [Roy Fielding]
*) Rearranged main child loop to remove duplication of code in
select/accept and keep-alive requests, fixed several bugs regarding
checking scoreboard_image for exit indication and failure to
account for all success conditions and trap all error conditions,
prevented multiple flushes before closing the socket; close the entire
socket buffer instead of just one descriptor, prevent logging of
EPROTO and ECONNABORTED on platforms where supported, and generally
improved readability. [Roy Fielding]
*) Extensive performance improvements. Cleaned up inefficient use of
auto initializers, multiple is_matchexp calls on a static string,
and excessive merging of response_code_strings. [Dean Gaudet]
*) Added double-buffering to mod_include to improve performance on
server-side includes. [Marc Slemko]
*) Several fixes for suexec wrapper. [Randy Terbush]
- Make wrapper work for files on NFS filesystem.
- Fix portability problem of MAXPATHLEN.
- Fix array overrun problem in clean_env().
- Fix allocation of PATH environment variable
*) Removed extraneous blank line is description of mod_status chars.
[Kurt Kohler]
*) Logging of errors from the call_exec routine simply went nowhere,
since the logfile fd has been closed, so now we send them to stderr.
[Harald T. Alvestrand]
*) Fixed core dump when DocumentRoot is a CGI.
12716
12717
12718
12719
12720
12721
12722
12723
12724
12725
12726
12727
12728
12729
12730
12731
12732
12733
12734
12735
12736
12737
12738
12739
12740
12741
12742
12743
12744
12745
12746
12747
12748
*) Fixed potential file descriptor leak in mod_asis; updated it and
http_core to use pfopen/pfclose instead of fopen/fclose.
[Randy Terbush and Roy Fielding]
*) Fixed handling of unsigned ints in ap_snprintf() on some chips such
as the DEC Alpha which is 64-bit but uses 32-bit ints.
[Dean Gaudet and Ken Coar]
*) Return a 302 response code to the client when sending a redirect
due to a missing trailing '/' on a directory instead of a 301; now
it is cacheable. [Markus Gyger]
*) Fix condition where, if a bad directive occurs in .htaccess, and
sub_request() goes first to this directory, then log_reason() will
SIGSEGV because it doesn't have initialized r->per_dir_config.
[PR#162 from Petr Lampa, fix by Marc Slemko and Dean Gaudet]
*) Fix handling of lang_index in is_variant_better(). This was
causing problems which resulted in the server sending the
wrong language document in some cases. [Petr Lampa]
*) Remove free() from clean_env() in suexec wrapper. This was nuking
the clean environment on some systems.
*) Tweak byteserving code (e.g. serving PDF files) to work around
bugs in Netscape Navigator and Microsoft Internet Explorer.
Emit Content-Length header when sending multipart/byteranges.
[Alexei Kosut]
*) Port to HI-UX/WE2. [Nick Maclaren]
*) Port to HP MPE operating system for HP 3000 machines
12750
12751
12752
12753
12754
12755
12756
12757
12758
12759
12760
12761
12762
12763
12764
12765
12766
12767
12768
12769
12770
12771
12772
12773
12774
12775
12776
12777
12778
12779
12780
12781
12782
12783
12784
12785
12786
12787
12788
12789
12790
12791
12792
12793
12794
12795
12796
12797
12798
12799
12800
12801
12802
12803
12804
12805
12806
12807
12808
12809
12810
12811
12812
12813
12814
12815
12816
12817
12818
12819
12820
12821
12822
12823
12824
12825
12826
12827
12828
12829
12830
12831
12832
12833
12834
12835
12836
12837
12838
12839
12840
12841
12842
12843
12844
12845
12846
12847
12848
12849
12850
12851
12852
12853
12854
12855
12856
12857
12858
12859
12860
12861
12862
12863
12864
12865
12866
12867
12868
12869
12870
12871
12872
12873
12874
12875
12876
12877
12878
12879
12880
12881
12882
12883
12884
12885
12886
12887
12888
12889
12890
12891
12892
12893
12894
12895
12896
12897
*) Fixed bug which caused a segmentation fault if only one argument
given to RLimit* directives. [Ed Korthof]
*) Continue persistent connection after 204 or 304 response. [Dean Gaudet]
*) Improved buffered output to the client by delaying the flush decision
until the BUFF code is actually about to read the next request.
This fixes a problem introduced in 1.2b5 with clients that send
an extra CRLF after a POST request. Also improved chunked output
performance by combining writes using writev() and removing as
many bflush() calls as possible. NOTE: Platforms without writev()
must add -DNO_WRITEV to the compiler CFLAGS, either in Configuration
or Configure, unless we have already done so. [Dean Gaudet]
*) Fixed mod_rewrite bug which truncated the rewritten URL [Marc Slemko]
*) Fixed mod_info output corruption bug introduced by buffer overflow
fixes. [Dean Gaudet]
*) Fixed http_protocol to correctly output all HTTP/1.1 headers, including
for the special case of a 304 response. [Paul Sutton]
*) Improved handling of TRACE method by bypassing normal method handling
and header parsing routines; fixed Allow response to always allow TRACE.
[Dean Gaudet]
*) Fixed compiler warnings in the regex library. [Dean Gaudet]
*) Cleaned-up some of the generated HTML. [Ken Coar]
Changes with Apache 1.2b6
*) Allow whitespace in imagemap mapfile coordinates. [Marc Slemko]
*) Fix typo introduced in fix for potential infinite loop around
accept() in child_main(). This change caused the rev to 1.2b6.
1.2b5 was never a public beta.
Changes with Apache 1.2b5
*) Change KeepAlive semantics (On|Off instead of a number), add
MaxKeepAliveRequests directive. [Alexei Kosut]
*) Various NeXT compilation patches, as well as a change in
regex/regcomp.c since that file also used a NEXT define.
[Andreas Koenig]
*) Allow * to terminate the end of a directory match in mod_dir.
Allows /~* to match for both /~joe and /~joe/. [David Bronder]
*) Don't call can_exec() if suexec_enabled. Calling this requires
scripts executed by the suexec wrapper to be world executable, which
defeats one of the advantages of running the wrapper. [Randy Terbush]
*) Portability Fix: IRIX complained with 'make clean' about *pure* (removed)
[Jim Jagielski]
*) Migration from sprintf() to snprintf() to avoid buffer
overflows. [Marc Slemko]
*) Provide portable snprintf() implementation (ap_snprintf)
as well as *cvt family. [Jim Jagielski]
*) Portability Fix: NeXT lacks unistd.h so we wrap it's inclusion
[Jim Jagielski]
*) Remove mod_fastcgi.c from the distribution. This module appears
to be maintained more through the Open Market channels and should
continue to be easily available at http://www.fastcgi.com/
*) Fixed bug in modules/Makefile that wouldn't allow building in more
than one subdirectory (or cleaning, either). [Jeremy Laidman]
*) mod_info assumed that the config files were relative to ServerRoot.
[Ken the Rodent]
*) CGI scripts called as an error document resulting from failed
CGI execution would hang waiting for POST'ed data. [Rob Hartill]
*) Log reason when mod_dir returns access HTTP_FORBIDDEN
[Ken the Rodent]
*) Properly check errno to prevent display of a directory index
when server receives a long enough URL to confuse stat().
[Marc Slemko]
*) Several security enhancements to suexec wrapper. It is _highly_
recommended that previously installed versions of the wrapper
be replaced with this version. [Randy Terbush, Jason Dour]
- ~user execution now properly restricted to ~user's home
directory and below.
- execution restricted to UID/GID > 100
- restrict passed environment to known variables
- call setgid() before initgroups() (portability fix)
- remove use of setenv() (portability fix)
*) Add HTTP/1.0 response forcing. [Ben Laurie]
*) Add access control via environment variables. [Ben Laurie]
*) Add rflush() function. [Alexei Kosut]
*) remove duplicate pcalloc() call in new_connection().
*) Fix incorrect comparison which could allow number of children =
MaxClients + 1 if less than HARD_SERVER_LIMIT. Also fix potential
problem if StartServers > HARD_SERVER_LIMIT. [Ed Korthof]
*) Updated support for OSes (MachTen, ULTRIX, Paragon, ISC, OpenBSD
AIX PS/2, CONVEXOS. [Jim Jagielski]
*) Replace instances of inet_ntoa() with inet_addr() for ProxyBlock.
It's more portable. [Martin Kraemer]
*) Replace references to make in Makefile.tmpl with $(MAKE).
[Chuck Murcko]
*) Add ProxyBlock directive w/IP address caching. Add IP address
caching to NoCache directive as well. ProxyBlock works with all
handlers; NoCache now also works with FTP for anonymous logins.
Still more code cleanup. [Chuck Murcko]
*) Add "header parse" API hook [Ben Laurie]
*) Fix byte ordering problems for REMOTE_PORT [Chuck Murcko]
*) suEXEC wrapper was freeing memory that had not been malloc'ed.
*) Correctly allow access and auth directives in <Files> sections in
server config files. [Alexei Kosut]
*) Fix bug with ServerPath that could cause certain files to be not
found by the server. [Alexei Kosut]
*) Fix handling of ErrorDocument so that it doesn't remove a trailing
double-quote from text and so that it properly checks for unsupported
status codes using the new index_of_response interface. [Roy Fielding]
*) Multiple fixes to the lingering_close code in order to avoid being
interrupted by a stray timeout, to avoid lingering on a connection
that has already been aborted or never really existed, to ensure that
we stop lingering as soon as any error condition is received, and to
prevent being stuck indefinitely if the read blocks. Also improves
reporting of error conditions. [Marc Slemko and Roy Fielding]
*) Fixed initialization of parameter structure for sigaction.
*) Fixed reinitializing the parameters before each call to accept and
select, and removed potential for infinite loop in accept.
12903
12904
12905
12906
12907
12908
12909
12910
12911
12912
12913
12914
12915
12916
12917
12918
12919
12920
12921
12922
12923
12924
12925
12926
12927
12928
12929
12930
12931
12932
12933
12934
12935
12936
12937
12938
12939
12940
12941
12942
12943
12944
12945
12946
12947
12948
12949
12950
12951
12952
12953
12954
12955
12956
12957
12958
12959
12960
12961
12962
12963
12964
12965
12966
12967
12968
12969
12970
12971
12972
12973
12974
12975
12976
12977
12978
12979
12980
12981
12982
12983
12984
12985
12986
12987
12988
12989
12990
12991
12992
12993
12994
12995
12996
12997
12998
12999
13000
*) Fixed condition where, if a child fails to fork, the scoreboard would
continue to say SERVER_STARTING forever. Eventually, the main process
would refuse to start new children because count_idle_servers() will
count those SERVER_STARTING entries and will always report that there
are enough idle servers. [Phillip Vandry]
*) Fixed bug in bcwrite regarding failure to account for partial writes.
Avoided calling bflush() when the client is pipelining requests.
Removed unnecessary flushes from http_protocol. [Dean Gaudet]
*) Added description of "." mode in server-status [Jim Jagielski]
Changes with Apache 1.2b4
*) Fix possible race condition in accept_mutex_init() that
could leave a small security hole open allowing files to be
overwritten in cases where the server UID has write permissions.
[Marc Slemko]
*) Fix awk compatibilty problem in Configure. [Jim Jagielski]
*) Fix portablity problem in util_script where ARG_MAX may not be
defined for some systems.
*) Add changes to allow compilation on Machten 4.0.3 for PowerPC.
[Randal Schwartz]
*) OS/2 changes to support an MMAP style scoreboard file and UNIX
style magic #! token for better script portability. [Garey Smiley]
*) Fix bug in suexec wrapper introduced in b3 that would cause failed
execution for ~userdir CGI. [Jason Dour]
*) Fix initgroups() business in suexec wrapper. [Jason Dour]
*) Fix month off by one in suexec wrapper logging.
Changes with Apache 1.2b3:
*) Fix error in mod_cgi which could cause resources not to be properly
freed, or worse. [Dean Gaudet]
*) Fix find_string() NULL pointer dereference. [Howard Fear]
*) Add set_flag_slot() at the request of Dirk and others.
[Dirk vanGulik]
*) Sync mod_rewrite with patch level 10. [Ralf Engelschall]
*) Add changes to improve the error message given for invalid
ServerName parameters. [Dirk vanGulik]
*) Add "Authoritative" directive for Auth modules that don't
currently have it. This gives admin control to assign authoritative
control to an authentication scheme and allow "fall through" for
those authentication modules that aren't "Authoritative" thereby
allowing multiple authentication mechanisms to be chained.
[Dirk vanGulik]
*) Remove requirement for ResourceConfig/AccessConfig if not using
the three config file layout. [Randy Terbush]
*) Add PASV mode to mod_proxy FTP handler. [Chuck Murcko]
*) Changes to suexec wrapper to fix the following problems:
1. symlinked homedirs will kill ~userdirs.
2. initgroups() on Linux 2.0.x clobbers gr->grid.
3. CGI command lines paramters problems
4. pw-pwdir for "docroot check" still the httpd user's pw record.
[Randy Terbush, Jason Dour]
*) Change create_argv() to accept variable arguments. This fixes
a problem where arguments were not getting passed to the CGI via
argv[] when the suexec wrapper was active. [Randy Terbush, Jake Buchholz]
*) Collapse multiple slashes in path URLs to properly apply
handlers defined by <Location>. [Alexei Kosut]
*) Define a sane set of DEFAULT_USER and DEFAULT_GROUP values for AIX.
*) Improve the accuracy of request duration timings by setting
r->request_time in read_request_line() instead of read_request().
[Dean Gaudet]
*) Reset timeout while reading via get_client_block() in mod_cgi.c
Fixes problem with timed out transfers of large files. [Rasmus Lerdorf]
*) Add the ability to pass different Makefile.tmpl files to Configure
using the -make flag. [Rob Hartill]
*) Fix coredump triggered when sending a SIGHUP to the server caused
by an assertion failure, in turn caused by an uninitialised field in a
listen_rec.
[Ben Laurie]
*) Add FILEPATH_INFO variable to CGI environment, which is equal to
PATH_INFO from previous versions of Apache (in certain situations,