Todo » History » Revision 59
Revision 58 (stbuehler, 2011-08-07 17:28) → Revision 59/63 (stbuehler, 2012-08-11 10:42)
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. * not thread-safe config handling (setups are only allowed in startup mode and don't need to be thread-safe) ** review * core ** out-of-fd handling should be (only) in the main worker ** X-Throttle (lua-api for throttle handling?) ? ** limit request/response header size, request url length ** option for directory of upload tempfiles ** wait for listen-sockets from angel from LOADING -> SUSPENDED * angel ** 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 *** mod_extforward *** mod_ssi (this probably should be realized as FastCGI application) ? *** mod_ajp13 ? *** mod_trigger_b4_dl ? *** mod_usertrack ? *** mod_(web)dav ? ** new concept for: *** mod_{my,pg}sql_vhost (load complete config instead of just doc-root) *** mod_rrdtool ** sql vhost (lua handler go generate actions from db rows?) ** mod_auth_dovecot ** add even more innovative modules :) * mod_auth ** digest authentication * mod_status ** show timeout in duration column like "5/120" ? * mod_dirlist ** generate stat dirlist/html body async, using tasklets (to allow etag-cache-hit) * mod_openssl ** sni support *** lookup in hashtable *** dynamic lookup? files via patterns, lua callback, ... ** user certs? ** use http://www.mozilla.org/projects/security/pki/nss/ instead of openssl? * mod_deflate ** add "force" modus to enforce a specific compression method ** add "enflate" or "fix compression" action to deflate the content if the client doesn't understand the current encoding The idea behind this would be something like this: <pre> memcached.lookup ( ..., ${ deflate.fix; deflate; }, ${ php; deflate.enforce "bzip2"; memcache.store ...; deflate.fix; deflate; }; </pre> * mod_fastcgi ** keep-alive connections * mod_memcache ** store http headers, so we can cache deflated content too * mod_proxy ** make HTTP/1.1 downstream requests * mod_balancer ** rename to mod_balance ** add options for backlog size, ... * 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 * build systems ** at least one build system should provide static builds