]> granicus.if.org Git - apache/blob - STATUS
mod_filter in 2.1 allows better ordering of the filter chain.
[apache] / STATUS
1 APACHE 2.1 STATUS:                                              -*-text-*-
2 Last modified at [$Date$]
3
4 Release [NOTE that only Alpha/Beta releases occur in 2.1 development]:
5
6     2.1.3   : in development
7     2.1.2   : Released on 12/08/2004 as alpha.
8     2.1.1   : Released on 11/19/2004 as alpha.
9     2.1.0   : not released.
10
11 Please consult the following STATUS files for information
12 on related projects:
13
14     * srclib/apr/STATUS
15     * srclib/apr-util/STATUS
16     * docs/STATUS
17
18 Contributors looking for a mission:
19
20     * Just do an egrep on "TODO" or "XXX" in the source.
21
22     * Review the "PatchAvailable" bugs in the bug database.
23       Append a comment saying "Reviewed and tested".
24
25     * Open bugs in the bug database.
26
27 CURRENT RELEASE NOTES:
28
29 RELEASE SHOWSTOPPERS:
30
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?
34
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?
38
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.
42
43 CURRENT VOTES:
44
45     * httpd-std.conf and friends
46
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,
50                erikabele
51            wrowe - prefer httpd.default.conf to avoid ambiguity with cvs
52
53       b) tailored httpd-std.conf should be copied by install to
54          sysconfdir/examples
55          -0:   striker
56
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
60
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
70                      changes
71
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 
75       "hot spare").
76       See: Message-ID: <3C58232C.FE91F19F@Golux.Com>
77
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
81
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
86                                         something useful?)
87
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
92       -0:   Lars
93
94       pquerna: Do we want to change this for 2.2?
95
96 RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
97
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
100
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.
105
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
114                    point.
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.
117
118     * RFC 2616 violations.
119       Closed PRs: 15857.
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.
127
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.
134
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.
140
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 :-)
145
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.
149
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)
154
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.
159
160     * --enable-mods-shared="foo1 foo2" is busted on Darwin.  Pier
161         posted a patch (Message-ID: <B8DBBE8D.575A%pier@betaversion.org>).
162
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.)
166
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 
173       robustness of 2.0. 
174
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.]
181
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.
189
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
195       fixed.
196
197     * Can a static httpd be built reliably?
198         Message-ID: <20020207142751.T31582@clove.org>
199
200     * Usage of APR_BRIGADE_NORMALIZE in core_input_filter should be
201       removed if possible.
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.
205
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
209       on dev@apr:
210         Message-ID: <20020111115006.K1529@clove.org>
211
212     * Try to get libtool inter-library dependency code working on AIX.
213         Message-ID: <cm3n10lx555.fsf@rdu163-40-092.nc.rr.com>
214
215       Justin says: If we get it working on AIX, we can enable this
216                    on all platforms and clean up our build system
217                    somewhat.
218       Jeff says:   I thought I tested a patch for you sometime in
219                    January that you were going to commit within a few
220                    days.
221
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.
234
235         OtherBill adds that %2f as the SECOND character of a multibyte
236         sequence causes the request to fail!  This happens notably in
237         the ja-jis encoding.
238
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)
254
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?
260         
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.
268
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.
279
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 
285         goes down.
286         Other thoughts on walking the process chain using the NT kernel
287         have also been proposed on APR.
288
289     * Eliminate unnecessary creation of pipes in mod_cgid
290
291     * Combine log_child and piped_log_spawn. Clean up http_log.c.
292       Common logging API.
293
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.
297
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)
301
302     * Mass vhosting version of suEXEC.
303
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?
312
313     * Integrate mod_dav.
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?
319
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)
327
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()]
331
332     * read the config tree just once, and process N times (as necessary)
333
334     * (possibly) use UUIDs in mod_unique_id and/or mod_usertrack
335
336     * (possibly) port the bug fix for PR 6942 (segv when LoadModule is put
337       into a VirtualHost container) to 2.0.
338
339     * shift stuff to mod_core.h
340
341     * callers of ap_run_create_request() should check the return value
342       for failure (Doug volunteers)
343
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.
351
352     * Fix the worker MPM to use POD to kill child processes instead
353       of ap_os_killpg, regardless of how they should die.
354
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
360                   .cs.virginia.edu>
361
362     * When sufficiently tested, the AllowEncodedSlashes/%2f patch
363       needs to be backported to 2.0 and 1.3.
364
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:
369
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
375
376 TODO ISSUES REMAINING IN MOD_SSL:
377
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
384       link flags.
385
386     * SSL renegotiations in combination with POST request
387
388     * Port or dispose all code inside #if 0...#endif blocks that remain
389       from the porting effort.
390
391     * Do we need SSL_set_read_ahead()?
392
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)
398
399     * SSLRequire directive (parsing of) leaks memory
400
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."
405
406     * ssl_var_lookup could be rewritten to be MUCH faster
407
408     * CRL callback should be pluggable
409
410     * session cache store should be pluggable
411
412     * init functions should return status code rather than ssl_die()
413
414     * ssl_engine_pphrase.c needs to be reworked so it is generic enough
415       to also decrypt proxy keys
416
417     * the shmcb code should just align its memory segment rather than
418       jumping through all the "safe" memcpy and memset hoops
419
420 WISH LIST
421     * mod_proxy: Ability to run SSL over proxy gateway connections,
422       encrypting (or reencrypting) at the proxy.
423
424     * mod_cache: Handle ESI tags.
425
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).
440
441     mod_cache/mod_mem_cache/mod_disk_cache:
442
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).
446
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.
450
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.
454
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
461       HTTP or SNMP?
462       jerenkrantz says: Yawn.  Who cares.
463
464 EXPERIMENTAL MODULES:
465
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.
470
471
472 Other bugs that need fixing:
473
474     * ap_discard_request should be converted to use the bucket API
475       directly rather than waste cycles copying buffers with the old API.
476
477     * MaxRequestsPerChild measures connections, not requests.
478         Until someone has a better way, we'll probably just rename it
479         "MaxConnectionsPerChild".
480     
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
484         completely.
485         OtherBill suggests: We at least seem to agree on eliminating
486                             the <Container ~ foo> forms, and using only
487                             <ContainerMatch foo> semantics.
488
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 :-)
497
498 Binaries (probably not till beta):
499
500  Platform                      Avail.  Volunteer
501  ------------------------------------------------------------------
502  AIX 4.3.3                     no      Bill Stoddard
503  Mandrake 8.1                  no      open
504  FreeBSD 4.1                   no      open
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
512  ia64-hp-hpux11.20             no
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
518  OS/2                          no      Brian Havard
519  OS/390                        no      Greg Ames
520  Win32-x86                     no      William Rowe