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