Todo » History » Revision 21
Revision 20 (icy, 2009-10-07 11:32) → Revision 21/63 (stbuehler, 2009-10-07 21:12)
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 ** ranged requests for static files ** 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 the last request in duration column keep-alive state to make it visible where the client entered that state and maybe show sth. like "5/120" ? 23/120, client entered that state 23s ago, will idle away after a total of 120s ** sum up connections per status ** ?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