]> granicus.if.org Git - apache/blob - STATUS
--clues
[apache] / STATUS
1 APACHE 2.0 STATUS:                                              -*-text-*-
2 Last modified at [$Date: 2002/07/23 14:08:26 $]
3
4 Release:
5
6     2.0.40  : in development.
7     2.0.39  : rolled June 17, 2002.
8     2.0.38  : rolled June 16, 2002.  not released.
9     2.0.37  : rolled June 11, 2002.  not released.
10     2.0.36  : released May 6, 2002 as GA.
11     2.0.35  : released April 5, 2002 as GA.
12     2.0.34  : tagged March 26, 2002.
13     2.0.33  : tagged March 6, 2002.  not released.
14     2.0.32  : released Feburary 16, 2002 as beta.
15     2.0.31  : rolled Feburary 1, 2002.  not released.
16     2.0.30  : tagged January 8, 2002.  not rolled.
17     2.0.29  : tagged November 27, 2001.  not rolled.
18     2.0.28  : released November 13, 2001 as beta.
19     2.0.27  : rolled November 6, 2001
20     2.0.26  : tagged October 16, 2001.  not rolled.
21     2.0.25  : rolled August 29, 2001
22     2.0.24  : rolled August 18, 2001
23     2.0.23  : rolled August 9, 2001
24     2.0.22  : rolled July 29, 2001
25     2.0.21  : rolled July 20, 2001
26     2.0.20  : rolled July 8, 2001
27     2.0.19  : rolled June 27, 2001
28     2.0.18  : rolled May 18, 2001
29     2.0.17  : rolled April 17, 2001
30     2.0.16  : rolled April 4, 2001
31     2.0.15  : rolled March 21, 2001
32     2.0.14  : rolled March 7, 2001
33     2.0a9   : released December 12, 2000
34     2.0a8   : released November 20, 2000
35     2.0a7   : released October 8, 2000
36     2.0a6   : released August 18, 2000
37     2.0a5   : released August 4, 2000
38     2.0a4   : released June 7, 2000
39     2.0a3   : released April 28, 2000
40     2.0a2   : released March 31, 2000
41     2.0a1   : released March 10, 2000
42
43 Please consult the following STATUS files for information
44 on related projects:
45
46     * srclib/apr/STATUS
47     * srclib/apr-util/STATUS
48     * docs/STATUS
49
50
51 CURRENT RELEASE NOTES:
52
53
54 RELEASE SHOWSTOPPERS:
55
56     * apr_poll() grows the pool (e.g., pchild or the thread's pool) on
57       each call...  Apache MPMs don't have logic to work around this
58       issue.
59
60     * On AIX and Tru64, Apache won't load due to an unresolved
61       reference to iconv.
62
63 CURRENT VOTES:
64
65     * apachectl should revert to just being an init script and
66       httpd.sh should be the wrapper for httpd which sources envvars
67       and allows any options to be passed through
68
69       +1:  trawick
70
71     * Should we always build [support*] binaries statically unless otherwise
72       indicated?
73         Message-ID: <20020129210006.B23512@Lithium.MeepZor.Com>
74
75       +1:  Ken, *wrowe [they are PITAs on OSX]
76       -1:  Justin, Ian
77         
78     * If the parent process dies, should the remaining child processes
79       "gracefully" self-terminate. Or maybe we should make it a runtime
80       option, or have a concept of 2 parent processes (one being a 
81       "hot spare").
82       See: Message-ID: <3C58232C.FE91F19F@Golux.Com>
83
84       Self-destruct: Ken, Martin
85       Not self-destruct: BrianP, Ian, Cliff, BillS
86       Make it runtime configurable: Aaron, Jim, Justin
87       Have 2 parents: +1: Jim
88                       -1: Justin, wrowe [for 2.0]
89                       +0: Martin (while standing by, could it do
90                                   something useful?)
91
92     * Make the worker MPM the default MPM for threaded Unix boxes.
93       +1:   Justin, Ian, Cliff, BillS
94       +0:   BrianP, Aaron (mutex contention is looking better with the
95             latest code, let's continue tuning and testing)
96       -0:   Lars
97
98 RELEASE NON-SHOWSTOPPERS BUT WOULD BE REAL NICE TO WRAP THESE UP:
99
100     * All handlers should always send content down even if r->header_only
101       is set.  If not, it means that the HEAD requests don't generate the
102       same headers as a GET which is wrong.
103       Is this a showstopper?
104         +1: Justin
105         -1: Aaron
106
107     * server pushed CGI's not working.  (Is this a showstopper??)
108       PR: 8482
109       Message-ID: <3CE15B85.2FF45121@apache.org>
110
111     * HP/UX 10.20: compile breakage in APR.  Looks like it should be easy
112       to fix, probably just some extraneous #include's that are fouling
113       things up.
114       PR: 9457
115       Jeff: See my reply and patch in the PR (and previous commit to
116       stop using "pipe" as a field name).  If patch is committed, we
117       should be okay.  I'll wait to see if the user tests the patch.
118       Update by Jeff 20020722: I got an account on HP 10.20.  It looks
119       like some of the APR thread detection is screwed up.  If we find
120       pthread.h but we can't compile the pthread test program we still
121       think we can use threads.  For that reason, the patch I posted
122       to the PR won't work as-is since a failed compile of the test
123       program means nothing.
124
125     * exec cmd and suexec arg-passing enhancements
126       Status: Patches proposed
127       Message-ID: <20020526041748.A29148@prodigy.Redbrick.DCU.IE>
128       (see the "proc.patch" and "suexec-shell.patch" links in this message)
129
130     * Get mod_cache/mod_mem_cache out of experimental (still some
131       work items left to complete)
132
133     * The 2.0.36 worker MPM graceless shutdown changes work but are
134       a bit clunky on some platforms; eg, on Linux, the loop to
135       join each worker thread seems to hang, and the parent ends up
136       killing off the child with SIGKILL.  But at least it shuts down.
137
138     * --enable-mods-shared="foo1 foo2" is busted on Darwin.  Pier
139         posted a patch (Message-ID: <B8DBBE8D.575A%pier@betaversion.org>).
140
141     * We do not properly substitute the prefix-variables in the configuration
142       scripts or generated-configs.  (i.e. if sysconfdir is etc,
143       httpd-std.conf points to conf.)
144
145     * If any request gets through ap_process_request_internal() and is
146       scheduled to be served by the core handler, without a flag that this 
147       r->filename was tested by dir/file_walk, we need to 500 at the very 
148       end of the ap_process_request_internal() processing so sub_req-esters
149       know this request cannot be run.  This provides authors of older 
150       modules better compatibility, while still improving the security and 
151       robustness of 2.0. 
152
153         Status: still need to decide where this goes, OtherBill comments...
154         Message-ID: <065701c14526$495203b0$96c0b0d0@roweclan.net>
155         [Deleted comments regarding the ap_run_handler phase, as irrelevant
156             as BillS points out that "common case will be caught in
157             default_handler already (with the r->finfo.filetype == 0 check)"
158             and the issue is detecting this -before- we try to run the req.]
159
160         gregames says: can this happen somehow without a broken module
161             being involved?  If not, why waste cycles trying to defend against
162             potential broken modules?  It seems futile.
163         wrowe counters: no, it shouldn't happen unless the module is broken.
164             But the right answer is to fail the request up-front in dir/file
165             walk if the path was entirely invalid; and we can't do that either
166             or we break modules that are unwilling to hook map_to_storage.
167
168     * Rewrite core_output_filter. It is nearly impossible to support
169       it with predictable results as it is implemented now.
170
171     * With AP_MODE_EXHAUSTIVE in the core, it is finally clear to me
172       how the Perchild MPM should be re-written.  It hasn't worked
173       correctly since filters were added because it wasn't possible to
174       get the content that had already been written and the socket at
175       the same time.  This mode lets us do that, so the MPM can be
176       fixed.
177
178     * htpasswd blindly processes the file you give it, and does no
179       sanity checking before totally corrupting whatever file it was
180       you thought you had. It should check the input file and bail
181       if it finds non-comment lines that do not contain exactly 1
182       ':' character.
183         Message-ID: <20020217150457.A31632@clove.org>
184
185     * Can a static httpd be built reliably?
186         Message-ID: <20020207142751.T31582@clove.org>
187
188     * [Ken] Test suite failures:
189       o worker is also failing some of the 'cgi' subtests
190       (see <URL:http://Source-Zone.Org/Apache/regression/>):
191         Justin says: "Worker should be fine and passes httpd-test here.
192                       If you can provide evidence that it can be reproduced
193                       outside of httpd-test, then it's a showstopper.  I
194                       think it's a perl or a httpd-test problem."
195         Not a showstopper: Justin
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     * There is a bug in how we sort some hooks, at least the pre-config
204       hook.  The first time we call the hooks, they are in the correct 
205       order, but the second time, we don't sort them correctly.  Currently,
206       the modules/http/config.m4 file has been renamed to 
207       modules/http/config2.m4 to work around this problem, it should moved
208       back when this is fixed.    rbb
209         Justin says: "Is this really a showstopper?  This has been here
210                       forever.  What's wrong?  Does this have to do with
211                       autoconf or m4?"
212         Not a showstopper: Justin, BrianP, trawick, gregames
213
214     * The Add...Filter and Set...Filter directives do not allow the
215       administrator to order filters, beyond the order of filename (mime)
216       extensions.  It isn't clear if Set...Filter(s) should be inserted 
217       before or after the Add...Filter(s) which are ordered by sequence of
218       filename extensions.  At minimum, some sort of +-[0-10] syntax seems
219       like the quickest fix for a 2.0 gold release.
220         Justin says: "Could we delay this for a point release or 2.1?"
221         Not a showstopper: justin, wrowe, trawick, stoddard, Jim, Ian, Aaron,
222                            gregames
223
224     * Get perchild to work on platforms other than Linux. This
225       will require a portable mechanism to pass data and file/socket
226       descriptors between vhost child groups. An API was proposed
227       on dev@apr:
228         Message-ID: <20020111115006.K1529@clove.org>
229
230     * Try to get libtool inter-library dependency code working on AIX.
231         Message-ID: <cm3n10lx555.fsf@rdu163-40-092.nc.rr.com>
232
233       Justin says: If we get it working on AIX, we can enable this
234                    on all platforms and clean up our build system
235                    somewhat.
236       Jeff says:   I thought I tested a patch for you sometime in
237                    January that you were going to commit within a few
238                    days.
239
240     * Handling of %2f in URIs.  Currently both 1.3 and 2.0
241       completely disallow %2f in the request URI path (see
242       ap_unescape_url() in util.c).  It's permitted and passed
243       through in the query string, however.  Roy says the
244       original reason for disallowing it, from five years ago,
245       was to protect CGI scripts that applied PATH_INFO to
246       a filesystem location and which might be tricked by
247       ..%2f..%2f(...).  We *should* allow path-info of the
248       form 'http://foo.com/index.cgi/path/to/path%2finfo'.
249       Since we've revamped a lot of our processing of path
250       segments, it would be nice to allow this, or at least
251       allow it conditionally with a directive.
252
253     * FreeBSD, threads, and worker MPM.  All seems to work fine 
254       if you only have one worker process with many threads.  Add 
255       a second worker process and the accept lock seems to be
256       lost.  This might be an APR issue with how it deals with
257       the child_init hook (i.e. the fcntl lock needs to be resynced).
258       More examination and analysis is required.
259         Status: This has also been reported on Cygwin.  
260         Message-ID: <3C2CC514.8EF3BED1@wapme-systems.de> (cygnus)
261
262       Justin says: So, FreeBSD-CURRENT and Cywin have the same 
263                    problem.  Yum.  If another platform has this
264                    with worker, this becomes a showstopper.
265       Aaron says: I spent some time disecting this and have come to
266               the conclusion that it is not a problem in the worker MPM
267               (or at least, it is not isolated to a problem in worker).
268               I'll list some of the problems I'm seeing in case someone
269               else wants to pick up where I've left off:
270                - Delivery of just about any signal to one of the child
271                  processes will send it into an infinite loop as well.
272                - Even though the parent is spinning out of control,
273                  at first the child or children will appear to work
274                  properly. At times it is possible to get it into a state,
275                  however, where a request will hang until another concurrent
276                  request "kicks" the first, at which point the second will
277                  hang. My theory is that this has to do with the
278                  pthread_cond_*() implementation in FreeBSD, but it's still
279                  possible that it is in APR.
280       
281       Justin adds: Oh, FreeBSD threads are implemented entirely with 
282                    select()/poll()/longjmp().  Welcome to the nightmare.
283                    So, that means a ktrace output also has the thread 
284                    scheduling internals in it (since it is all the same to 
285                    the kernel).  Which makes it hard to distinguish between 
286                    our select() calls and their select() calls.  
287                    *bangs head on wall repeatedly*  But, some of the libc_r 
288                    files have a DBG_MSG #define.  This is moderately helpful
289                    when used with -DNO_DETACH.  The kernel scheduler isn't 
290                    waking up the threads on a select().  Yum.  And, I bet 
291                    those decrementing select calls have to do with the 
292                    scheduler.  Time to brush up on our OS fundamentals.
293
294     * There is increasing demand from module writers for an API
295       that will allow them to control the server Ã  la apachectl.
296       Reasons include sole-function servers that need to die if
297       an external dependency (e.g., a database) fails, et cetera.
298       Perhaps something in the (ever more abused) scoreboard?
299         rbb: I don't believe the scoreboard is the correct mechanism
300              for this.  We already have a pipe that goes between parent
301              and child for graceful shutdown events, along with an API that
302              can be used to send a message down that pipe.  In threaded MPMs,
303              it is easy enough to make that one pipe be used for graceful
304              and graceless events, and it is also easy to open that pipe
305              to both parent and child for writing.  Then we just need to
306              figure out how to do graceless on non-threaded MPMs.
307
308     * Allow the DocumentRoot directive within <Location > scopes?  This
309       allows the beloved (crusty) Alias /foo/ /somepath/foo/ followed
310       by a <Directory /somepath/foo> to become simply 
311       <Location /foo/> DocumentRoot /somefile/foo (IMHO a bit more legible
312       and in-your-face.)  DocumentRoot unset would be accepted [and would
313       not permit content to be served, only virtual resources such as
314       server-info or server-status.
315         This proposed change would _not_ depricate Alias.
316
317     * Win32: Rotatelogs sometimes is not terminated when Apache
318       goes down hard.  FirstBill was looking at possibly tracking the 
319       child's-child processes in the parent process.
320         OtherBill asks, wasn't this fixed? 
321         stoddard: Not fixed. Shared scoreboard might offer a good
322         way for the parent to keep track of 'other child' processes
323         and whack them if the child goes down.
324         Other thoughts on walking the process chain using the NT kernel
325         have also been proposed on APR.
326
327     * Win32: Add a simple hold console open patch (wait for close or
328         the ESC key, with a nice message) if the server died a bad 
329         death (non-zero exit code) in console mode.
330         Resolution: bring forward same ugly hacks from 1.3.13-.20
331         This is not so simple.  Any exit() from APR or other libraries
332         can't be caught unless we add some sort of apr_exit(rv) with
333         registered apr_atexit() fn's that have the return code as an
334         argument to the registered fn.
335
336     * Eliminate unnecessary creation of pipes in mod_cgid
337
338     * Combine log_child and piped_log_spawn. Clean up http_log.c.
339       Common logging API.
340
341     * Document mod_file_cache.
342
343     * Platforms that do not support fork (primarily Win32 and AS/400)
344       Architect start-up code that avoids initializing all the modules 
345       in the parent process on platforms that do not support fork.
346
347     * Win32: Migrate the MPM over to use APR thread/process calls. This
348       would eliminate some code in the Win32 branch that essentially
349       duplicates what is in APR.
350
351     * There are still a number of places in the code where we are
352       losing error status (i.e. throwing away the error returned by a
353       system call and replacing it with a generic error code)
354
355     * Mass vhosting version of suEXEC.
356
357     * All DBMs suffer from confusion in support/dbmmanage (perl script) since 
358       the dbmmanage employs the first-matched dbm format.  This is not
359       necessarily the library that Apache was built with.  Aught to
360       rewrite dbmmanage upon installation to bin/ with the proper library 
361       for predictable mod_auth_dbm administration.
362         Questions; htdbm exists, time to kill dbmmanage, or does it remain
363                    useful as a perl dbm management example?  If we keep it,
364                    do we address the issue above?
365
366     * Integrate mod_dav.
367         Some additional items remaining:
368         - case_preserved_filename stuff
369             (use the new canonical name stuff?)
370         - find a new home for ap_text(_header)
371         - is it possible to remove the DAV: namespace stuff from util_xml?
372
373     * ap_core_translate() and its use by mod_mmap_static and mod_file_cache
374       are a bit wonky.  The function should probably be exposed as a utility 
375       function (such as ap_translate_url2fs() or ap_validate_fs_url() or 
376       something).  Another approach would be a new hook phase after
377       "translate" which would allow the module to munge what the
378       translation has decided to do.
379         Status: Greg +1 (volunteers), Ryan +1
380
381     * Explore use of a post-config hook for the code in http_main.c which
382       calls ap_fixup_virutal_hosts(), ap_fini_vhost_config(), and
383       ap_sort_hooks()  [to reduce the logic in main()]
384
385     * read the config tree just once, and process N times (as necessary)
386
387     * (possibly) use UUIDs in mod_unique_id and/or mod_usertrack
388
389     * (possibly) port the bug fix for PR 6942 (segv when LoadModule is put
390       into a VirtualHost container) to 2.0.
391
392     * shift stuff to mod_core.h
393
394     * callers of ap_run_create_request() should check the return value
395       for failure (Doug volunteers)
396
397     * Win32: Get Apache working on Windows 95/98. The following work
398         (at least) needs to be done:
399         - Document warning that OSR2 is required (for Crypt functions, in
400         rand.c, at least.)  This could be resolved with an SSL library, or
401         randomization in APR itself.
402         - Bring the Win9xConHook.dll from 1.3 into 2.0 (no sense till it
403         actually works) and add in a splash of Win9x service code.
404
405     * Fix the worker MPM to use POD to kill child processes instead
406       of ap_os_killpg, regardless of how they should die. (Ryan Bloom)
407
408     * Scoreboard structures could be changed in the future such that
409       proper alignment is not maintained, leading to segfaults on 
410       some systems.  Cliff posted a patch to deal with this issue but
411       later recanted. See this message to dev@apr.apache.org:
412       Message-ID: <Pine.LNX.4.44.0203011354090.16457-200000@deepthought
413                   .cs.virginia.edu>
414
415 TODO ISSUES REMAINING IN MOD_SSL:
416
417     * In order to use a DSO version of mod_ssl we have to link with
418       -lssl and -lcrypto. A workaround is in place right now where the
419       entire EXTRA_LIBS macro is being appended to the objects list, but
420       this is a hack. We should either revamp the APACHE_CHECK_SSL_TOOLKIT
421       autoconf function or come up with some other autoconf checks to
422       search for libssl and libcrypto and properly add them to mod_ssl's
423       link flags.
424
425     * SSL renegotiations in combination with POST request
426
427     * Port or dispose all code inside #if 0...#endif blocks that remain
428       from the porting effort.
429
430     * Do we need SSL_set_read_ahead()?
431
432     * the ssl_expr api is NOT THREAD SAFE.  race conditions exist:
433        -in ssl_expr_comp() if SSLRequire is used in .htaccess
434         (ssl_expr_info is global)
435        -is ssl_expr_eval() if there is an error
436         (ssl_expr_error is global)
437
438     * SSLRequire directive (parsing of) leaks memory
439
440     * Diffie-Hellman-Parameters for temporary keys are hardcoded in
441       ssl_engine_dh.c, while the comment in ssl_engine_kernel.c says:
442       "it is suggested that keys be changed daily or every 500
443       transactions, and more often if possible."
444
445     * ssl_var_lookup could be rewritten to be MUCH faster
446
447     * CRL callback should be pluggable
448
449     * session cache store should be pluggable
450
451     * init functions should return status code rather than ssl_die()
452
453     * ssl_engine_pphrase.c needs to be reworked so it is generic enough
454       to also decrypt proxy keys
455
456     * the shmcb code should just align its memory segment rather than
457       jumping through all the "safe" memcpy and memset hoops
458
459
460 EXPERIMENTAL MODULES:
461
462     Experimental modules should eventually be be promoted to fully supported
463     status or removed from the repository entirely (ie, the
464     'experiment' failed). This section tracks what needs to happen to 
465     get the modules promoted to fully supported status.
466
467     mod_cache/mod_mem_cache/mod_disk_cache:
468
469     * mod_cache: handle cache_control: no_cache "field_name" to enable 
470       cacheing the response w/o header "field_name"
471       See RFC2616 section 14.9.1
472
473     * mod_cache: CacheEnable/CacheDisable should accept regular expressions.
474
475     * mod_cache: Fix dependency on ATOMIC operators. Need
476       APR_HAS_ATOMIC_* feature macros.
477
478     * mod_disk_cache: Implement garbage collection
479
480     * mod_mem_cache/mod_disk_cache: Need to be able to query cache
481       status (num of entries, cache object properties, etc.).
482       mod_status could be extended to query optional hooks defined
483       by modules for the purpose of reporting module status.
484       mod_cache (et. al.) could define optional hooks that are called
485       to collect status.  Status should be queryable by
486       HTTP or SNMP?
487
488     * mod_mem_cache: garbage collection. One strategy is to simply
489       remove stale entries as we attempt to serve them. Another
490       strategy is to kick off a GC thread that traverses the cache
491       and preemptively remove stale entries.  How to manage a 
492       cache that is full? Do LRU GC? Other? Bueller?
493
494     * mod_mem_cache/mod_disk_cache: Complete implementing config
495       directives. 
496
497     * Sample config for mod_cache/mod_mem_cache/mod_disk_cache for
498       inclusion into httpd.conf.
499
500     * mod_cache/mod_mem_cache/mod_disk_cache: Documentation.
501
502 PRs that have been suspended forever waiting for someone to
503 put them into 'the next release':
504
505     * documentation and Q&A
506
507       PR#2221: Make online documentation search link back to my installation
508         Status: 
509
510       PR#2906: Propose that Apache recommend $UNIQUE_ID for all "session id"
511       algorithms
512         Status: 
513
514       PR#2793: When will Apache support P3P? Any Plans?
515         Status: 
516
517     * build
518
519       PR#2113: HTTP Server Rebuild Line Needs Changing for the better
520         Status: 
521
522       PR#2421: problem specifying ndbm library for build ?with autoconfigure
523         Status: 
524
525     * config
526
527       PR#76: missing call to "setlocale();"
528         Status: 
529
530       PR#628: Request of "Options SymLinksIfGroupMatch"
531         Status: 
532
533       PR#793: RLimitCPU and RLimitMEM don't apply to all children like they should
534         Status: 
535
536       PR#922:  it is useful to allow specifiction that root-owned symlinks
537       should always be followed
538         Status: 
539
540       PR#1028: DoS attacks involving memory consumption
541         Status: 
542
543       PR#1191: setlogin() is not called, causing problems with e.g. identd
544         Status: 
545
546       PR#1204: regerror() exists, use it
547         Status: 
548
549       PR#2284: Can not POST to ErrorDocument - Apache/1.3b6
550         Status: 
551
552       PR#2396: Proposal for TimeZone directive
553         Status: 
554
555       PR#2446: AllowOverride FileInfo is too coarse
556         Status: 
557
558       PR#2760: [PATCH] User/Group for <Directory> and <Location> i.e. not only
559       in global and <Virtual>.
560         Status: 
561
562       PR#2907: suggestion: power up your Include directive :)
563         Status: 
564
565       PR#3018: cannot limit some HTTP methods
566         Status: 
567
568       PR#3677: New ErrorDocumentMatch directive
569         Status: 
570
571       PR#4244: "Files" and "FilesMatch" regexp does not recognize bang as
572       negation operator
573         Status: 
574
575       PR#5993: AllowOverride should have a 'CheckNone' and 'AllowNone' argument
576       instead of only 'None'
577         Status: 
578
579     * mod_access
580
581       PR#537: mod_access syntax allows hosts that should be restricted
582         Status: 
583
584       PR#1287: add allow,deny/deny,allow warning to mod_access
585         Status: 
586
587       PR#2512: <IfDenied> directive wanted
588         Status: 
589
590     * mod_auth-any
591
592       PR#557: ~UserHome directories are not honored in absolute pathname
593       requests (.htaccess)
594         Status: 
595
596       PR#1117: Using NIS passwd.byname dbm files with AuthDBMUserFile
597         Status: 
598
599       PR#1809: Suggestion for improving authentication modules and core source
600       code, problem with 401 and ErrorDocument
601         Status: 
602
603     * mod_autoindex
604
605       PR#1263: Add frame-safe anchor attribute to mod_autoindex links
606         Status: 
607
608     * mod_cgi (and suexec)
609
610       PR#921: suexec Uses cwd before filling it in, doesn't use syslog
611         Status: 
612
613       PR#1176: Apache cannot handle continuation line in headers
614         Status: 
615
616       PR#1120: suexec does not parse arguments to #exec cmd
617         Status: 
618
619       PR#1268: CGI scripts running as Apache user: security (suexec etc.)
620         Status: 
621
622       PR#1285: Error messages could be easier to spot in cgi.log file for suexec.c
623         Status: 
624
625       PR#1905: suexec - Allow modules to set user:group for execution.
626         Status: 
627
628       PR#2360: suexec for general access of user content?
629         Status: 
630
631       PR#2460: TimeOut applies to output of CGI scripts
632         Status: 
633
634       PR#2573: CGI's for general use still have to be run as another user
635       with suExec
636         Status: 
637
638       PR#4241: Need to be able to override shebang line to make CGI scripts
639       more portable.
640         Status: 
641
642       PR#4490: mod_cgi prevents handling of OPTIONS requests
643         Status: 
644
645     * mod_env
646
647       PR#370: Modified PATH environemnt variable is not passed, instead
648       system's is used
649         Status: 
650
651     * mod_headers
652
653       PR#1383: I make mod_headers to modify request headers as well as
654       response ones.
655         Status: 
656
657       PR#1677: mod_headers should allow mod_log_config-style formats in
658       header values
659         Status: 
660
661     * mod_imap
662
663       PR#759: imap should read <MAP><AREA>*</MAP> too!
664         Status: 
665
666     * mod_include
667
668       PR#78: Additional status for XBitHack directive
669         Status: 
670
671       PR#623: A smarter "Last Modified" value for SSI documents (see PR number 600)
672         Status: 
673
674       PR#1145: mod_include
675       Allow for Last-Modified: without resorting to XBitHack
676         Status: 
677
678       PR#1803: patches to mod_include to allow for file tests
679         Status: 
680
681       PR#4459: Suggestion for better handling of Last-modified headers
682         Status: 
683
684     * mod_info
685
686       PR#2415: /server-info doesn't check for the virtual host to list the info
687         Status: 
688
689     * mod_log-any
690
691       PR#1050: Logging of virtual server to error_log as well
692         Status: 
693
694       PR#1358: Selective url-encode of log fields (or maybe a pseudo
695       log_rewrite module?)
696         Status: 
697
698       PR#2073: pipelined connections are not logged correctly
699         Status: 
700
701       PR#4448: Please allow CGI env variables (QUERY_STRING, ...) to be logged
702       with %{}e
703         Status: 
704
705     * mod_negotiation
706
707       PR#3191: no way to set global quality-of-source (qs) coneg values
708       with multiviews
709         Status: 
710
711     * mod_proxy
712
713       PR#362: Mod_proxy doesn't allow change of error pages
714         Status: 
715
716       PR#440: Proxy doesn't deliver documents if not connected
717         Status: 
718
719       PR#534: proxy converts ~name to %7Ename when name starts with a dot (.)
720         Status: 
721
722       PR#612: Proxy FTP Authentication Fails
723         Status: 
724
725       PR#700: Proxy doesn't do links right for OpenVMS files through ftp:
726         Status: 
727
728       PR#980: Controlling Access to Remote Proxies would be nice...
729         Status: 
730
731       PR#994: Adding authentication "on the fly" through the proxy module
732         Status: 
733
734       PR#1085: ProxyRemote make a dead cycle.
735         Status: 
736
737       PR#1166: ``nph-'' not honored (no buffering) for ProxyRemote mapping
738         Status: 
739
740       PR#1290: Need to know "hit-rate" on proxy cache
741         Status: 
742
743       PR#1532: Proxy transfer logging
744         Status: 
745
746       PR#1547: No HTTP_X_FORWARDED_FOR set...
747         Status: 
748
749       PR#1567: ProxyRemote proxy requests fail authentication by firewall
750         Status: 
751
752       PR#1702: mod_proxy to support persistent conns?
753         Status: 
754
755       PR#1878: listing of proxy cache content
756         Status: 
757
758       PR#2314: patterns in ProxyRemote
759         Status: 
760
761       PR#2648: Cache file names in Proxy module
762         Status: 
763
764       PR#3568: Accessing URL through proxy server corrupts data.
765         Status: 
766
767       PR#3605: Some anonymous FTP URLs ask for authentication
768         Status: 
769
770     * mod_rewrite
771
772       PR#1582: mod_rewrite forms REQUEST_URI different than mod_cgi does
773         Status: 
774
775       PR#2074: mod_rewrite doesn't pass Proxy Throughput on internal subrequests
776         Status: 
777
778     * mod_status
779
780       PR#2138: mod_status always displays 256 possible connection slots
781         Status: 
782
783       PR#2343: Status module averages are for entire uptime
784         Status: 
785
786     * apache-api
787
788       PR#1004: request_config field in request_rec is moderately bogus
789         Status: 
790
791       PR#1158: improvements to child spawning API
792         Status: 
793
794       PR#1233: there is no way to keep per-connection per-module state
795         Status: 
796
797       PR#2024: adding auth_why to conn_rec
798         Status: 
799
800       PR#2873: Feedback/Comment on APACI
801         Status: 
802
803       PR#3143: No module specific data hook for per-connection data
804         Status: 
805
806     * generally odds and ends
807
808       PR#2431: A small addition to rotatelogs.c to improve program functionality.
809         Status: 
810
811       PR#2763: mailto tags and bundling bug report script
812         Status: 
813
814       PR#2785: os-aix Support for System Resource Controller
815         Status: 
816
817       PR#2889: Inclusion of RPM spec file in CVS/distributions
818         Status: 
819
820       PR#5713: os-windows [PATCH] install as win32 service with domain account
821         Status: Cannot accept password-as-arg, we should prompt the
822                 user when -k install/-k config with a user argument.
823
824
825
826 Other bugs that need fixing:
827
828     * ap_discard_request should be converted to use the bucket API
829       directly rather than waste cycles copying buffers with the old API.
830
831     * MaxRequestsPerChild measures connections, not requests.
832         Until someone has a better way, we'll probably just rename it
833         "MaxConnectionsPerChild".
834     
835     * Regex containers don't work in an intutive way
836         Status: No one has come up with an efficient way to fix this
837         behavior. Dean has suggested getting rid of regex containers
838         completely.
839         OtherBill suggests: We at least seem to agree on eliminating
840                             the <Container ~ foo> forms, and using only
841                             <ContainerMatch foo> semantics.
842
843     * SIGSEGV on Linux (glibc 2.1.2) isn't caught properly by a
844       sigwaiting thread. We need to work around this, perhaps unless
845       there is hope soon for a fixed glibc.
846
847     * orig_ct in the byterange/multipart handling may not be
848       needed. Apache 1.3 just never stashed "multipart" into
849       r->content_type. We should probably follow suit since the
850       byterange stuff doesn't want the rest of the code to see the
851       multipart content-type; the other code should still think it is
852       dealing with the <orig_ct> stuff.
853         Status: Greg volunteers to investigate (esp. since he was most 
854                 likely the one to break it :-)
855
856 Binaries (2.0.39):
857
858  Platform                      Avail.  Volunteer
859  ------------------------------------------------------------------
860  AIX 4.3.3                     no      Bill Stoddard
861  Mandrake 8.1                  no      Ryan Bloom
862  FreeBSD 4.1                   no      Ryan Bloom
863  hppa2.0w-hp-hpux11.00         yes     Cliff Woolley
864  i386-pc-solaris2.8            yes     Aaron Bannert
865  i386-unknown-freebsd4.5       no
866  i386-unknown-freebsd4.6       yes     Aaron Bannert
867  i686-pc-linux-gnu             yes     Aaron Bannert
868  i686-pc-linux-gnu-rh70        yes     Aaron Bannert
869  ia64-hp-hpux11.20             yes     Cliff Woolley
870  powerpc-apple-darwin5.5       yes     Aaron Bannert
871  powerpc-unknown-linux-gnu     yes     Graham Leggett
872  sparc-sun-solaris2.8          yes     Jim Jagielski
873  NetWare                       yes     Brad Nicholes
874  OS/2                          yes     Brian Havard
875  Win32-x86                     yes     William Rowe
876
877 Other features that need writing:
878
879     * Finish infrastructure in core for async MPMs
880         Status: post 2.0
881
882     * TODO in source -- just do an egrep on "TODO" and see what's there
883
884 Available Patches:
885
886    * Martin Sojka <msojka@gmx.de>'s patch to add error reporting for failed 
887      htpasswd actions due to a full /tmp volume (other programs may have
888      similar problems?)
889         PR: 6475
890         Status:
891
892    * Mike Abbott's <mja@trudge.engr.sgi.com> patches to improve
893      performance
894        Status: These were written for 1.3, and are awaiting a port to
895        2.0
896  
897    * Jim Winstead's <jimw@trainedmonkey.com> patch to add CookieDomain and 
898      other small mod_usertrack features
899
900    * Dan Rench's <drench@xnet.com> patch to add allow the errmsg and timefmt 
901      of SSI's to be modified in the config file.  Patch is available in 
902      PR6193