]> granicus.if.org Git - apache/blob - STATUS
Clean up some string manipulation.
[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.0&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     * --enable-mods-shared="foo1 foo2" is busted on Darwin.  Pier
156         posted a patch (Message-ID: <B8DBBE8D.575A%pier@betaversion.org>).
157
158     * We do not properly substitute the prefix-variables in the configuration
159       scripts or generated-configs.  (i.e. if sysconfdir is etc,
160       httpd-std.conf points to conf.)
161
162     * If any request gets through ap_process_request_internal() and is
163       scheduled to be served by the core handler, without a flag that this 
164       r->filename was tested by dir/file_walk, we need to 500 at the very 
165       end of the ap_process_request_internal() processing so sub_req-esters
166       know this request cannot be run.  This provides authors of older 
167       modules better compatibility, while still improving the security and 
168       robustness of 2.0. 
169
170         Status: still need to decide where this goes, OtherBill comments...
171         Message-ID: <065701c14526$495203b0$96c0b0d0@roweclan.net>
172         [Deleted comments regarding the ap_run_handler phase, as irrelevant
173             as BillS points out that "common case will be caught in
174             default_handler already (with the r->finfo.filetype == 0 check)"
175             and the issue is detecting this -before- we try to run the req.]
176
177         gregames says: can this happen somehow without a broken module
178             being involved?  If not, why waste cycles trying to defend against
179             potential broken modules?  It seems futile.
180         wrowe counters: no, it shouldn't happen unless the module is broken.
181             But the right answer is to fail the request up-front in dir/file
182             walk if the path was entirely invalid; and we can't do that either
183             UNTIL 2.1 or we break modules that haven't hooked map_to_storage.
184
185     * With AP_MODE_EXHAUSTIVE in the core, it is finally clear to me
186       how the Perchild MPM should be re-written.  It hasn't worked
187       correctly since filters were added because it wasn't possible to
188       get the content that had already been written and the socket at
189       the same time.  This mode lets us do that, so the MPM can be
190       fixed.
191
192     * Can a static httpd be built reliably?
193         Message-ID: <20020207142751.T31582@clove.org>
194
195     * Usage of APR_BRIGADE_NORMALIZE in core_input_filter should be
196       removed if possible.
197         Message-ID: <Pine.LNX.4.33.0201202232430.318-100000@deepthought.cs.virginia.edu>
198         Jeff wonders if we still care about this.  It is no longer an
199         API issue but simply an extra trip through the brigade.
200
201     * Get perchild to work on platforms other than Linux. This
202       will require a portable mechanism to pass data and file/socket
203       descriptors between vhost child groups. An API was proposed
204       on dev@apr:
205         Message-ID: <20020111115006.K1529@clove.org>
206
207     * Try to get libtool inter-library dependency code working on AIX.
208         Message-ID: <cm3n10lx555.fsf@rdu163-40-092.nc.rr.com>
209
210       Justin says: If we get it working on AIX, we can enable this
211                    on all platforms and clean up our build system
212                    somewhat.
213       Jeff says:   I thought I tested a patch for you sometime in
214                    January that you were going to commit within a few
215                    days.
216
217     * Handling of %2f in URIs.  Currently both 1.3 and 2.0
218       completely disallow %2f in the request URI path (see
219       ap_unescape_url() in util.c).  It's permitted and passed
220       through in the query string, however.  Roy says the
221       original reason for disallowing it, from five years ago,
222       was to protect CGI scripts that applied PATH_INFO to
223       a filesystem location and which might be tricked by
224       ..%2f..%2f(...).  We *should* allow path-info of the
225       form 'http://foo.com/index.cgi/path/to/path%2finfo'.
226       Since we've revamped a lot of our processing of path
227       segments, it would be nice to allow this, or at least
228       allow it conditionally with a directive.
229
230         OtherBill adds that %2f as the SECOND character of a multibyte
231         sequence causes the request to fail!  This happens notably in
232         the ja-jis encoding.
233
234     * FreeBSD, threads, and worker MPM.  All seems to work fine 
235       if you only have one worker process with many threads.  Add 
236       a second worker process and the accept lock seems to be
237       lost.  This might be an APR issue with how it deals with
238       the child_init hook (i.e. the fcntl lock needs to be resynced).
239       More examination and analysis is required.
240         Status: Works with FreeBSD 5.3. Does not work in previous versions.
241                 This has also been reported on Cygwin.
242
243     * There is increasing demand from module writers for an API
244       that will allow them to control the server Ã  la apachectl.
245       Reasons include sole-function servers that need to die if
246       an external dependency (e.g., a database) fails, et cetera.
247       Perhaps something in the (ever more abused) scoreboard?
248         
249              On the other hand, we already have a pipe that goes between parent
250              and child for graceful shutdown events, along with an API that
251              can be used to send a message down that pipe.  In threaded MPMs,
252              it is easy enough to make that one pipe be used for graceful
253              and graceless events, and it is also easy to open that pipe
254              to both parent and child for writing.  Then we just need to
255              figure out how to do graceless on non-threaded MPMs.
256
257     * Allow the DocumentRoot directive within <Location > scopes?  This
258       allows the beloved (crusty) Alias /foo/ /somepath/foo/ followed
259       by a <Directory /somepath/foo> to become simply 
260       <Location /foo/> DocumentRoot /somefile/foo (IMHO a bit more legible
261       and in-your-face.)  DocumentRoot unset would be accepted [and would
262       not permit content to be served, only virtual resources such as
263       server-info or server-status.
264       This proposed change would _not_ depricate Alias.
265         striker: See the thread starting with Message-ID:
266           JLEGKKNELMHCJPNMOKHOGEEJFBAA.striker@apache.org.
267
268     * Win32: Rotatelogs sometimes is not terminated when Apache
269       goes down hard.  FirstBill was looking at possibly tracking the 
270       child's-child processes in the parent process.
271         stoddard: Shared scoreboard might offer a good way for the parent 
272         to keep track of 'other child' processes and whack them if the child 
273         goes down.
274         Other thoughts on walking the process chain using the NT kernel
275         have also been proposed on APR.
276
277     * Eliminate unnecessary creation of pipes in mod_cgid
278
279     * Combine log_child and piped_log_spawn. Clean up http_log.c.
280       Common logging API.
281
282     * Platforms that do not support fork (primarily Win32 and AS/400)
283       Architect start-up code that avoids initializing all the modules 
284       in the parent process on platforms that do not support fork.
285
286     * There are still a number of places in the code where we are
287       losing error status (i.e. throwing away the error returned by a
288       system call and replacing it with a generic error code)
289
290     * Mass vhosting version of suEXEC.
291
292     * All DBMs suffer from confusion in support/dbmmanage (perl script) since 
293       the dbmmanage employs the first-matched dbm format.  This is not
294       necessarily the library that Apache was built with.  Aught to
295       rewrite dbmmanage upon installation to bin/ with the proper library 
296       for predictable mod_auth_dbm administration.
297         Questions; htdbm exists, time to kill dbmmanage, or does it remain
298                    useful as a perl dbm management example?  If we keep it,
299                    do we address the issue above?
300
301     * Integrate mod_dav.
302         Some additional items remaining:
303         - case_preserved_filename stuff
304             (use the new canonical name stuff?)
305         - find a new home for ap_text(_header)
306         - is it possible to remove the DAV: namespace stuff from util_xml?
307
308     * ap_core_translate() and its use by mod_mmap_static and mod_file_cache
309       are a bit wonky.  The function should probably be exposed as a utility 
310       function (such as ap_translate_url2fs() or ap_validate_fs_url() or 
311       something).  Another approach would be a new hook phase after
312       "translate" which would allow the module to munge what the
313       translation has decided to do.
314         Status: Greg +1 (volunteers)
315
316     * Explore use of a post-config hook for the code in http_main.c which
317       calls ap_fixup_virutal_hosts(), ap_fini_vhost_config(), and
318       ap_sort_hooks()  [to reduce the logic in main()]
319
320     * read the config tree just once, and process N times (as necessary)
321
322     * (possibly) use UUIDs in mod_unique_id and/or mod_usertrack
323
324     * (possibly) port the bug fix for PR 6942 (segv when LoadModule is put
325       into a VirtualHost container) to 2.0.
326
327     * shift stuff to mod_core.h
328
329     * callers of ap_run_create_request() should check the return value
330       for failure (Doug volunteers)
331
332     * Fix the worker MPM to use POD to kill child processes instead
333       of ap_os_killpg, regardless of how they should die.
334
335     * Scoreboard structures could be changed in the future such that
336       proper alignment is not maintained, leading to segfaults on 
337       some systems.  Cliff posted a patch to deal with this issue but
338       later recanted. See this message to dev@apr.apache.org:
339       Message-ID: <Pine.LNX.4.44.0203011354090.16457-200000@deepthought
340                   .cs.virginia.edu>
341
342     * APXS either needs to be fixed completely for use when apr is out of tree,
343       or it should drop query mode altogether, and we just grow an 
344       httpd-config or similar arrangement. 
345       To quote a discussion in STATUS earlier:
346
347           thommay: this doesn't fix all the problems with apxs and out of
348                    tree apr/apr-util, but it's a good start. There's still the 
349                    query cases; but I'm beginning to think that in these cases 
350                    the app should be querying ap{r,u}-config directly
351           gstein: agreed. apxs should deprecate the -q flag
352           pquerna: I vote for a httpd-config, and to deprecate the -q flag.
353           minfrin: +1 for httpd-config, and to deprecate -q.
354
355
356 TODO ISSUES REMAINING IN MOD_SSL:
357
358     * In order to use a DSO version of mod_ssl we have to link with
359       -lssl and -lcrypto. A workaround is in place right now where the
360       entire EXTRA_LIBS macro is being appended to the objects list, but
361       this is a hack. We should either revamp the APACHE_CHECK_SSL_TOOLKIT
362       autoconf function or come up with some other autoconf checks to
363       search for libssl and libcrypto and properly add them to mod_ssl's
364       link flags.
365
366     * SSL renegotiations in combination with POST request
367
368     * Port or dispose all code inside #if 0...#endif blocks that remain
369       from the porting effort.
370
371     * Do we need SSL_set_read_ahead()?
372
373     * the ssl_expr api is NOT THREAD SAFE.  race conditions exist:
374        -in ssl_expr_comp() if SSLRequire is used in .htaccess
375         (ssl_expr_info is global)
376        -is ssl_expr_eval() if there is an error
377         (ssl_expr_error is global)
378
379     * SSLRequire directive (parsing of) leaks memory
380
381     * Diffie-Hellman-Parameters for temporary keys are hardcoded in
382       ssl_engine_dh.c, while the comment in ssl_engine_kernel.c says:
383       "it is suggested that keys be changed daily or every 500
384       transactions, and more often if possible."
385
386     * ssl_var_lookup could be rewritten to be MUCH faster
387
388     * CRL callback should be pluggable
389
390     * session cache store should be pluggable
391
392     * init functions should return status code rather than ssl_die()
393
394     * ssl_engine_pphrase.c needs to be reworked so it is generic enough
395       to also decrypt proxy keys
396
397     * the shmcb code should just align its memory segment rather than
398       jumping through all the "safe" memcpy and memset hoops
399
400
401 WISH LIST
402     * mod_proxy: Ability to run SSL over proxy gateway connections,
403       encrypting (or reencrypting) at the proxy.
404
405     * mod_cache: Handle ESI tags.
406
407     * mod_cache: Resolve issue of how to cache page fragements (or perhaps
408       -if- we want to cache page fragements). Today, mod_cache/mod_mem_cache
409       will cache #include 'virtual' requests (but not #include 'file'
410       requests). This was accomplished by making CACHE_IN a
411       CONTENT_SET-1 filter to force it to run before the SUBREQ_CORE
412       filter.  But now responses cannot be cached that include the
413       effects of having been run through CONTENT_SET filters
414       (mod_deflate, mod_expires, etc).  We could rerun all the
415       CONTENT_SET filters on the cached response, but this will not
416       work in all cases. For example, mod_expires relies on installing
417       the EXPIRATION filter during fixups. Contents served out of
418       mod_cache (out of the quick_handler) bypass -all- the request
419       line server hooks (Ryan really hated this. It is great for
420       performance, but bad because of the complications listed above).
421
422     mod_cache/mod_mem_cache/mod_disk_cache:
423
424     * mod_mem_cache: Consider adding a RevalidateTimeout directive to
425       specify time at which local cached content is to be revalidated
426       (ie, underlying file stat'ed to see if it has changed).
427
428     * mod_cache: CacheEnable/CacheDisable should accept regular expressions.
429       jerenkrantz says: Too slow.  Get regexs away from speedy caches by
430                         default.  Introduce a new CacheEnableRegex if you want.
431
432     * mod_mem_cache/mod_disk_cache: Need to be able to query cache
433       status (num of entries, cache object properties, etc.).
434       mod_status could be extended to query optional hooks defined
435       by modules for the purpose of reporting module status.
436       mod_cache (et. al.) could define optional hooks that are called
437       to collect status.  Status should be queryable by
438       HTTP or SNMP?
439       jerenkrantz says: Yawn.  Who cares.
440
441     * MaxRequestsPerChild measures connections, not requests.
442         Until someone has a better way, we'll probably just rename it
443         "MaxConnectionsPerChild".
444     
445     * Regex containers don't work in an intutive way
446         Status: No one has come up with an efficient way to fix this
447         behavior. Dean has suggested getting rid of regex containers
448         completely.
449         OtherBill suggests: We at least seem to agree on eliminating
450                             the <Container ~ foo> forms, and using only
451                             <ContainerMatch foo> semantics.
452
453     * orig_ct in the byterange/multipart handling may not be
454       needed. Apache 1.3 just never stashed "multipart" into
455       r->content_type. We should probably follow suit since the
456       byterange stuff doesn't want the rest of the code to see the
457       multipart content-type; the other code should still think it is
458       dealing with the <orig_ct> stuff.
459         Status: Greg volunteers to investigate (esp. since he was most 
460                 likely the one to break it :-)
461
462 EXPERIMENTAL MODULES:
463
464     Experimental modules should eventually be be promoted to fully supported
465     status or removed from the repository entirely (ie, the
466     'experiment' failed). This section tracks what needs to happen to 
467     get the modules promoted to fully supported status.
468
469