1 APACHE 2.1 STATUS: -*-text-*-
2 Last modified at [$Date$]
4 Release [NOTE that only Alpha/Beta releases occur in 2.1 development]:
7 2.1.2 : Released on 12/08/2004 as alpha.
8 2.1.1 : Released on 11/19/2004 as alpha.
11 Please consult the following STATUS files for information
15 * srclib/apr-util/STATUS
18 Contributors looking for a mission:
20 * Just do an egrep on "TODO" or "XXX" in the source.
22 * Review the "PatchAvailable" bugs in the bug database.
23 Append a comment saying "Reviewed and tested".
25 * Open bugs in the bug database.
27 CURRENT RELEASE NOTES:
31 * Handling of non-trailing / config by non-default handler is broken
32 http://marc.theaimsgroup.com/?l=apache-httpd-dev&m=105451701628081&w=2
33 jerenkrantz asks: Why should this block a release?
35 * the edge connection filter cannot be removed
36 http://marc.theaimsgroup.com/?l=apache-httpd-dev&m=105366252619530&w=2
37 jerenkrantz asks: Why should this block a release?
39 * Replace proxy handling of request bodies with something which doesn't
40 gobble up arbitrary amounts of memory. See proxy_http.c in
41 proxy-reqbody branch for new implementation.
45 * httpd-std.conf and friends
47 a) httpd-std.conf should be tailored by install (from src or
48 binbuild) even if user has existing httpd.conf
49 +1: trawick, slive, gregames, ianh, Ken, wrowe, jwoolley, jim, nd,
51 wrowe - prefer httpd.default.conf to avoid ambiguity with cvs
53 b) tailored httpd-std.conf should be copied by install to
57 c) tailored httpd-std.conf should be installed to
58 sysconfdir/examples or manualdir/exampleconf/
59 +1: slive, trawick, Ken, nd (prefer the latter), erikabele
61 d) Installing a set of default config files when upgrading a server
62 doesn't make ANY sense at all.
63 +1: ianh - medium/big sites don't use 'standard config' anyway, as it
64 usually needs major customizations
65 -1: Ken, wrowe, jwoolley, jim, nd, erikabele
66 wrowe - diff is wonderful when comparing old/new default configs,
67 even for customized sites that ianh mentions
68 jim - ... assuming that the default configs have been updated
69 with the required inline docs to explain the
72 * If the parent process dies, should the remaining child processes
73 "gracefully" self-terminate. Or maybe we should make it a runtime
74 option, or have a concept of 2 parent processes (one being a
76 See: Message-ID: <3C58232C.FE91F19F@Golux.Com>
78 Self-destruct: Ken, Martin, Lars
79 Not self-destruct: BrianP, Ian, Cliff, BillS
80 Make it runtime configurable: Aaron, jim, Justin, wrowe, rederpj, nd
82 /* The below was a concept on *how* to handle the problem */
83 Have 2 parents: +1: jim
84 -1: Justin, wrowe, rederpj, nd
85 +0: Lars, Martin (while standing by, could it do
88 * Make the worker MPM the default MPM for threaded Unix boxes.
89 +1: Justin, Ian, Cliff, BillS, striker, wrowe, nd
90 +0: BrianP, Aaron (mutex contention is looking better with the
91 latest code, let's continue tuning and testing), rederpj, jim
94 pquerna: Do we want to change this for 2.2?
96 RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
98 * Patches submitted to the bug database:
99 http://issues.apache.org/bugzilla/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=Apache+httpd-2.0&keywords=PatchAvailable
101 * The Event MPM does not work on Solaris 10. Solaris 10 does support the
102 Threadsafe Pollsets required by the Event MPM, but it does not support
103 multiple threads calling accept() at the same time. The current
104 structure of the Event MPM makes adding accept() locking difficult.
106 * Filter stacks and subrequests, redirects and fast redirects.
107 There's at least one PR that suffers from the current unclean behaviour
108 (which lets the server send garbage): PR 17629
109 nd says: Every subrequest should get its own filter stack with the
110 subreq_core filter as bottom-most. That filter does two things:
111 - swallow EOS buckets
112 - redirect the data stream to the upper request's (rr->main)
113 filter chain directly after the subrequest's starting
115 Once we have a clean solution, we can try to optimize
116 it, so that the server won't be slow down too much.
118 * RFC 2616 violations.
120 Open PRs: 15852, 15859, 15861, 15864, 15865, 15866, 15868, 15869,
121 15870, 16120, 16125, 16126, 16133, 16135, 16136, 16137,
122 16138, 16139, 16140, 16142, 16518, 16520, 16521,
123 jerenkrantz says: need to decide how many we need to backport and/or
124 if these rise to showstopper status.
125 wrowe suggests: it would be nice to see "MUST" v.s. "SHOULD" v.s. "MAY"
126 out of this list, without reviewing them individually.
128 * There is a bug in how we sort some hooks, at least the pre-config
129 hook. The first time we call the hooks, they are in the correct
130 order, but the second time, we don't sort them correctly. Currently,
131 the modules/http/config.m4 file has been renamed to
132 modules/http/config2.m4 to work around this problem, it should moved
133 back when this is fixed.
135 OtherBill offers that this is a SERIOUS problem. We do not sort
136 correctly by the ordering arguments passed to the register hook
137 functions. This was proven when I reordered the open_logs hook
138 to attempt to open the error logs prior to the access logs. Possibly
139 the entire sorting code needs to be refactored.
141 * pipes deadlock on all platforms with limited pipe buffers (e.g. both
142 Linux and Win32, as opposed to only Win32 on 1.3). The right solution
143 is either GStein's proposal for a "CGI Brigade", or OtherBill's proposal
144 for "Poll Buckets" for "Polling Filter Chains". Or maybe both :-)
146 * All handlers should always send content down even if r->header_only
147 is set. If not, it means that the HEAD requests don't generate the
148 same headers as a GET which is wrong.
150 * exec cmd and suexec arg-passing enhancements
151 Status: Patches proposed
152 Message-ID: <20020526041748.A29148@prodigy.Redbrick.DCU.IE>
153 (see the "proc.patch" and "suexec-shell.patch" links in this message)
155 * The 2.0.36 worker MPM graceless shutdown changes work but are
156 a bit clunky on some platforms; eg, on Linux, the loop to
157 join each worker thread seems to hang, and the parent ends up
158 killing off the child with SIGKILL. But at least it shuts down.
160 * --enable-mods-shared="foo1 foo2" is busted on Darwin. Pier
161 posted a patch (Message-ID: <B8DBBE8D.575A%pier@betaversion.org>).
163 * We do not properly substitute the prefix-variables in the configuration
164 scripts or generated-configs. (i.e. if sysconfdir is etc,
165 httpd-std.conf points to conf.)
167 * If any request gets through ap_process_request_internal() and is
168 scheduled to be served by the core handler, without a flag that this
169 r->filename was tested by dir/file_walk, we need to 500 at the very
170 end of the ap_process_request_internal() processing so sub_req-esters
171 know this request cannot be run. This provides authors of older
172 modules better compatibility, while still improving the security and
175 Status: still need to decide where this goes, OtherBill comments...
176 Message-ID: <065701c14526$495203b0$96c0b0d0@roweclan.net>
177 [Deleted comments regarding the ap_run_handler phase, as irrelevant
178 as BillS points out that "common case will be caught in
179 default_handler already (with the r->finfo.filetype == 0 check)"
180 and the issue is detecting this -before- we try to run the req.]
182 gregames says: can this happen somehow without a broken module
183 being involved? If not, why waste cycles trying to defend against
184 potential broken modules? It seems futile.
185 wrowe counters: no, it shouldn't happen unless the module is broken.
186 But the right answer is to fail the request up-front in dir/file
187 walk if the path was entirely invalid; and we can't do that either
188 UNTIL 2.1 or we break modules that haven't hooked map_to_storage.
190 * With AP_MODE_EXHAUSTIVE in the core, it is finally clear to me
191 how the Perchild MPM should be re-written. It hasn't worked
192 correctly since filters were added because it wasn't possible to
193 get the content that had already been written and the socket at
194 the same time. This mode lets us do that, so the MPM can be
197 * Can a static httpd be built reliably?
198 Message-ID: <20020207142751.T31582@clove.org>
200 * Usage of APR_BRIGADE_NORMALIZE in core_input_filter should be
202 Message-ID: <Pine.LNX.4.33.0201202232430.318-100000@deepthought.cs.virginia.edu>
203 Jeff wonders if we still care about this. It is no longer an
204 API issue but simply an extra trip through the brigade.
206 * Get perchild to work on platforms other than Linux. This
207 will require a portable mechanism to pass data and file/socket
208 descriptors between vhost child groups. An API was proposed
210 Message-ID: <20020111115006.K1529@clove.org>
212 * Try to get libtool inter-library dependency code working on AIX.
213 Message-ID: <cm3n10lx555.fsf@rdu163-40-092.nc.rr.com>
215 Justin says: If we get it working on AIX, we can enable this
216 on all platforms and clean up our build system
218 Jeff says: I thought I tested a patch for you sometime in
219 January that you were going to commit within a few
222 * Handling of %2f in URIs. Currently both 1.3 and 2.0
223 completely disallow %2f in the request URI path (see
224 ap_unescape_url() in util.c). It's permitted and passed
225 through in the query string, however. Roy says the
226 original reason for disallowing it, from five years ago,
227 was to protect CGI scripts that applied PATH_INFO to
228 a filesystem location and which might be tricked by
229 ..%2f..%2f(...). We *should* allow path-info of the
230 form 'http://foo.com/index.cgi/path/to/path%2finfo'.
231 Since we've revamped a lot of our processing of path
232 segments, it would be nice to allow this, or at least
233 allow it conditionally with a directive.
235 OtherBill adds that %2f as the SECOND character of a multibyte
236 sequence causes the request to fail! This happens notably in
239 * FreeBSD, threads, and worker MPM. All seems to work fine
240 if you only have one worker process with many threads. Add
241 a second worker process and the accept lock seems to be
242 lost. This might be an APR issue with how it deals with
243 the child_init hook (i.e. the fcntl lock needs to be resynced).
244 More examination and analysis is required.
245 Status: This has also been reported on Cygwin.
246 FreeBSD 4.7 was reputed to have 'fixed' threads. Not.
247 FreeBSD 5.2-RC is a confirmed fix w/either libkse or libthr.
248 [libc_r, still the default, does not serve any pages w/worker;
249 so on FreeBSD 5.2, you must use libmap.conf (see man page).]
250 Work needs to be done to get APR to try to be knowledgable that
251 libkse/libthr are acceptable. Still not recommended for the
252 default since libc_r is still broken.
253 Message-ID: <3C2CC514.8EF3BED1@wapme-systems.de> (cygnus)
255 * There is increasing demand from module writers for an API
256 that will allow them to control the server à la apachectl.
257 Reasons include sole-function servers that need to die if
258 an external dependency (e.g., a database) fails, et cetera.
259 Perhaps something in the (ever more abused) scoreboard?
261 On the other hand, we already have a pipe that goes between parent
262 and child for graceful shutdown events, along with an API that
263 can be used to send a message down that pipe. In threaded MPMs,
264 it is easy enough to make that one pipe be used for graceful
265 and graceless events, and it is also easy to open that pipe
266 to both parent and child for writing. Then we just need to
267 figure out how to do graceless on non-threaded MPMs.
269 * Allow the DocumentRoot directive within <Location > scopes? This
270 allows the beloved (crusty) Alias /foo/ /somepath/foo/ followed
271 by a <Directory /somepath/foo> to become simply
272 <Location /foo/> DocumentRoot /somefile/foo (IMHO a bit more legible
273 and in-your-face.) DocumentRoot unset would be accepted [and would
274 not permit content to be served, only virtual resources such as
275 server-info or server-status.
276 This proposed change would _not_ depricate Alias.
277 striker: See the thread starting with Message-ID:
278 JLEGKKNELMHCJPNMOKHOGEEJFBAA.striker@apache.org.
280 * Win32: Rotatelogs sometimes is not terminated when Apache
281 goes down hard. FirstBill was looking at possibly tracking the
282 child's-child processes in the parent process.
283 stoddard: Shared scoreboard might offer a good way for the parent
284 to keep track of 'other child' processes and whack them if the child
286 Other thoughts on walking the process chain using the NT kernel
287 have also been proposed on APR.
289 * Eliminate unnecessary creation of pipes in mod_cgid
291 * Combine log_child and piped_log_spawn. Clean up http_log.c.
294 * Platforms that do not support fork (primarily Win32 and AS/400)
295 Architect start-up code that avoids initializing all the modules
296 in the parent process on platforms that do not support fork.
298 * There are still a number of places in the code where we are
299 losing error status (i.e. throwing away the error returned by a
300 system call and replacing it with a generic error code)
302 * Mass vhosting version of suEXEC.
304 * All DBMs suffer from confusion in support/dbmmanage (perl script) since
305 the dbmmanage employs the first-matched dbm format. This is not
306 necessarily the library that Apache was built with. Aught to
307 rewrite dbmmanage upon installation to bin/ with the proper library
308 for predictable mod_auth_dbm administration.
309 Questions; htdbm exists, time to kill dbmmanage, or does it remain
310 useful as a perl dbm management example? If we keep it,
311 do we address the issue above?
314 Some additional items remaining:
315 - case_preserved_filename stuff
316 (use the new canonical name stuff?)
317 - find a new home for ap_text(_header)
318 - is it possible to remove the DAV: namespace stuff from util_xml?
320 * ap_core_translate() and its use by mod_mmap_static and mod_file_cache
321 are a bit wonky. The function should probably be exposed as a utility
322 function (such as ap_translate_url2fs() or ap_validate_fs_url() or
323 something). Another approach would be a new hook phase after
324 "translate" which would allow the module to munge what the
325 translation has decided to do.
326 Status: Greg +1 (volunteers)
328 * Explore use of a post-config hook for the code in http_main.c which
329 calls ap_fixup_virutal_hosts(), ap_fini_vhost_config(), and
330 ap_sort_hooks() [to reduce the logic in main()]
332 * read the config tree just once, and process N times (as necessary)
334 * (possibly) use UUIDs in mod_unique_id and/or mod_usertrack
336 * (possibly) port the bug fix for PR 6942 (segv when LoadModule is put
337 into a VirtualHost container) to 2.0.
339 * shift stuff to mod_core.h
341 * callers of ap_run_create_request() should check the return value
342 for failure (Doug volunteers)
344 * Win32: Get Apache working on Windows 95/98. The following work
345 (at least) needs to be done:
346 - Document warning that OSR2 is required (for Crypt functions, in
347 rand.c, at least.) This could be resolved with an SSL library, or
348 randomization in APR itself.
349 - Bring the Win9xConHook.dll from 1.3 into 2.0 (no sense till it
350 actually works) and add in a splash of Win9x service code.
352 * Fix the worker MPM to use POD to kill child processes instead
353 of ap_os_killpg, regardless of how they should die.
355 * Scoreboard structures could be changed in the future such that
356 proper alignment is not maintained, leading to segfaults on
357 some systems. Cliff posted a patch to deal with this issue but
358 later recanted. See this message to dev@apr.apache.org:
359 Message-ID: <Pine.LNX.4.44.0203011354090.16457-200000@deepthought
362 * When sufficiently tested, the AllowEncodedSlashes/%2f patch
363 needs to be backported to 2.0 and 1.3.
365 * APXS either needs to be fixed completely for use when apr is out of tree,
366 or it should drop query mode altogether, and we just grow an
367 httpd-config or similar arrangement.
368 To quote a discussion in STATUS earlier:
370 thommay: this doesn't fix all the problems with apxs and out of
371 tree apr/apr-util, but it's a good start. There's still the
372 query cases; but I'm beginning to think that in these cases
373 the app should be querying ap{r,u}-config directly
374 gstein: agreed. apxs should deprecate the -q flag
376 TODO ISSUES REMAINING IN MOD_SSL:
378 * In order to use a DSO version of mod_ssl we have to link with
379 -lssl and -lcrypto. A workaround is in place right now where the
380 entire EXTRA_LIBS macro is being appended to the objects list, but
381 this is a hack. We should either revamp the APACHE_CHECK_SSL_TOOLKIT
382 autoconf function or come up with some other autoconf checks to
383 search for libssl and libcrypto and properly add them to mod_ssl's
386 * SSL renegotiations in combination with POST request
388 * Port or dispose all code inside #if 0...#endif blocks that remain
389 from the porting effort.
391 * Do we need SSL_set_read_ahead()?
393 * the ssl_expr api is NOT THREAD SAFE. race conditions exist:
394 -in ssl_expr_comp() if SSLRequire is used in .htaccess
395 (ssl_expr_info is global)
396 -is ssl_expr_eval() if there is an error
397 (ssl_expr_error is global)
399 * SSLRequire directive (parsing of) leaks memory
401 * Diffie-Hellman-Parameters for temporary keys are hardcoded in
402 ssl_engine_dh.c, while the comment in ssl_engine_kernel.c says:
403 "it is suggested that keys be changed daily or every 500
404 transactions, and more often if possible."
406 * ssl_var_lookup could be rewritten to be MUCH faster
408 * CRL callback should be pluggable
410 * session cache store should be pluggable
412 * init functions should return status code rather than ssl_die()
414 * ssl_engine_pphrase.c needs to be reworked so it is generic enough
415 to also decrypt proxy keys
417 * the shmcb code should just align its memory segment rather than
418 jumping through all the "safe" memcpy and memset hoops
421 * mod_proxy: Ability to run SSL over proxy gateway connections,
422 encrypting (or reencrypting) at the proxy.
424 * mod_cache: Handle ESI tags.
426 * mod_cache: Resolve issue of how to cache page fragements (or perhaps
427 -if- we want to cache page fragements). Today, mod_cache/mod_mem_cache
428 will cache #include 'virtual' requests (but not #include 'file'
429 requests). This was accomplished by making CACHE_IN a
430 CONTENT_SET-1 filter to force it to run before the SUBREQ_CORE
431 filter. But now responses cannot be cached that include the
432 effects of having been run through CONTENT_SET filters
433 (mod_deflate, mod_expires, etc). We could rerun all the
434 CONTENT_SET filters on the cached response, but this will not
435 work in all cases. For example, mod_expires relies on installing
436 the EXPIRATION filter during fixups. Contents served out of
437 mod_cache (out of the quick_handler) bypass -all- the request
438 line server hooks (Ryan really hated this. It is great for
439 performance, but bad because of the complications listed above).
441 mod_cache/mod_mem_cache/mod_disk_cache:
443 * mod_mem_cache: Consider adding a RevalidateTimeout directive to
444 specify time at which local cached content is to be revalidated
445 (ie, underlying file stat'ed to see if it has changed).
447 * mod_cache: CacheEnable/CacheDisable should accept regular expressions.
448 jerenkrantz says: Too slow. Get regexs away from speedy caches by
449 default. Introduce a new CacheEnableRegex if you want.
451 * mod_cache: Fix dependency on ATOMIC operators. Need
452 APR_HAS_ATOMIC_* feature macros.
453 jerenkrantz says: APR 1.0+ has some guaranteed form of atomics.
455 * mod_mem_cache/mod_disk_cache: Need to be able to query cache
456 status (num of entries, cache object properties, etc.).
457 mod_status could be extended to query optional hooks defined
458 by modules for the purpose of reporting module status.
459 mod_cache (et. al.) could define optional hooks that are called
460 to collect status. Status should be queryable by
462 jerenkrantz says: Yawn. Who cares.
464 EXPERIMENTAL MODULES:
466 Experimental modules should eventually be be promoted to fully supported
467 status or removed from the repository entirely (ie, the
468 'experiment' failed). This section tracks what needs to happen to
469 get the modules promoted to fully supported status.
472 Other bugs that need fixing:
474 * ap_discard_request should be converted to use the bucket API
475 directly rather than waste cycles copying buffers with the old API.
477 * MaxRequestsPerChild measures connections, not requests.
478 Until someone has a better way, we'll probably just rename it
479 "MaxConnectionsPerChild".
481 * Regex containers don't work in an intutive way
482 Status: No one has come up with an efficient way to fix this
483 behavior. Dean has suggested getting rid of regex containers
485 OtherBill suggests: We at least seem to agree on eliminating
486 the <Container ~ foo> forms, and using only
487 <ContainerMatch foo> semantics.
489 * orig_ct in the byterange/multipart handling may not be
490 needed. Apache 1.3 just never stashed "multipart" into
491 r->content_type. We should probably follow suit since the
492 byterange stuff doesn't want the rest of the code to see the
493 multipart content-type; the other code should still think it is
494 dealing with the <orig_ct> stuff.
495 Status: Greg volunteers to investigate (esp. since he was most
496 likely the one to break it :-)
498 Binaries (probably not till beta):
500 Platform Avail. Volunteer
501 ------------------------------------------------------------------
502 AIX 4.3.3 no Bill Stoddard
505 hppa2.0w-hp-hpux11.00 no Cliff Woolley
506 i386-pc-solaris2.8 no Aaron Bannert
507 i386-unknown-freebsd4.5 no
508 i386-unknown-freebsd4.6 no Cliff Woolley
509 i686-pc-linux-gnu-slackware81 no Cliff Woolley
510 i686-pc-linux-gnu-rh70 no Aaron Bannert
511 i686-pc-linux-gnu-rh73 no Cliff Woolley
513 powerpc-apple-darwin5.5 no Aaron Bannert
514 powerpc-unknown-linux-gnu no Graham Leggett
515 s390-ibm-linux no Greg Ames
516 sparc-sun-solaris2.8 no Jim Jagielski
517 NetWare no Brad Nicholes
520 Win32-x86 no William Rowe