Python ICAP server implemented using asyncio. Contains classes for parsing and handling ICAP requests, and higher-level objects for routing requests and performing asynchronous operations. Still very much in the early stages right now, although usable. API can be considered reasonably stable. TODO: - generated session IDs when X-Session-ID is not available. - Preview support - opt-body support - Cache-Control (prevent RESPMODs from lengthening expiration) - remove all hop-by-hop headers - ensure required authorization headers are preserved - Allow 206 support (see Squid option) - Automated parsing of multipart data (similar to POST parsing) - Lots more logging. - Streaming body support. ICAP supports the idea of early returns, so theoretically this is possible. It would be great to do this with coroutines. - Allow for particularly horrible yet perfectly valid HTTP. - SSL - Replace assertions with proper exceptions. - some operations need to run in threads/processes to prevent blocking the proactor (e.g. gzip encoding/decoding). Providing a nice wrapper interface on asyncio's process/thread deferral code would be good.