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