Project

General

Profile

Todo » History » Revision 22

Revision 21 (stbuehler, 2009-10-07 21:12) → Revision 22/63 (stbuehler, 2009-10-08 12:10)

h1. small todo list 

 Note: this list is updated every now and then and doesn't necessarily represent the exact state of development. Use it as a rough overview. 

 * core 
 ** out-of-fd handling should be (only) in the main worker 
 ** ipv6 support (for radix-tree, used for mod_access) 
 ** throttling by ip 
 ** X-Sendfile/X-LIGHTTPD-Send-tmpfile support, maybe new stuff like X-Throttle 
 ** limit request/response header size, request url length 
 ** response parser: accept \n too 
 ** static-file.exclude 
 ** listen to unix sockets 

 * angel 
 ** zero downtime restarts 
 ** log rotation (or use the zero downtime restart?) 
 ** control socket interface 
 ** angel-control util 

 * log 
 ** scheme:// prefix 
 ** support for pipes 
 ** open log files with angel 
 ** print "startup" (== if logging is disabled) log messages to stderr/angel if the log level target isn't /dev/null 

 * plugin api 
 ** inter-plugin api 
 ** plugin data per client ip address 
 *** can be used for bandwidth throttling, limit requests per second, limit concurrent requests etc 
 *** has to be shared among all workers so locking needed? 
 *** maybe let main worker do the lookup/removal in a radix tree so no locking needed for that and let plugin make sure it's threadsafe when modifying 

 * modules 
 ** port remaining modules from 1.x 
 ** add even more innovative modules :) 

 * mod_status 
 ** show timeout in duration column like "5/120" ? 
 ** ?format=auto for parsable status polling 

 * mod_dirlist 
 ** generate stat dirlist/html body async (to allow etag-cache-hit) 
 ** javascript for sorting (from mod_status) 

 * stat-cache: 
 ** revalidate dirlist entries with stat() after cache hit ? 
 ** purge invalid entries (stat()/open() failed), i.e. remove from hash tables 
 ** check for normal stat entry, stat() and S_ISDIR before queuing dirlist job 
 ** reset ttl after revalidating entries 
 ** limit for hash tables? 
 ** check symlink/symlink-if-owner-match 

 * test framework 

 * build systems 
 ** use shared libraries for common libs 
 ** lighty common libs should probably installed in a default lib directory (/usr/lib), plugins in a subdir 
 ** provide pkg-config for 3rd party module builds 
 ** at least one build system should provide static builds