Todo » History » Revision 47
Revision 46 (icy, 2010-09-19 18:09) → Revision 47/63 (stbuehler, 2010-09-21 14:00)
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 ** throttling by ip ** X-Throttle ? ** limit request/response header size, request url length ** listen to unix sockets ** option for directory of upload tempfiles ** wait for listen-sockets from angel from LOADING -> SUSPENDED ** wait for connections from SUSPENDED -> STOPPING * 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 ? *** 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_status ** show timeout in duration column like "5/120" ? * mod_dirlist ** generate stat dirlist/html body async (to allow etag-cache-hit) * mod_openssl ** sni support *** lookup in hashtable *** dynamic lookup? files via patterns, lua callback, ... ** user certs? ** fix async handling * mod_deflate ** add some options: buffer size, minimum-file-size, compression parameters, select allowed methods ** 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 * 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