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