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