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