]> granicus.if.org Git - apache/blob - STATUS
replying to why "the edge connection filter cannot be removed" is a
[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.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.
13     2.1.0   : not released.
14
15 Please consult the following STATUS files for information on related projects:
16
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
20
21 Contributors looking for a mission:
22
23     * Just do an egrep on "TODO" or "XXX" in the source.
24
25     * Review the bug database at: http://issues.apache.org/bugzilla/
26
27     * Review the "PatchAvailable" bugs in the bug database:
28
29       http://issues.apache.org/bugzilla/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&product=Apache+httpd-2.0&keywords=PatchAvailable
30
31       After testing, you can append a comment saying "Reviewed and tested".
32
33     * Open bugs in the bug database.
34
35 CURRENT RELEASE NOTES:
36
37 RELEASE SHOWSTOPPERS:
38
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?
42
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. 
49
50 CURRENT VOTES:
51
52     * httpd-std.conf and friends
53
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,
57                erikabele
58            wrowe - prefer httpd.default.conf to avoid ambiguity with cvs
59
60       b) tailored httpd-std.conf should be copied by install to
61          sysconfdir/examples
62          -0:   striker
63
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
67
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
77                      changes
78
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 
82       "hot spare").
83       See: Message-ID: <3C58232C.FE91F19F@Golux.Com>
84
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
88
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
93                                         something useful?)
94
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
99       -0:   Lars
100
101       pquerna: Do we want to change this for 2.2?
102
103 RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
104
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
107
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.
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     * 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_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
457       HTTP or SNMP?
458       jerenkrantz says: Yawn.  Who cares.
459
460 EXPERIMENTAL MODULES:
461
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.
466
467
468 Other bugs that need fixing:
469
470     * MaxRequestsPerChild measures connections, not requests.
471         Until someone has a better way, we'll probably just rename it
472         "MaxConnectionsPerChild".
473     
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
477         completely.
478         OtherBill suggests: We at least seem to agree on eliminating
479                             the <Container ~ foo> forms, and using only
480                             <ContainerMatch foo> semantics.
481
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 :-)
490
491 Binaries (probably not till beta):
492
493  Platform                      Avail.  Volunteer
494  ------------------------------------------------------------------
495  AIX 4.3.3                     no      Bill Stoddard
496  Mandrake 8.1                  no      open
497  FreeBSD 4.1                   no      open
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
505  ia64-hp-hpux11.20             no
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
511  OS/2                          no      Brian Havard
512  OS/390                        no      Greg Ames
513  Win32-x86                     no      William Rowe