Newer
Older
14001
14002
14003
14004
14005
14006
14007
14008
14009
14010
14011
14012
14013
14014
14015
14016
14017
14018
14019
14020
14021
14022
14023
14024
14025
14026
14027
14028
14029
14030
14031
14032
14033
14034
14035
14036
14037
14038
14039
14040
14041
14042
14043
14044
14045
14046
14047
14048
14049
14050
14051
14052
14053
14054
14055
14056
14057
14058
14059
14060
14061
14062
14063
14064
14065
14066
14067
14068
14069
14070
14071
14072
14073
14074
14075
14076
14077
14078
14079
14080
14081
14082
14083
14084
14085
14086
14087
14088
14089
14090
14091
14092
14093
14094
14095
14096
14097
14098
14099
14100
14101
14102
14103
14104
14105
14106
14107
14108
14109
14110
14111
14112
14113
14114
14115
14116
14117
14118
14119
14120
14121
14122
14123
14124
14125
14126
14127
14128
14129
14130
14131
14132
14133
14134
14135
14136
14137
14138
14139
14140
14141
14142
14143
14144
14145
14146
14147
14148
14149
14150
14151
14152
14153
14154
14155
14156
14157
14158
14159
14160
14161
14162
14163
14164
14165
14166
14167
14168
14169
14170
14171
14172
14173
14174
14175
14176
14177
14178
14179
14180
14181
14182
14183
14184
14185
14186
14187
14188
14189
14190
14191
14192
14193
14194
14195
14196
14197
14198
14199
14200
14201
14202
14203
14204
14205
14206
14207
14208
14209
14210
14211
14212
14213
14214
14215
14216
14217
14218
14219
14220
14221
14222
14223
14224
14225
14226
14227
14228
14229
14230
14231
14232
14233
14234
14235
14236
14237
14238
14239
14240
14241
14242
14243
14244
14245
14246
14247
14248
14249
14250
14251
14252
14253
14254
14255
14256
14257
14258
14259
14260
14261
14262
14263
14264
14265
14266
14267
14268
14269
14270
14271
14272
14273
14274
14275
14276
14277
14278
14279
14280
14281
14282
14283
14284
14285
14286
14287
14288
14289
14290
14291
14292
14293
14294
14295
14296
14297
14298
14299
14300
14301
14302
14303
14304
14305
14306
14307
14308
14309
14310
14311
14312
14313
14314
14315
14316
14317
14318
14319
14320
14321
14322
14323
14324
14325
14326
14327
14328
14329
14330
14331
14332
14333
14334
14335
14336
14337
14338
14339
14340
14341
14342
14343
14344
14345
14346
14347
14348
14349
14350
14351
14352
14353
14354
14355
14356
14357
14358
14359
14360
14361
14362
14363
14364
14365
14366
14367
14368
14369
14370
14371
14372
14373
14374
14375
14376
14377
14378
14379
14380
14381
14382
14383
14384
14385
14386
14387
14388
14389
14390
14391
14392
14393
14394
14395
14396
deleted his old, and no doubt non-functional email address). Would be
nice to have examples of new features...
Changes with Apache 0.8.2 19 Jul 1995
*) Added AddLanuage code [Florent Guillaume]
*) Don't say "access forbidden" when a CGI script is not found. [Mark Cox]
*) All sorts of problems when MultiViews finds a directory. It would
be nice if mod_dir.c was robust enough to handle that, but for now,
just punt. [reported by Brian Behlendorf]
*) Wait for all children on restart, to make sure that the old socket
is gone and we can reopen it. [reported by Randy Terbush]
*) Imagemap module is enabled in default Configuration
*) RefererLog and UserAgentLog modules properly default the logfile
[Randy Terbush]
*) Mark Cox's mod_cookies added to the distribution as an optional
module (commented out in the default Configuration, and noted as
an experiment, along with mod_dld). [Mark Cox]
*) Compiles on ULTRIX (a continuing battle...). [Robert Thau]
*) Fixed nasty bug in SIGTERM handling [reported by Randy Terbush]
*) Changed "Shambhala" to "Apache" in API docs. [Robert Thau]
*) Added new, toothier legal disclaimer. [Robert Thau; copied from BSD
license]
Changes with Apache 0.8.1
*) New imagemap module [Randy Terbush]
*) Replacement referer log module with NCSA-compatible RefererIgnore
[Matthew Gray again]
*) Don't mung directory listings with very long filenames.
[Florent Guillaume]
Changes with Apache 0.8.0 (nee Shambhala 0.6.2) 16 Jul 1995
*) New config script. See INSTALL for info. [Robert Thau]
*) Scoreboard mechanism for regulating the number of extant server
processes. MaxServers and StartServers defaults are the same as
for NCSA, but the meanings are slightly different. (Actually,
I should probably lower the MaxServers default to 10).
Before asking for a new connection, each server process checks
the number of other servers which are also waiting for a
connection. If there are more than MaxServers, it quietly dies
off. Conversely, every second, the root, or caretaker, process
looks to see how many servers are waiting for a new connection;
if there are fewer than StartServers, it starts a new one. This
does not depend on the number of server processes already extant.
The accounting is arranged through a "scoreboard" file, named
/tmp/htstatus.*, on which each process has an independent file
descriptor (they need to seek without interference).
The end effect is that MaxServers is the maximum number of
servers on an *inactive* server machine, but more will be forked
off to handle unusually heavy loads (or unusually slow clients);
these will die off when they are no longer needed --- without
reverting to the overhead of full forking operation. There is a
hard maximum of 150 server processes compiled in, largely to
avoid forking out of control and dragging the machine down.
(This is arguably too high).
In my server endurance tests, this mechanism did not appear to
impose any significant overhead, even after I forced it to put the
scoreboard file on a normal filesystem (which might have more
overhead than tmpfs). [Robert Thau]
*) Set HTTP_FOO variables for SSI <!--#exec cmd-->s, not just CGI scripts.
[Cliff Skolnick]
*) Read .htaccess files even in directory with <Directory> section.
(Former incompatibility noted on mailing list, now fixed). [Robert
Thau]
*) "HEAD /" gives the client a "Bad Request" error message, rather
than trying to send no body *and* no headers. [Cliff Skolnick].
*) Don't produce double error reports for some very obscure cases
mainly involving auth configuration (the "all modules decline to
handle" case which is a sure sign of a server bug in most cases,
but also happens when authentication is badly misconfigured).
[Robert Thau]
*) Moved FCNTL_SERIALIZED_ACCEPT defines into conf.h (that's what
it's *for*, and this sort of thing really shouldn't be cluttering
up the Makefile). [Robert Thau]
*) Incidental code cleanups in http_main.c --- stop dragging
sa_client around; just declare it where used. [Robert Thau]
*) Another acc-related fix. (It doesn't like const char
in some places...). [Mark Cox]
Changes with Shambhala 0.6.1 13 Jul 1995
*) Fixed auth_name-related typos in http_core.c [Brian Behlendorf]
Also, fixed auth typo in http_protocol.c unmasked by this fix.
*) Compiles clean with acc on SunOS [Paul Sutton]
*) Reordered modules in modules.c so that Redirect takes priority
over ScriptAlias, for NCSA bug-compatibility [Rob Hartill] ---
believe it or not, he has an actual site with a ScriptAlias and
a Redirect declared for the *exact same directory*. Even *my*
compatibility fetish wouldn't motivate me to fix this if the fix
required any effort, but it doesn't, so what the hey.
*) Fixed to properly default several server_rec fields for virtual
servers from the corresponding fields in the main server_rec.
[Cliff Skolnick --- 'port' was a particular irritant].
*) No longer kills off nph- child processes before they are
finished sending output. [Matthew Gray]
Changes with Shambhala 0.6.0 10 Jul 1995
*) Two styles of timeout --- hard and soft. soft_timeout()s just put
the connection to the client in an "aborted" state, but otherwise
allow whatever handlers are running to clean up. hard_timeout()s
abort the request in progress completely; anything not tied to some
resource pool cleanup will leak. They're still around because I
haven't yet come up with a more elegant way of handling
timeouts when talking to something that isn't the client. The
default_handler and the dir_handler now use soft timeouts, largely
so I can test the feature. [Robert Thau]
*) TransferLog "| my_postprocessor ..." seems to be there. Note that
the case of log handlers dying prematurely is probably handled VERY
gracelessly at this point, and if the logger stops reading input,
the server will hang. (It is known to correctly restart the
logging process on server restart; this is (should be!) going through
the same SIGTERM/pause/SIGKILL routine used to ding an errant CGI
script). [Robert Thau]
*) asis files supported (new module). [Robert Thau]
*) IdentityCheck code is compiled in, but has not been tested. (I
don't know anyone who runs identd). [Robert Thau]
*) PATH_INFO and PATH_TRANSLATED are not set unless some real PATH_INFO
came in with the request, for NCSA bug-compatibility. [Robert Thau]
*) Don't leak the DIR * on HEAD request for a directory. [Robert Thau]
*) Deleted the block_alarms() stuff from dbm_auth; no longer necessary,
as timeouts are not in scope. [Robert Thau]
*) quoted-string args in config files now handled correctly (doesn't drop
the last character). [Robert Thau; reported by Randy Terbush]
*) Fixed silly typo in http_main.c which was suddenly fatal in HP-UX.
How the hell did it ever work? [Robert Thau; reported by Rob Hartill]
*) mod_core.c --- default_type returns DEFAULT_TYPE (the compile-time
default default type); the former default default behavior when all
type-checkers defaulted had been a core dump. [Paul Sutton]
*) Copy filenames out of the struct dirent when indexing
directories. (On Linux, readdir() returns a pointer to the same
memory area every time). Fix is in mod_dir.c. [Paul Sutton]
Changes with Shambhala 0.5.3 [not released]
*) Default response handler notes "file not found" in the error log,
if the file was not found. [Cliff Skolnick].
*) Another Cliff bug --- "GET /~user" now properly redirects (the userdir
code no longer sets up bogus PATH_INFO which fakes out the directory
handler). [Cliff Skolnick]
Changes with Shambhala 0.5.2 06 Jul 1995
*) Changes to http_main.c --- root server no longer plays silly
games with SIGCHLD, and so now detects and replaces dying
children. Child processes just die on SIGTERM, without taking
the whole process group with them. Potential problem --- if any
child process refuses to die, we hang in restart.
MaxRequestsPerChild may still not work, but it certainly works
better than it did before this! [Robert Thau]
*) mod_dir.c bug fixes: ReadmeName and HeaderName
work (or work better, at least); over-long description lines
properly terminated. [Mark Cox]
*) http_request.c now calls unescape_url() more places where it
should [Paul Sutton].
*) More directory handling bugs (reported by Cox)
Parent Directory link is now set correctly. [Robert Thau]
Changes with Shambhala 0.5.1 04 Jul 1995
*) Generalized cleanup interface in alloc.c --- any function can be
registered with alloc.c as a cleanup for a resource pool;
tracking of files and file descriptors has been reimplemented in
terms of this interface, so I can give it some sort of a test.
[Robert Thau]
*) More changes in alloc.c --- new cleanup_for_exec() function,
which tracks down and closes all file descriptors which have been
registered with the alloc.c machinery before the server exec()s a
child process for CGI or <!--#exec-->. CGI children now get
started with exactly three file descriptors open. Hopefully,
this cures the problem Rob H. was having with overly persistent
CGI connections. [Robert Thau]
*) Mutual exclusion around the accept() in child_main() --- this is
required on at least SGI, Solaris and Linux, and is #ifdef'ed in
by default on those systems only (-DFCNTL_SERIALIZED_ACCEPT).
This uses fcntl(F_SETLK,...) on the error log descriptor because
flock() on that descriptor won't work on systems which have BSD
flock() semantics, including (I think) Linux 1.3 and Solaris.
This does work on SunOS (when the server is idle, only one
process in the pool is waiting on accept()); it *ought* to work
on the other systems. [Robert Thau]
*) FreeBSD and BSDI portability tweaks [Chuck Murcko]
*) sizeof(*sa_client) bugfix from [Rob Hartill]
*) pstrdup(..., NULL) returns NULL, [Randy Terbush]
*) block_alarms() to avoid leaking the DBM* in dbm auth (this should
be unnecessary if I go to the revised timeout-handling scheme).
[Robert Thau]
*) For NCSA bug-compatibility, set QUERY_STRING env var (to a null
string) even if none came in with the request. [Robert Thau]
*) CHANGES file added to distribution ;-).
Changes with Shambhala 0.4.5
*) mod_dld --- early dynamic loading support [rst]
*) Add wildcard content handlers for XBITHACK; default_hander now
invoked with that mechanism (as a handler hanging off mod_core) [rst]
*) XBITHACK supported as a wildcard content-handler, and
configurable at run-time (not just at compile time, as in the
"patchy server" releases) [rst]
Changes with Shambhala 0.4.4 30 Jun 1995
*) Fixed basic thinkos in mod_dbm_auth.c [rst, reported by Mark Cox]
*) Handle Addtype x/y .z [rst, reported by Cox]
Changes with Shambhala 0.4.3
*) Fixed very dumb bug in mod_alias; "Alias" and "Redirect" are not
synonymous [rst, terbush]
Changes with Shambhala 0.4.1 28 Jun 1995
*) First-cut virtual host implementation; some refit in the config
reading code, and log management, was necessary to support this [rst]
*) Sub-pool machinery, originally added to avoid excessive storage
allocation on listings of large directories (which turned out to
be the problem that the 0.3 storage accounting was added to
find). Subrequests and mod_dir changed to use subpools. [rst]
*) More memory debugging --- free list consistency checks. [rst]
*) Added err_headers to request_rec, with support elsewhere [rst]
*) Other fixes to minor bugs in mod_dir and mod_includes [rst, terbush]
Changes with Shambhala 0.3 19 Jun 1995
*) Switch ONE_PROCESS to a runtime command-line option (-X)
*) Don't compile in mod_ai_backcompat by default
*) Switch name of server from Apache to Shambhala in Makefile
*) Add some accounting routines to track memory usage in the pools,
for debugging
Changes with Shambhala 0.2
*) Set DOCUMENT_ROOT CGI variable
*) Add single-process debugging, as a compile-time option (ONE_PROCESS)
*) Add critical section protection to handling of cleanup structures
in alloc.c [rst]
*) Significant code reorg within the server core to group related
functions together [rst]
*) Correctly handle clients that hang up before sending any request
[rst]
*) Replace dying child processes. [rst]
Changes with Shambhala 0.1 12 Jun 1995
Major rewrite of the pre-existing "patchy server" codebase, by
Robert Thau (rst). Significant portions of the server code, such
as configuration-file handling and HTTP authentication support,
were ripped out and rewritten from scratch. Code that was not
completely rewritten was significantly altered.
Major changes with this release include:
*) Introduction of the module API; in request handling, the central
machinery just dispatches to various modules, which actually do
most of the work. Configuration handling is similar --- modules
declare their own commands, and the central machinery just
dispatches to them.
API features from shambhala/0.1 were substantially unchanged in
Apache 1.0 and 1.1. (1.0 API features not yet present in this
release, such as wildcard handlers and subpools, were added in
subsequent Shambhala releases, and were also generally rst's
work).
*) This release included the following modules:
mod_access (access control --- allow and deny directives),
mod_alias (Alias and Redirect commands),
mod_auth (straight HTTP authentication, based on flat-files)
mod_auth_dbm (same, with dbm files)
mod_cgi (CGI scripts and, in this release, ScriptAlias)
mod_common_log (CLF access logs; later renamed mod_log_common)
mod_dir (directory indexing)
mod_include (server-side includes)
mod_mime (AddType directives)
mod_negotiation (content negotiation)
mod_userdir (support for users' public_html directories)
It also included a mod_ai_backcompat, which was a private hack
for back-compatibility with rst's own AI-lab servers.
All of these modules were substantially complete, and functional
or nearly so (a few, which implemented features not in use at
Thau's site, required patches of a few lines).
*) sub-request machinery, to allow modules to determine how other
modules would assign MIME types to a given file, or optionally
serve its content (this is heavily used by mod_dir, mod_include
and mod_negotiation).
*) Resource pool system for keeping track of memory allocated and
files opened in service of a particular request. Much of the
code in the modules (when they weren't rewrites) was adjusted to
replace a pervasive convention of using fixed-size buffers on
the stack with an equally pervasive convention of using memory
allocated with palloc().
*) Reorganization of data structures associated with a given
request to eliminate use of global variables and the troublesome
unmunge_name function (used in NCSA and early Apache releases to
attempt to determine the URI which mapped to a given filename
--- a difficult proposition, given that it is easy to produce
setups in which multiple URIs map to the same file).
*) Source files renamed and rearranged
*) Very simple pre-forking behavior --- parent process forked off a
fixed number of children, and then just waited for SIGHUP.
*) Other more minor changes too numerous to list.
This release included modified versions of a lot of code from the
Apache 0.6.4 public release, plus an early pre-forking patch
codeveloped by Robert Thau and Rob Hartill.
Changes with Apache 0.7.3 20 Jun 1995
*) There were a bunch of changes between Apache 0.6.4 and 0.7.3 that
were incorporated by Rob Hartill on the main branch while Robert Thau
worked on the Shambhala rewrite above. Most were merged into the
Shambala architecture after Apache 0.8.0.
Changes with Apache 0.6.4 13 May 1995
*) Patches by Rob Hartill, Cliff Skolnick, Randy Terbush, Robert Thau,
and others.
Changes with Apache 0.5.1 10 Apr 1995
Changes with Apache 0.4 02 Apr 1995
*) Patches by Brian Behlendorf, Andrew Wilson, Robert Thau,
and Rob Hartill.
Changes with Apache 0.3 24 Mar 1995
*) Patches by Robert Thau, David Robinson, Rob Hartill, and
Carlos Varela.
Changes with Apache 0.2 18 Mar 1995
*) Based on NCSA httpd 1.3 by Rob McCool and patches by CERT,
Roy Fielding, Robert Thau, Nicolas Pioch, David Robinson,
Brian Behlendorf, Rob Hartill, and Cliff Skolnick.