Todo » History » Revision 51
Revision 50 (presbrey, 2010-09-22 23:25) → Revision 51/63 (stbuehler, 2010-09-23 13:36)
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
** 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 ?
*** 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 (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
** at least one build system should provide static builds