Newer
Older
13001
13002
13003
13004
13005
13006
13007
13008
13009
13010
13011
13012
13013
13014
13015
13016
13017
13018
13019
13020
13021
13022
13023
13024
13025
13026
13027
13028
13029
13030
13031
13032
13033
13034
13035
13036
13037
13038
13039
13040
13041
13042
13043
13044
13045
13046
13047
13048
13049
13050
13051
13052
13053
13054
13055
13056
13057
13058
13059
13060
13061
13062
13063
13064
13065
13066
13067
13068
13069
13070
13071
13072
*) Set r->headers_out when sending responses from the proxy.
This fixes things such as the logging of headers sent from
the proxy. [Marc Slemko] PR#659
*) support/httpd_monitor is no longer distributed because the
scoreboard should not be file based if at all possible. Use
mod_status to see current server snapshot.
*) (set_file_slot): New function, allowing auth directives to be
independent of the server root, so the server documents can be
moved to a different directory or machine more easily.
[David J. MacKenzie]
*) If no TransferLog is given explicitly, decline
to log. This supports coexistence with other logging modules,
such as the custom one that UUNET uses. [David J. MacKenzie]
*) Check for titles in server-parsed HTML files.
Ignore leading newlines and returns in titles. The old behavior
of replacing a newline after <title> with a space causes the
title to be misaligned in the listing. [David J. MacKenzie]
*) Change mod_cern_meta to be configurable on a per-directory basis.
[David J. MacKenzie]
*) Add 'Include' directive to allow inclusion of configuration
files within configuration files. [Randy Terbush]
*) Proxy errors on connect() are logged to the error_log (nothing
new); now they include the IP address and port that failed
(*that's* new). [Ken Coar, Marc Slemko] PR#352
*) Various architectures now define USE_MMAP_FILES which causes
the server to use mmap() for static files. There are two
compile-time tunables MMAP_THRESHOLD (minimum number of bytes
required to use mmap(), default is 0), and MMAP_SEGMENT_SIZE (maximum
number of bytes written in one cycle from a single mmap()d object,
default 32768). [Dean Gaudet]
*) API: Added post_read_request API phase which is run right after reading
the request from a client, or right after an internal redirect. It is
useful for modules setting environment variables that depend only on
the headers/contents of the request. It does not run during subrequests
because subrequests inherit pretty much everything from the main
request. [Dean Gaudet]
*) Added mod_unique_id which is used to generate a unique identifier for
each hit, available in the environment variable UNIQUE_ID.
[Dean Gaudet]
*) init_modules is now called after the error logs have been opened. This
allows modules to emit information messages into the error logs.
[Dean Gaudet]
*) Fixed proxy-pass-through feature of mod_rewrite; Added error logging
information for case where proxy module is not available. [Marc Slemko]
*) PORT: Apache has need for mutexes to serialize its children around
accept. In prior versions either fcntl file locking or flock file
locking were used. The method is chosen by the definition of
USE_xxx_SERIALIZED_ACCEPT in conf.h. xxx is FCNTL for fcntl(),
and FLOCK for flock(). New options have been added:
- SYSVSEM to use System V style semaphores
- PTHREAD to use POSIX threads (appears to work on Solaris only)
- USLOCK to use IRIX uslock
Based on timing various techniques, the following changes were made
to the defaults:
- Linux 2.x uses flock instead of fcntl
- Solaris 2.x uses pthreads
- IRIX uses SysV semaphores -- however multiprocessor IRIX boxes
work far faster if you -DUSE_USLOCK_SERIALIZED_ACCEPT
[Dean Gaudet, Pierre-Yves Kerembellec <Pierre-Yves.Kerembellec vtcom.fr>,
Martijn Koster <m.koster pobox.com>]
13075
13076
13077
13078
13079
13080
13081
13082
13083
13084
13085
13086
13087
13088
13089
13090
13091
13092
13093
13094
13095
13096
13097
13098
13099
13100
13101
13102
13103
13104
13105
13106
13107
13108
13109
13110
13111
13112
13113
13114
13115
13116
13117
13118
13119
13120
13121
13122
13123
13124
13125
13126
13127
13128
13129
13130
13131
13132
13133
13134
13135
13136
13137
13138
13139
13140
13141
13142
13143
13144
13145
13146
13147
13148
13149
13150
13151
13152
13153
13154
13155
13156
13157
13158
13159
13160
13161
13162
*) PORT: The semantics of accept/select make it very desirable to use
mutexes to serialize accept when multiple Listens are in use. But
in the case where only a single socket is open it is sometimes
redundant to serialize accept(). Not all unixes do a good job with
potentially dozens of children blocked on accept() on the same
socket. It's now possible to define SINGLE_LISTEN_UNSERIALIZED_ACCEPT and
the server will avoid serialization when listening on only one socket,
and use serialization when listening on multiple sockets.
[Dean Gaudet] PR#467
*) Configure changes: TestLib replaced by TestCompile, which has
some additional capability (such as doing a sanity check of
the compiler and flags selected); the version of Solaris is now
available via the #define value of SOLARIS2; IRIX n32bit libs
now supported and selectable by new Configuration Rule: IRIXN32;
We no longer default to -O2 optimization. [Jim Jagielski]
*) Updated Configure: Configuration now uses AddModule to specify
module source or binary file location, relative to src directory.
Modules can be dropped into modules/extra, or in their own
directory, and modules can come with a Makefile or Configure can
create one. Modules can add compiler or library information to
generated Makefiles. [Paul Sutton]
*) Source core re-organisation: distributed modules are now in
modules/standard. All other source code is in main. OS-specific
code is in os/{unix,emx,win32} directories. [Paul Sutton]
*) mod_browser has been removed, since it's replaced by mod_setenvif.
[Ken Coar]
*) Fix 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]
*) directory_walk optimization to reduce an O(N*M) loop to O(N+M) where
N is the number of <Directory> sections, and M is the number of
components in the filename of an object.
To achieve this optimization the following config changes were made:
- Wildcards (* and ?, not the regex forms) in <Directory>s,
<Files>s, and <Location>s now treat a slash as a special
character. For example "/home/*/public_html" previously would
match "/home/a/andrew/public_html", now it only matches things
like "/home/bob/public_html". This mimics /bin/sh behaviour.
- It's possible now to use [] wildcarding in <Directory>, <Files>
or <Location>.
- Regex <Directory>s are applied after all non-regex <Directory>s.
[Dean Gaudet]
*) Fix a bug introduced in 1.3a1 directory_walk regarding .htaccess files
and corrupted paths. [Dean Gaudet]
*) Enhanced and cleaned up the URL rewriting engine of mod_rewrite:
First the grouped parts of RewriteRule pattern matches (parenthesis!) can
be accessed now via backreferences $1..$9 in RewriteConds test-against
strings in addition to RewriteRules subst string. Second the grouped
parts of RewriteCond pattern matches (parenthesis!) can be accessed now
via backreferences %1..%9 both in following RewriteCond test-against
strings and RewriteRules subst string. This provides maximum flexibility
through the use of backreferences.
Additionally the rewriting engine was cleaned up by putting common
code to the new expand_backrefs_inbuffer() function.
[Ralf S. Engelschall]
*) 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]
*) ip-based vhosts are stored and queried using a hashing function, which
has been shown to improve performance on servers with many ip-vhosts.
Some other changes had to be made to accommodate this:
- the * address for vhosts now behaves like _default_
- the matching process now is:
- match an ip-vhost directly via hash (possibly matches main
server)
- if that fails, just pretend it matched the main server
- if so far only the main server has been matched, perform
name-based lookups (ServerName, ServerAlias, ServerPath)
*only on name-based vhosts*
- if they fail, look for _default_ vhosts
13164
13165
13166
13167
13168
13169
13170
13171
13172
13173
13174
13175
13176
13177
13178
13179
13180
13181
13182
13183
13184
13185
13186
13187
13188
13189
13190
*) dbmmanage overhaul:
- merge dbmmanage and dbmmanage.new functionality, remove dbmmanage.new
- tie() to AnyDBM_File which will use one of DB_File, NDBM_File or
GDBM_File (-ldb, -lndbm, -lgdbm) (trying each in that order)
- provide better seed for rand
- prompt for password as per getpass(3) (turn off echo, read from
/dev/tty, etc.)
- use "newstyle" crypt based on $Config{osname} ($^O)
- will not add a user if already in database, use new `update' command
instead
- added `check' command to check a users' password
- added `import' command to convert existing password text-files or
dbm files exported with `view'
- more descriptive usage, general cleanup, 'use strict' clean, etc.
[Doug MacEachern]
*) Added psocket() which is a pool form of socket(), various places within
the proxy weren't properly blocking alarms while registering the cleanup
for its sockets. bclose() now uses pclose() and pclosesocket(). There
was a bug where the client socket was being close()d twice due a still
registered cleanup. [Dean Gaudet]
*) A few cleanups were made to reduce time(), getpid(), and signal() calls.
[Dean Gaudet]
*) PORT: AIX >= 4.2 requires -lm due to libc changes.
13192
13193
13194
13195
13196
13197
13198
13199
13200
13201
13202
13203
13204
13205
13206
13207
13208
13209
13210
13211
13212
13213
13214
13215
13216
13217
13218
13219
13220
13221
13222
13223
13224
13225
13226
13227
13228
13229
13230
13231
13232
13233
13234
13235
13236
13237
13238
13239
13240
13241
13242
13243
13244
13245
13246
13247
13248
13249
13250
13251
13252
*) Enable ``=""'' for RewriteCond directives to match against
the empty string. This is the preferred way instead of ``^$''.
[Ralf S. Engelschall]
*) Fixed an infinite loop in mod_imap for references above the server root
[Dean Gaudet] PR#748
*) mod_proxy now has a ReceiveBufferSize directive, similar to
SendBufferSize, so that the TCP window can be set appropriately
for LFNs. [Phillip A. Prindeville]
*) mod_browser has been replaced by the more general mod_setenvif
(courtesy of Paul Sutton). BrowserMatch* directives are still
available, but are now joined by SetEnvIf*, UnSetEnvIf*, and
UnSetEnvIfZero directives. [Ken Coar]
*) "HostnameLookups double" forces double-reverse DNS to succeed in
order for remote_host to be set (for logging, or for the env var
REMOTE_HOST). The old define MAXIMUM_DNS has been deprecated.
[Dean Gaudet]
*) mod_access overhaul:
- Now understands network/netmask syntax (i.e. 10.1.0.0/255.255.0.0)
and cidr syntax (i.e. 10.1.0.0/16). PR#762
- Critical path was sped up by pre-computing a few things at config time.
- The undocumented syntax "allow user-agents" was removed,
the replacement is "allow from env=foobar" combined with mod_browser.
- When used with hostnames it now forces a double-reverse lookup
no matter what the directory settings are. This double-reverse
doesn't affect any of the other routines that use the remote
hostname. In particular it's still passed to CGIs and the log
without the double-reverse check. Related PR#860.
[Dean Gaudet]
*) When a large bwrite() occurs (larger than the internal buffer size),
while there is already something in the buffer, apache will combine
the large write and the buffer into a single writev(). (This is
in anticipation of using mmap() for reading files.)
[Dean Gaudet]
*) In obscure cases where a partial socket write occurred while chunking,
Apache would omit the chunk header/footer on the next block. Cleaned
up other bugs/inconsistencies in error conditions in buff.c. Fixed
a bug where a long pause in DNS lookups could cause the last packet
of a response to be unduly delayed. [Roy Fielding, Dean Gaudet]
*) API: Added child_exit function to module structure. This is called
once per "heavy-weight process" just before a server child exit()'s
e.g. when max_requests_per_child is reached, etc.
[Doug MacEachern, Dean Gaudet]
*) 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]
*) mod_cern_meta would attempt to find meta files for the directory itself
in some cases, but not in others. It now avoids it in all cases.
[Dean Gaudet]
*) mod_mime_magic would core dump if there was a decompression error.
*) PORT: some variants of DGUX require -lsocket -lnsl
*) mod_autoindex now allows sorting of FancyIndexed directory listings
by the various fields (name, size, et cetera), either in ascending
or descending order. Just click on the column header. [Ken Coar]
*) PORT: Various tweaks to eliminate pointer-int casting warnings on 64-bit
CPUs like the Alpha. Apache still stores ints in pointers, but that's
the relatively safe direction. [Dean Gaudet] PR#344
*) PORT: QNX mmap() support for faster/more reliable scoreboard handling.
13268
13269
13270
13271
13272
13273
13274
13275
13276
13277
13278
13279
13280
13281
13282
13283
13284
13285
13286
13287
13288
13289
13290
13291
13292
13293
13294
13295
13296
13297
13298
13299
13300
13301
13302
13303
13304
13305
13306
*) child_main avoids an unneeded call to select() when there is only one
listening socket. [Dean Gaudet]
*) In the event that the server is starved for idle servers it will
spawn 1, then 2, then 4, ..., then 32 servers each second,
doubling each second. It'll also give a warning in the errorlog
since the most common reason for this is a poor StartServers
setting. The define MAX_SPAWN_RATE can be used to raise/lower
the maximum. [Dean Gaudet]
*) Apache now provides an effectively unbuffered connection for
CGI scripts. This means that data will be sent to the client
as soon as the CGI pauses or stops output; previously, Apache would
buffer the output up to a fixed buffer size before sending, which
could result in the user viewing an empty page until the CGI finished
or output a complete buffer. It is no longer necessary to use an
"nph-" CGI to get unbuffered output. Given that most CGIs are written
in a language that by default does buffering (e.g. perl) this
shouldn't have a detrimental effect on performance.
"nph-" CGIs, which formerly provided a direct socket to the client
without any server post-processing, were not fully compatible with
HTTP/1.1 or SSL support. As such they would have had to implement
the transport details, such as encryption or chunking, in order
to work properly in certain situations. Now, the only difference
between nph and non-nph scripts is "non-parsed headers".
[Dean Gaudet, Sameer Parekh, Roy Fielding]
*) If a BUFF is switched from buffered to unbuffered reading the first
bread() will return whatever remained in the buffer prior to the
switch. [Dean Gaudet]
Changes with Apache 1.3a1
*) Added another Configure helper script: TestLib. It determines
if a specified library exists. [Jim Jagielski]
*) PORT: Allow for use of n32bit libraries under IRIX 6.x
PR#721
*) PORT: Some architectures use size_t for various lengths in network
functions such as accept(), and getsockname(). The definition
NET_SIZE_T is used to control this. [Dean Gaudet]
*) PORT: Linux: Attempt to detect glibc based systems and include crypt.h
and -lcrypt. Test for various db libraries (dbm, ndbm, db) when
mod_auth_dbm or mod_auth_db are included. [Dean Gaudet]
*) PORT: QNX doesn't have initgroups() which support/suexec.c uses.
*) "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.
[Dean Gaudet] related PR#875
*) API: Correct child_init() slot declaration from int to void, to
match the init() declaration. Update mod_example to use the new
hook. [Ken Coar]
*) added transport handle slot (t_handle) to the BUFF structure
[Doug MacEachern]
*) get_client_block() returns wrong length if policy is
REQUEST_CHUNKED_DECHUNK.
*) Support the image map format of FrontPage. For example:
rect /url.hrm 10 20 30 40
*) PORT: -lresolv and -lsocks were in the wrong order for Solaris.
*) AddModuleInfo directive for mod_info which allows you to annotate
*) Added NoProxy directive to avoid using ProxyRemote for selected
addresses. Added ProxyDomain directive to cause unqualified
names to be qualified by redirection.
13351
13352
13353
13354
13355
13356
13357
13358
13359
13360
13361
13362
13363
13364
13365
13366
13367
13368
13369
13370
13371
13372
13373
13374
13375
13376
13377
13378
13379
13380
13381
13382
13383
13384
13385
13386
13387
13388
13389
13390
13391
13392
13393
13394
13395
13396
13397
13398
13399
13400
13401
13402
13403
13404
13405
13406
13407
13408
13409
13410
13411
13412
13413
13414
13415
13416
13417
13418
*) Support Proxy Authentication, and don't pass the Proxy-Authorize
header to the remote host in the proxy. [Sameer Parekh and
Wallace]
*) Upgraded mod_rewrite from 3.0.6+ to latest officially available version
3.0.9. This upgrade includes: fixed deadlooping on rewriting to same
URLs, fixed rewritelog(), fixed forced response code handling on
redirects from within .htaccess files, disabled pipe locking under
braindead SunOS 4.1.x, allow env variables to be set even on rules with
no substitution, bugfixed situations where HostnameLookups is off, made
mod_rewrite more thread-safe for NT port and fixed problem when creating
an empty query string via "xxx?".
This update also removes the copyright of Ralf S. Engelschall,
i.e. now mod_rewrite no longer has a shared copyright. Instead is is
exclusively copyrighted by the Apache Group now. This happened because
the author now has gifted mod_rewrite exclusively to the Apache Group and
no longer maintains an external version.
[Ralf S. Engelschall]
*) API: Added child_init function to module structure. This is called
once per "heavy-weight process" before any requests are handled.
See http_config.h for more details. [Dean Gaudet]
*) Anonymous_LogEmail was logging on each subrequest.
[Dean Gaudet] PR#421, 868
*) API: Added is_initial_req() which tests if the request being
processed is the initial request, or a subrequest.
[Doug MacEachern]
*) Extended SSI (mod_include) now handles additional relops for
string comparisons (<, >, <=, and >=). [Bruno Wolff III] PR#41
*) Configure fixed to correctly propagate user-selected options and
settings (such as CC and OPTIM) to Makefiles other than
src/Makefile (notably support/Makefile). [Ken Coar] PR#666, #834
*) IndexOptions SuppressHTMLPreamble now causes the actual HTML of
directory indices to start with the contents of the HeaderName file
if there is one. If there isn't one, the behaviour is unchanged.
[Ken Coar, Roy Fielding, Andrey A. Chernov]
*) WIN32: Modules can now be dynamically loaded DLLs using the
LoadModule/LoadFile directives. Note that module DLLs must be
compiled with the multithreaded DLL version of the runtime library.
[Alexei Kosut and Ben Laurie]
*) Automatic indexing removed from mod_dir and placed into mod_autoindex.
This allows the admin to completely remove automatic indexing
from the server, while still supporting the basic functions of
trailing-slash redirects and DirectoryIndex files. Note that if
you're carrying over an old Configuration file and you use directory
indexing then you'll want to add:
Module autoindex_module mod_autoindex.o
before mod_dir in your Configuration. [Dean Gaudet]
*) popendir/pclosedir created to properly protect directory scanning.
[Dean Gaudet] PR#525
*) AliasMatch, ScriptAliasMatch and RedirectMatch directives added,
giving regex support to mod_alias. <DirectoryMatch>, <LocationMatch>
and <FilesMatch> sections added to succeed <DirectoryMatch ~>, etc...
[Alexei Kosut]
*) The AccessFileName directive can now take more than one filename.
*) The new mod_mime_magic can be used to "magically" determine the type
of a file if the extension is unknown. Based on the unix file(1)
13424
13425
13426
13427
13428
13429
13430
13431
13432
13433
13434
13435
13436
13437
13438
13439
13440
13441
13442
13443
13444
13445
13446
13447
13448
13449
13450
13451
13452
13453
13454
13455
13456
13457
13458
13459
13460
13461
13462
13463
13464
13465
13466
13467
13468
13469
13470
13471
13472
13473
13474
13475
13476
13477
13478
13479
13480
13481
13482
*) We now determine and display the time spent processing a
request if desired. [Jim Jagielski]
*) mod_status: PID field of "dead" child slots no longer displays
main httpd process's PID. [Jim Jagielski]
*) Makefile.nt added - to build all the bits from the command line:
nmake -f Makefile.nt
Doesn't yet work properly. [Ben Laurie]
*) Default text of 404 error is now "Not Found" rather than the
potentially misleading "File Not Found". [Ken Coar]
*) CONFIG: "HostnameLookups" now defaults to off because it is far better
for the net if we require people that actually need this data to
enable it. [Linus Torvalds]
*) directory_walk() is an expensive function, keep a little more state to
avoid needless string counting. Add two new functions make_dirstr_parent
and make_dirstr_prefix which replace all existing uses of make_dirstr.
The new functions are a little less general than make_dirstr, but
work more efficiently (less memory, less string counting).
[Dean Gaudet]
*) EXTRA_LFLAGS was changed to EXTRA_LDFLAGS (and LFLAGS was changed
to LDFLAGS) to avoid complications with lex rules in make files.
[Dean Gaudet] PR#372
*) run_method optimized to avoid needless scanning over NULLs in the
module list. [Dean Gaudet]
*) Revamp of (unix) scoreboard management code such that it avoids
unnecessary traversals of the scoreboard on each hit. This is
particularly important for high volume sites with a large
HARD_SERVER_LIMIT. Some of the previous operations were O(n^2),
and are now O(n). See also SCOREBOARD_MAINTENANCE_INTERVAL in
httpd.h. [Dean Gaudet]
*) In configurations using multiple Listen statements it was possible for
busy sockets to starve other sockets of service. [Dean Gaudet]
*) Added hook so standalone_main can be replaced at compile time
(define STANDALONE_MAIN)
[Doug MacEachern]
*) Lowest-level read/write functions in buff.c will be replaced with
the SFIO library calls sfread/sfwrite if B_SFIO is defined at
compile time. The default sfio discipline will behave as apache
would without sfio compiled in.
[Doug MacEachern]
*) Enhance UserDir directive (mod_userdir) to accept a list of
usernames for the 'disable' keyword, and add 'enable user...' to
selectively *en*able userdirs if they're globally disabled.
[Ken Coar]
*) If NETSCAPE_DBM_COMPAT is defined in EXTRA_CFLAGS then Apache
will work with Netscape dbm files. (dbmmanage will probably not
13484
13485
13486
13487
13488
13489
13490
13491
13492
13493
13494
13495
13496
13497
13498
13499
13500
*) Add a ListenBacklog directive to control the backlog parameter
passed to listen(). Also change the default to 511 from 512.
[Marc Slemko]
*) API: A new handler response DONE which informs apache that the
request has been handled and it can finish off quickly, similar to
how it handles errors. [Rob Hartill]
*) Turn off chunked encoding after sending terminating chunk/footer
so that we can't do it twice by accident. [Roy Fielding]
*) mod_expire also issues Cache-Control: max-age headers.
[Rob Hartill]
*) API: Added kill_only_once option for free_proc_chain so that it won't
aggressively try to kill off specific children. For fastcgi.
*) mod_auth deals with extra ':' delimited fields. [Marc Slemko]
*) Added IconHeight and IconWidth to mod_dir's IndexOptions directive.
When used together, these cause mod_dir to emit HEIGHT and WIDTH
attributes in the FancyIndexing IMG tags. [Ken Coar]
*) PORT: Sequent and SONY NEWS-OS support added. [Jim Jagielski]
*) PORT: Added Windows NT support
Changes with Apache 1.2.6
*) mod_include when using XBitHack Full would send ETags in addition to
sending Last-Modifieds. This is incorrect HTTP/1.1 behaviour.
[Dean Gaudet] PR#1133
*) SECURITY: When a client connects to a particular port/addr, and
gives a Host: header ensure that the virtual host requested can
actually be reached via that port/addr. [Ed Korthof <ed organic.com>]
*) Support virtual hosts with wildcard port and/or multiple ports
*) Fixed some case-sensitivity issues according to RFC2068.
[Dean Gaudet]
*) Set r->allowed properly in mod_asis.c, mod_dir.c, mod_info.c,
and mod_include.c. [Dean Gaudet]
*) Variable 'cwd' was being used pointlessly before being set.
[Ken Coar] PR#1738
*) SIGURG doesn't exist on all platforms.
*) When an error occurs during a POST, or other operation with a
request body, the body has to be read from the net before allowing
a keepalive session to continue. [Roy Fielding] PR#1399
*) When an error occurs in fcntl() locking suggest the user look up
the docs for LockFile. [Dean Gaudet]
*) table_set() and table_unset() did not deal correctly with
multiple occurrences of the same key. [Stephen Scheck
*) send_fd_length() did not calculate total_bytes_sent properly in error
*) r->connection->user was allocated in the wrong pool causing corruption
in some cases when used with mod_cern_meta. [Dean Gaudet] PR#1500
*) mod_proxy was sending HTTP/1.1 responses to ftp requests by mistake.
Also removed the auto-generated link to www.apache.org that was the
source of so many misdirected bug reports. [Roy Fielding, Marc Slemko]
*) Multiple "close" tokens may have been set in the "Connection"
header, not an error, but a waste.
*) "basic" and "digest" auth tokens should be tested case-insensitive.
13566
13567
13568
13569
13570
13571
13572
13573
13574
13575
13576
13577
13578
13579
13580
13581
13582
13583
13584
13585
13586
13587
13588
13589
13590
13591
13592
13593
13594
13595
13596
13597
13598
13599
13600
13601
13602
13603
13604
13605
13606
13607
13608
13609
13610
13611
13612
13613
13614
13615
13616
13617
13618
13619
*) It appears the "257th byte" bug (see
htdocs/manual/misc/known_client_problems.html#257th-byte) can happen
at the 256th byte as well. Fixed. [Dean Gaudet]
*) mod_rewrite would not handle %3f properly in some situations.
[Ralf Engelschall]
*) Apache could generate improperly chunked HTTP/1.1 responses when
the bputc() or rputc() functions were used by modules (such as
mod_include). [Dean Gaudet]
*) #ifdef wrap a few #defines in httpd.h to make life easier on
some ports. [Ralf Engelschall]
*) Fix MPE compilation error in mod_usertrack.c. [Mark Bixby]
*) Quote CC='$(CC)' to improve recurse make calls. [Martin Kraemer]
*) Avoid B_ERROR redeclaration on sysvr4 systems. [Martin Kraemer]
Changes with Apache 1.2.5
*) SECURITY: Fix a possible buffer overflow in logresolve. This is
only an issue on systems without a MAXDNAME define or where
the resolver returns domain names longer than MAXDNAME. [Marc Slemko]
*) Fix an improper length in an ap_snprintf call in proxy_date_canon().
[Marc Slemko]
*) Fix core dump in the ftp proxy when reading incorrectly formatted
directory listings. [Marc Slemko]
*) SECURITY: Fix possible minor buffer overflow in the proxy cache.
[Marc Slemko]
*) SECURITY: Eliminate possible buffer overflow in cfg_getline, which
is used to read various types of files such as htaccess and
htpasswd files. [Marc Slemko]
*) SECURITY: Ensure that the buffer returned by ht_time is always
properly null terminated. [Marc Slemko]
*) SECURITY: General mod_include cleanup, including fixing several
possible buffer overflows and a possible infinite loop. This cleanup
was done against 1.3 code and then backported to 1.2, the result
is a large difference (due to indentation cleanup in 1.3 code).
Users interested in seeing a smaller set of relevant differences
should consider comparing against src/modules/standard/mod_include.c
from the 1.3b3 release. Non-indentation changes to mod_include
between 1.2 and 1.3 were minimal. [Dean Gaudet, Marc Slemko]
*) SECURITY: Numerous changes to mod_imap in a general cleanup
including fixing a possible buffer overflow. This cleanup also
was done with 1.3 code as a basis, see the previous note
about mod_include. [Dean Gaudet]
*) SECURITY: If a htaccess file can not be read due to bad
permissions, deny access to the directory with a HTTP_FORBIDDEN.
The previous behavior was to ignore the htaccess file if it could not
be read. This change may make some setups with unreadable
htaccess files stop working. PR#817 [Marc Slemko]
*) SECURITY: no2slash() was O(n^2) in the length of the input.
Make it O(n). This inefficiency could be used to mount a denial
of service attack against the Apache server. Thanks to
this. [Dean Gaudet]
*) mod_include used uninitialized data for some uses of && and ||.
*) mod_imap should decline all non-GET methods.
*) suexec.c wouldn't build without -DLOG_EXEC. [Jason A. Dour]
*) mod_userdir was modifying r->finfo in cases where it wasn't setting
r->filename. Since those two are meant to be in sync with each other
this is a bug. ["Paul B. Henson" <henson intranet.csupomona.edu>]
*) mod_include did not properly handle all possible redirects from sub-
requests. [Ken Coar]
*) Inetd mode (which is buggy) uses timeouts without having setup the
jmpbuffer. [Dean Gaudet] PR#1064
*) Work around problem under Linux where a child will start looping
reporting a select error over and over.
13656
13657
13658
13659
13660
13661
13662
13663
13664
13665
13666
13667
13668
13669
13670
13671
13672
13673
13674
13675
13676
13677
13678
13679
13680
13681
13682
13683
13684
13685
13686
13687
13688
13689
13690
13691
13692
13693
13694
13695
13696
13697
13698
13699
13700
13701
13702
13703
13704
13705
13706
13707
13708
13709
13710
13711
13712
13713
13714
13715
13716
13717
13718
13719
13720
13721
13722
13723
13724
13725
13726
13727
13728
13729
13730
13731
13732
13733
13734
13735
13736
13737
13738
13739
13740
Changes with Apache 1.2.4
*) The ProxyRemote change in 1.2.3 introduced a bug resulting in the proxy
always making requests with the full-URI instead of just the URI path.
[Marc Slemko, Roy Fielding]
*) Add -lm for AIX versions >= 4.2 to allow Apache to link properly
on this platform. [Marc Slemko]
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.
13752
13753
13754
13755
13756
13757
13758
13759
13760
13761
13762
13763
13764
13765
13766
13767
13768
13769
13770
13771
13772
13773
13774
13775
13776
13777
13778
13779
13780
13781
13782
13783
13784
13785
13786
13787
13788
13789
13790
13791
13792
13793
13794
13795
13796
13797
13798
13799
13800
13801
13802
13803
13804
13805
13806
13807
13808
13809
13810
13811
13812
13813
13814
13815
13816
13817
13818
13819
13820
13821
13822
13823
13824
13825
13826
13827
13828
13829
13830
13831
13832
13833
13834
13835
13836
13837
*) 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.
13863
13864
13865
13866
13867
13868
13869
13870
13871
13872
13873
13874
13875
13876
13877
13878
13879
13880
13881
13882
13883
13884
13885
13886
13887
13888
13889
13890
13891
13892
13893
13894
13895
13896
13897
*) 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
13899
13900
13901
13902
13903
13904
13905
13906
13907
13908
13909
13910
13911
13912
13913
13914
13915
13916
13917
13918
13919
13920
13921
13922
13923
13924
13925
13926
13927
13928
13929
13930
13931
13932
13933
13934
13935
13936
13937
13938
13939
13940
13941
13942
13943
13944
13945
13946
13947
13948
13949
13950
13951
13952
13953
13954
13955
13956
13957
13958
13959
13960
13961
13962
13963
13964
13965
13966
13967
13968
13969
13970
13971
13972
13973
13974
13975
13976
13977
13978
13979
13980
13981
13982
13983
13984
13985
13986
13987
13988
13989
13990
13991
13992
13993
13994
13995
13996
13997
13998
13999
14000
[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