1 APACHE 2.1 STATUS: -*-text-*-
2 Last modified at [$Date$]
4 The current version of this file can be found at:
5 http://svn.apache.org/repos/asf/httpd/httpd/trunk/STATUS
8 [NOTE that only Alpha/Beta releases occur in 2.1 development]
10 2.1.3 : in development
11 2.1.2 : Released on 12/08/2004 as alpha.
12 2.1.1 : Released on 11/19/2004 as alpha.
15 Please consult the following STATUS files for information on related projects:
17 * http://svn.apache.org/repos/asf/apr/apr/trunk/STATUS
18 * http://svn.apache.org/repos/asf/apr/apr-util/trunk/STATUS
19 * http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/STATUS
21 Contributors looking for a mission:
23 * Just do an egrep on "TODO" or "XXX" in the source.
25 * Review the bug database at: http://issues.apache.org/bugzilla/
27 * Review the "PatchAvailable" bugs in the bug database:
29 http://issues.apache.org/bugzilla/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=Apache+httpd-2.0&keywords=PatchAvailable
31 After testing, you can append a comment saying "Reviewed and tested".
33 * Open bugs in the bug database.
35 CURRENT RELEASE NOTES:
39 * Handling of non-trailing / config by non-default handler is broken
40 http://marc.theaimsgroup.com/?l=apache-httpd-dev&m=105451701628081&w=2
41 jerenkrantz asks: Why should this block a release?
43 * the edge connection filter cannot be removed
44 http://marc.theaimsgroup.com/?l=apache-httpd-dev&m=105366252619530&w=2
45 jerenkrantz asks: Why should this block a release?
46 stas replies: because it requires a rewrite of the filters stack
47 implementation (you have suggested that) and once 2.2 is
48 released you can't do that anymore.
52 * httpd-std.conf and friends
54 a) httpd-std.conf should be tailored by install (from src or
55 binbuild) even if user has existing httpd.conf
56 +1: trawick, slive, gregames, ianh, Ken, wrowe, jwoolley, jim, nd,
58 wrowe - prefer httpd.default.conf to avoid ambiguity with cvs
60 b) tailored httpd-std.conf should be copied by install to
64 c) tailored httpd-std.conf should be installed to
65 sysconfdir/examples or manualdir/exampleconf/
66 +1: slive, trawick, Ken, nd (prefer the latter), erikabele
68 d) Installing a set of default config files when upgrading a server
69 doesn't make ANY sense at all.
70 +1: ianh - medium/big sites don't use 'standard config' anyway, as it
71 usually needs major customizations
72 -1: Ken, wrowe, jwoolley, jim, nd, erikabele
73 wrowe - diff is wonderful when comparing old/new default configs,
74 even for customized sites that ianh mentions
75 jim - ... assuming that the default configs have been updated
76 with the required inline docs to explain the
79 * If the parent process dies, should the remaining child processes
80 "gracefully" self-terminate. Or maybe we should make it a runtime
81 option, or have a concept of 2 parent processes (one being a
83 See: Message-ID: <3C58232C.FE91F19F@Golux.Com>
85 Self-destruct: Ken, Martin, Lars
86 Not self-destruct: BrianP, Ian, Cliff, BillS
87 Make it runtime configurable: Aaron, jim, Justin, wrowe, rederpj, nd
89 /* The below was a concept on *how* to handle the problem */
90 Have 2 parents: +1: jim
91 -1: Justin, wrowe, rederpj, nd
92 +0: Lars, Martin (while standing by, could it do
95 * Make the worker MPM the default MPM for threaded Unix boxes.
96 +1: Justin, Ian, Cliff, BillS, striker, wrowe, nd
97 +0: BrianP, Aaron (mutex contention is looking better with the
98 latest code, let's continue tuning and testing), rederpj, jim
101 pquerna: Do we want to change this for 2.2?
103 RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
105 * Patches submitted to the bug database:
106 http://issues.apache.org/bugzilla/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=Apache+httpd-2.0&keywords=PatchAvailable
108 * The Event MPM does not work on Solaris 10. Solaris 10 does support the
109 Threadsafe Pollsets required by the Event MPM, but it does not support
110 multiple threads calling accept() at the same time. The current
111 structure of the Event MPM makes adding accept() locking difficult.
113 * Filter stacks and subrequests, redirects and fast redirects.
114 There's at least one PR that suffers from the current unclean behaviour
115 (which lets the server send garbage): PR 17629
116 nd says: Every subrequest should get its own filter stack with the
117 subreq_core filter as bottom-most. That filter does two things:
118 - swallow EOS buckets
119 - redirect the data stream to the upper request's (rr->main)
120 filter chain directly after the subrequest's starting
122 Once we have a clean solution, we can try to optimize
123 it, so that the server won't be slow down too much.
125 * RFC 2616 violations.
127 Open PRs: 15852, 15859, 15861, 15864, 15865, 15866, 15868, 15869,
128 15870, 16120, 16125, 16126, 16133, 16135, 16136, 16137,
129 16138, 16139, 16140, 16142, 16518, 16520, 16521,
130 jerenkrantz says: need to decide how many we need to backport and/or
131 if these rise to showstopper status.
132 wrowe suggests: it would be nice to see "MUST" v.s. "SHOULD" v.s. "MAY"
133 out of this list, without reviewing them individually.
135 * There is a bug in how we sort some hooks, at least the pre-config
136 hook. The first time we call the hooks, they are in the correct
137 order, but the second time, we don't sort them correctly. Currently,
138 the modules/http/config.m4 file has been renamed to
139 modules/http/config2.m4 to work around this problem, it should moved
140 back when this is fixed.
142 OtherBill offers that this is a SERIOUS problem. We do not sort
143 correctly by the ordering arguments passed to the register hook
144 functions. This was proven when I reordered the open_logs hook
145 to attempt to open the error logs prior to the access logs. Possibly
146 the entire sorting code needs to be refactored.
148 * pipes deadlock on all platforms with limited pipe buffers (e.g. both
149 Linux and Win32, as opposed to only Win32 on 1.3). The right solution
150 is either GStein's proposal for a "CGI Brigade", or OtherBill's proposal
151 for "Poll Buckets" for "Polling Filter Chains". Or maybe both :-)
153 * All handlers should always send content down even if r->header_only
154 is set. If not, it means that the HEAD requests don't generate the
155 same headers as a GET which is wrong.
157 * exec cmd and suexec arg-passing enhancements
158 Status: Patches proposed
159 Message-ID: <20020526041748.A29148@prodigy.Redbrick.DCU.IE>
160 (see the "proc.patch" and "suexec-shell.patch" links in this message)
162 * The 2.0.36 worker MPM graceless shutdown changes work but are
163 a bit clunky on some platforms; eg, on Linux, the loop to
164 join each worker thread seems to hang, and the parent ends up
165 killing off the child with SIGKILL. But at least it shuts down.
167 * --enable-mods-shared="foo1 foo2" is busted on Darwin. Pier
168 posted a patch (Message-ID: <B8DBBE8D.575A%pier@betaversion.org>).
170 * We do not properly substitute the prefix-variables in the configuration
171 scripts or generated-configs. (i.e. if sysconfdir is etc,
172 httpd-std.conf points to conf.)
174 * If any request gets through ap_process_request_internal() and is
175 scheduled to be served by the core handler, without a flag that this
176 r->filename was tested by dir/file_walk, we need to 500 at the very
177 end of the ap_process_request_internal() processing so sub_req-esters
178 know this request cannot be run. This provides authors of older
179 modules better compatibility, while still improving the security and
182 Status: still need to decide where this goes, OtherBill comments...
183 Message-ID: <065701c14526$495203b0$96c0b0d0@roweclan.net>
184 [Deleted comments regarding the ap_run_handler phase, as irrelevant
185 as BillS points out that "common case will be caught in
186 default_handler already (with the r->finfo.filetype == 0 check)"
187 and the issue is detecting this -before- we try to run the req.]
189 gregames says: can this happen somehow without a broken module
190 being involved? If not, why waste cycles trying to defend against
191 potential broken modules? It seems futile.
192 wrowe counters: no, it shouldn't happen unless the module is broken.
193 But the right answer is to fail the request up-front in dir/file
194 walk if the path was entirely invalid; and we can't do that either
195 UNTIL 2.1 or we break modules that haven't hooked map_to_storage.
197 * With AP_MODE_EXHAUSTIVE in the core, it is finally clear to me
198 how the Perchild MPM should be re-written. It hasn't worked
199 correctly since filters were added because it wasn't possible to
200 get the content that had already been written and the socket at
201 the same time. This mode lets us do that, so the MPM can be
204 * Can a static httpd be built reliably?
205 Message-ID: <20020207142751.T31582@clove.org>
207 * Usage of APR_BRIGADE_NORMALIZE in core_input_filter should be
209 Message-ID: <Pine.LNX.4.33.0201202232430.318-100000@deepthought.cs.virginia.edu>
210 Jeff wonders if we still care about this. It is no longer an
211 API issue but simply an extra trip through the brigade.
213 * Get perchild to work on platforms other than Linux. This
214 will require a portable mechanism to pass data and file/socket
215 descriptors between vhost child groups. An API was proposed
217 Message-ID: <20020111115006.K1529@clove.org>
219 * Try to get libtool inter-library dependency code working on AIX.
220 Message-ID: <cm3n10lx555.fsf@rdu163-40-092.nc.rr.com>
222 Justin says: If we get it working on AIX, we can enable this
223 on all platforms and clean up our build system
225 Jeff says: I thought I tested a patch for you sometime in
226 January that you were going to commit within a few
229 * Handling of %2f in URIs. Currently both 1.3 and 2.0
230 completely disallow %2f in the request URI path (see
231 ap_unescape_url() in util.c). It's permitted and passed
232 through in the query string, however. Roy says the
233 original reason for disallowing it, from five years ago,
234 was to protect CGI scripts that applied PATH_INFO to
235 a filesystem location and which might be tricked by
236 ..%2f..%2f(...). We *should* allow path-info of the
237 form 'http://foo.com/index.cgi/path/to/path%2finfo'.
238 Since we've revamped a lot of our processing of path
239 segments, it would be nice to allow this, or at least
240 allow it conditionally with a directive.
242 OtherBill adds that %2f as the SECOND character of a multibyte
243 sequence causes the request to fail! This happens notably in
246 * FreeBSD, threads, and worker MPM. All seems to work fine
247 if you only have one worker process with many threads. Add
248 a second worker process and the accept lock seems to be
249 lost. This might be an APR issue with how it deals with
250 the child_init hook (i.e. the fcntl lock needs to be resynced).
251 More examination and analysis is required.
252 Status: Works with FreeBSD 5.3. Does not work in previous versions.
253 This has also been reported on Cygwin.
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_mem_cache/mod_disk_cache: Need to be able to query cache
452 status (num of entries, cache object properties, etc.).
453 mod_status could be extended to query optional hooks defined
454 by modules for the purpose of reporting module status.
455 mod_cache (et. al.) could define optional hooks that are called
456 to collect status. Status should be queryable by
458 jerenkrantz says: Yawn. Who cares.
460 EXPERIMENTAL MODULES:
462 Experimental modules should eventually be be promoted to fully supported
463 status or removed from the repository entirely (ie, the
464 'experiment' failed). This section tracks what needs to happen to
465 get the modules promoted to fully supported status.
468 Other bugs that need fixing:
470 * MaxRequestsPerChild measures connections, not requests.
471 Until someone has a better way, we'll probably just rename it
472 "MaxConnectionsPerChild".
474 * Regex containers don't work in an intutive way
475 Status: No one has come up with an efficient way to fix this
476 behavior. Dean has suggested getting rid of regex containers
478 OtherBill suggests: We at least seem to agree on eliminating
479 the <Container ~ foo> forms, and using only
480 <ContainerMatch foo> semantics.
482 * orig_ct in the byterange/multipart handling may not be
483 needed. Apache 1.3 just never stashed "multipart" into
484 r->content_type. We should probably follow suit since the
485 byterange stuff doesn't want the rest of the code to see the
486 multipart content-type; the other code should still think it is
487 dealing with the <orig_ct> stuff.
488 Status: Greg volunteers to investigate (esp. since he was most
489 likely the one to break it :-)
491 Binaries (probably not till beta):
493 Platform Avail. Volunteer
494 ------------------------------------------------------------------
495 AIX 4.3.3 no Bill Stoddard
498 hppa2.0w-hp-hpux11.00 no Cliff Woolley
499 i386-pc-solaris2.8 no Aaron Bannert
500 i386-unknown-freebsd4.5 no
501 i386-unknown-freebsd4.6 no Cliff Woolley
502 i686-pc-linux-gnu-slackware81 no Cliff Woolley
503 i686-pc-linux-gnu-rh70 no Aaron Bannert
504 i686-pc-linux-gnu-rh73 no Cliff Woolley
506 powerpc-apple-darwin5.5 no Aaron Bannert
507 powerpc-unknown-linux-gnu no Graham Leggett
508 s390-ibm-linux no Greg Ames
509 sparc-sun-solaris2.8 no Jim Jagielski
510 NetWare no Brad Nicholes
513 Win32-x86 no William Rowe