Todo » History » Revision 17
Revision 16 (stbuehler, 2009-09-09 19:10) → Revision 17/63 (stbuehler, 2009-10-05 18:05)
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 the last request in keep-alive state to make it visible where the client entered that state and maybe show sth. like 23/120, client entered that state 23s ago, will idle away after a total of 120s * mod_dirlist ** generate stat dirlist/html body async (to allow etag-cache-hit) * 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? * 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