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