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