Todo » History » Revision 9
Revision 8 (nitrox, 2009-03-22 21:57) → Revision 9/63 (icy, 2009-07-18 10:49)
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 workers ** out-of-fd handling should be (only) in the main worker * implement stat-caching with extra threads ** * add per plugin+virtual-request specific data * accesslog * physical.* conditionals * regexp support * ipv6 support ** throttling by ip ** X-Sendfile/X-LIGHTTPD-Send-tmpfile support, maybe new stuff like X-Throttle * angel ** zero downtime restarts ** fd passing ** backend spawning with different uid/gid ** log rotation (or use the zero downtime restart?) * log throttling ** scheme:// prefix each connection gets a "magazine" that represents the amount of bytes it can send at the moment ** support for pipes * plugin api when sending data, decrease the magazine ** inter-plugin api if magazine reaches 0, remove EV_WRITE for the sockwatcher and put connection at the end of the throttling queue ** plugin data per client ip address *** can be used each N milliseconds (maybe 500, configure via setup?), check if there are waiting connections in the queue and rearm if waiting for bandwidth throttling, limit requests per second, limit concurrent requests etc > N ms *** has ** when rearming a connection, add number of allowed bytes to be shared among the magazine and set EV_WRITE again ** add throttling via "pools". all workers so locking needed? *** maybe let main worker do the lookup/removal connections in a radix tree so no locking needed specific pool share a magazine which enables throttling of all connections in a vhost for that and let plugin make sure it's threadsafe when modifying example ** add throttling by ip (somewhat more complex) * modules log ** port remaining modules from 1.x scheme:// prefix ** add even more innovative modules :) write logs directly out in startup phase * mod_status server-status overview ** if server.max-keepalive-idle can be set for host/url/filetypes/<whatever> 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 * implement better counter_format(): allow output like "10 961 KiB" * find good hashing algorithms for ipv6 and memory addresses * add mechanism to store plugin data specific to client ip address. can be used for bandwidth throttling, limit requests per second, limit concurrent requests etc ** what would be the fastest algorithm for this task? hashtable, some kind of tree (red-black?) etc ** a lot of inserts, deletes and lookups ** has to be shared among all workers so locking needed