]> granicus.if.org Git - apache/blob - STATUS
0e81d6b1e9bdecfe44f9578f93bbe48b4f3992f5
[apache] / STATUS
1 APACHE 2.1 STATUS:                                              -*-text-*-
2 Last modified at [$Date$]
3
4 The current version of this file can be found at:
5 http://svn.apache.org/repos/asf/httpd/httpd/trunk/STATUS
6
7 Release history:
8     [NOTE that only Alpha/Beta releases occur in 2.1 development]
9
10     2.1.6   : in development
11     2.1.5   : Tagged on 6/17/2005. 
12     2.1.4   : not released.
13     2.1.3   : Released on  2/22/2005 as alpha.
14     2.1.2   : Released on 12/08/2004 as alpha.
15     2.1.1   : Released on 11/19/2004 as alpha.
16     2.1.0   : not released.
17
18 Please consult the following STATUS files for information on related projects:
19
20     * http://svn.apache.org/repos/asf/apr/apr/trunk/STATUS
21     * http://svn.apache.org/repos/asf/apr/apr-util/trunk/STATUS
22     * http://svn.apache.org/repos/asf/httpd/httpd/trunk/docs/STATUS
23
24 Contributors looking for a mission:
25
26     * Just do an egrep on "TODO" or "XXX" in the source.
27
28     * Review the bug database at: http://issues.apache.org/bugzilla/
29
30     * Review the "PatchAvailable" bugs in the bug database:
31
32       http://issues.apache.org/bugzilla/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=Apache+httpd-2.0&keywords=PatchAvailable
33
34       After testing, you can append a comment saying "Reviewed and tested".
35
36     * Open bugs in the bug database.
37
38 CURRENT RELEASE NOTES:
39
40 RELEASE SHOWSTOPPERS:
41
42     * Handling of non-trailing / config by non-default handler is broken
43       http://marc.theaimsgroup.com/?l=apache-httpd-dev&m=105451701628081&w=2
44       jerenkrantz asks: Why should this block a release?
45
46     * the edge connection filter cannot be removed 
47       http://marc.theaimsgroup.com/?l=apache-httpd-dev&m=105366252619530&w=2
48       jerenkrantz asks: Why should this block a release?
49       stas replies: because it requires a rewrite of the filters stack
50             implementation (you have suggested that) and once 2.2 is
51             released you can't do that anymore. 
52
53 CURRENT VOTES:
54
55     * httpd-std.conf and friends
56
57       a) httpd-std.conf should be tailored by install (from src or
58          binbuild) even if user has existing httpd.conf
59          +1:   trawick, slive, gregames, ianh, Ken, wrowe, jwoolley, jim, nd,
60                erikabele
61            wrowe - prefer httpd.default.conf to avoid ambiguity with cvs
62
63       b) tailored httpd-std.conf should be copied by install to
64          sysconfdir/examples
65          -0:   striker
66
67       c) tailored httpd-std.conf should be installed to
68          sysconfdir/examples or manualdir/exampleconf/
69          +1:   slive, trawick, Ken, nd (prefer the latter), erikabele
70
71       d) Installing a set of default config files when upgrading a server
72          doesn't make ANY sense at all.
73          +1:   ianh - medium/big sites don't use 'standard config' anyway, as it
74                       usually needs major customizations
75          -1:   Ken, wrowe, jwoolley, jim, nd, erikabele
76            wrowe - diff is wonderful when comparing old/new default configs,
77                    even for customized sites that ianh mentions
78            jim - ... assuming that the default configs have been updated
79                      with the required inline docs to explain the
80                      changes
81
82     * If the parent process dies, should the remaining child processes
83       "gracefully" self-terminate. Or maybe we should make it a runtime
84       option, or have a concept of 2 parent processes (one being a 
85       "hot spare").
86       See: Message-ID: <3C58232C.FE91F19F@Golux.Com>
87
88       Self-destruct: Ken, Martin, Lars
89       Not self-destruct: BrianP, Ian, Cliff, BillS
90       Make it runtime configurable: Aaron, jim, Justin, wrowe, rederpj, nd
91
92       /* The below was a concept on *how* to handle the problem */
93       Have 2 parents: +1: jim
94                       -1: Justin, wrowe, rederpj, nd
95                       +0: Lars, Martin (while standing by, could it do
96                                         something useful?)
97
98     * Make the worker MPM the default MPM for threaded Unix boxes.
99       +1:   Justin, Ian, Cliff, BillS, striker, wrowe, nd
100       +0:   BrianP, Aaron (mutex contention is looking better with the
101             latest code, let's continue tuning and testing), rederpj, jim
102       -0:   Lars
103
104       pquerna: Do we want to change this for 2.2?
105
106 RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
107
108     * Patches submitted to the bug database:
109       http://issues.apache.org/bugzilla/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=Apache+httpd-2.0&keywords=PatchAvailable
110
111     * The Event MPM does not work on Solaris 10. PR 34040.
112
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
121                    point.
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.
124
125     * RFC 2616 violations.
126       Closed PRs: 15857.
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.
134
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.
141
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.
147
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 :-)
152
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.
156
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)
161
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.
166
167     * --enable-mods-shared="foo1 foo2" is busted on Darwin.  Pier
168         posted a patch (Message-ID: <B8DBBE8D.575A%pier@betaversion.org>).
169
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.)
173
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 
180       robustness of 2.0. 
181
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.]
188
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.
196
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
202       fixed.
203
204     * Can a static httpd be built reliably?
205         Message-ID: <20020207142751.T31582@clove.org>
206
207     * Usage of APR_BRIGADE_NORMALIZE in core_input_filter should be
208       removed if possible.
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.
212
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
216       on dev@apr:
217         Message-ID: <20020111115006.K1529@clove.org>
218
219     * Try to get libtool inter-library dependency code working on AIX.
220         Message-ID: <cm3n10lx555.fsf@rdu163-40-092.nc.rr.com>
221
222       Justin says: If we get it working on AIX, we can enable this
223                    on all platforms and clean up our build system
224                    somewhat.
225       Jeff says:   I thought I tested a patch for you sometime in
226                    January that you were going to commit within a few
227                    days.
228
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.
241
242         OtherBill adds that %2f as the SECOND character of a multibyte
243         sequence causes the request to fail!  This happens notably in
244         the ja-jis encoding.
245
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.
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     * APXS either needs to be fixed completely for use when apr is out of tree,
363       or it should drop query mode altogether, and we just grow an 
364       httpd-config or similar arrangement. 
365       To quote a discussion in STATUS earlier:
366
367           thommay: this doesn't fix all the problems with apxs and out of
368                    tree apr/apr-util, but it's a good start. There's still the 
369                    query cases; but I'm beginning to think that in these cases 
370                    the app should be querying ap{r,u}-config directly
371           gstein: agreed. apxs should deprecate the -q flag
372           pquerna: I vote for a httpd-config, and to deprecate the -q flag.
373           minfrin: +1 for httpd-config, and to deprecate -q.
374
375 TODO ISSUES REMAINING IN MOD_SSL:
376
377     * In order to use a DSO version of mod_ssl we have to link with
378       -lssl and -lcrypto. A workaround is in place right now where the
379       entire EXTRA_LIBS macro is being appended to the objects list, but
380       this is a hack. We should either revamp the APACHE_CHECK_SSL_TOOLKIT
381       autoconf function or come up with some other autoconf checks to
382       search for libssl and libcrypto and properly add them to mod_ssl's
383       link flags.
384
385     * SSL renegotiations in combination with POST request
386
387     * Port or dispose all code inside #if 0...#endif blocks that remain
388       from the porting effort.
389
390     * Do we need SSL_set_read_ahead()?
391
392     * the ssl_expr api is NOT THREAD SAFE.  race conditions exist:
393        -in ssl_expr_comp() if SSLRequire is used in .htaccess
394         (ssl_expr_info is global)
395        -is ssl_expr_eval() if there is an error
396         (ssl_expr_error is global)
397
398     * SSLRequire directive (parsing of) leaks memory
399
400     * Diffie-Hellman-Parameters for temporary keys are hardcoded in
401       ssl_engine_dh.c, while the comment in ssl_engine_kernel.c says:
402       "it is suggested that keys be changed daily or every 500
403       transactions, and more often if possible."
404
405     * ssl_var_lookup could be rewritten to be MUCH faster
406
407     * CRL callback should be pluggable
408
409     * session cache store should be pluggable
410
411     * init functions should return status code rather than ssl_die()
412
413     * ssl_engine_pphrase.c needs to be reworked so it is generic enough
414       to also decrypt proxy keys
415
416     * the shmcb code should just align its memory segment rather than
417       jumping through all the "safe" memcpy and memset hoops
418
419 WISH LIST
420     * mod_proxy: Ability to run SSL over proxy gateway connections,
421       encrypting (or reencrypting) at the proxy.
422
423     * mod_cache: Handle ESI tags.
424
425     * mod_cache: Resolve issue of how to cache page fragements (or perhaps
426       -if- we want to cache page fragements). Today, mod_cache/mod_mem_cache
427       will cache #include 'virtual' requests (but not #include 'file'
428       requests). This was accomplished by making CACHE_IN a
429       CONTENT_SET-1 filter to force it to run before the SUBREQ_CORE
430       filter.  But now responses cannot be cached that include the
431       effects of having been run through CONTENT_SET filters
432       (mod_deflate, mod_expires, etc).  We could rerun all the
433       CONTENT_SET filters on the cached response, but this will not
434       work in all cases. For example, mod_expires relies on installing
435       the EXPIRATION filter during fixups. Contents served out of
436       mod_cache (out of the quick_handler) bypass -all- the request
437       line server hooks (Ryan really hated this. It is great for
438       performance, but bad because of the complications listed above).
439
440     mod_cache/mod_mem_cache/mod_disk_cache:
441
442     * mod_mem_cache: Consider adding a RevalidateTimeout directive to
443       specify time at which local cached content is to be revalidated
444       (ie, underlying file stat'ed to see if it has changed).
445
446     * mod_cache: CacheEnable/CacheDisable should accept regular expressions.
447       jerenkrantz says: Too slow.  Get regexs away from speedy caches by
448                         default.  Introduce a new CacheEnableRegex if you want.
449
450     * mod_mem_cache/mod_disk_cache: Need to be able to query cache
451       status (num of entries, cache object properties, etc.).
452       mod_status could be extended to query optional hooks defined
453       by modules for the purpose of reporting module status.
454       mod_cache (et. al.) could define optional hooks that are called
455       to collect status.  Status should be queryable by
456       HTTP or SNMP?
457       jerenkrantz says: Yawn.  Who cares.
458
459 EXPERIMENTAL MODULES:
460
461     Experimental modules should eventually be be promoted to fully supported
462     status or removed from the repository entirely (ie, the
463     'experiment' failed). This section tracks what needs to happen to 
464     get the modules promoted to fully supported status.
465
466
467 Other bugs that need fixing:
468
469     * MaxRequestsPerChild measures connections, not requests.
470         Until someone has a better way, we'll probably just rename it
471         "MaxConnectionsPerChild".
472     
473     * Regex containers don't work in an intutive way
474         Status: No one has come up with an efficient way to fix this
475         behavior. Dean has suggested getting rid of regex containers
476         completely.
477         OtherBill suggests: We at least seem to agree on eliminating
478                             the <Container ~ foo> forms, and using only
479                             <ContainerMatch foo> semantics.
480
481     * orig_ct in the byterange/multipart handling may not be
482       needed. Apache 1.3 just never stashed "multipart" into
483       r->content_type. We should probably follow suit since the
484       byterange stuff doesn't want the rest of the code to see the
485       multipart content-type; the other code should still think it is
486       dealing with the <orig_ct> stuff.
487         Status: Greg volunteers to investigate (esp. since he was most 
488                 likely the one to break it :-)
489
490 Binaries (probably not till beta):
491
492  Platform                      Avail.  Volunteer
493  ------------------------------------------------------------------
494  AIX 4.3.3                     no      Bill Stoddard
495  Mandrake 8.1                  no      open
496  FreeBSD 4.1                   no      open
497  hppa2.0w-hp-hpux11.00         no      Cliff Woolley
498  i386-pc-solaris2.8            no      Aaron Bannert
499  i386-unknown-freebsd4.5       no
500  i386-unknown-freebsd4.6       no      Cliff Woolley
501  i686-pc-linux-gnu-slackware81 no      Cliff Woolley
502  i686-pc-linux-gnu-rh70        no      Aaron Bannert
503  i686-pc-linux-gnu-rh73        no      Cliff Woolley
504  ia64-hp-hpux11.20             no
505  powerpc-apple-darwin5.5       no      Aaron Bannert
506  powerpc-unknown-linux-gnu     no      Graham Leggett
507  s390-ibm-linux                no      Greg Ames
508  sparc-sun-solaris2.8          no      Jim Jagielski
509  NetWare                       no      Brad Nicholes
510  OS/2                          no      Brian Havard
511  OS/390                        no      Greg Ames
512  Win32-x86                     no      William Rowe