Just a quick update on the async HTTP server. Licensing: still haven't heard back from Pierre re: his consent to incorporate his code under non-GPL terms. It turns out that his code is HTTP/1.0 only (should have realized that, since he based it on BaseHTTPRequestHandler which is explicitly HTTP/1.0). This is unfortunate for a number of reasons, but the largest that comes to mind is the lack of pipelining (Keep-Alive). Pipelining is critical, IMO -- not for a one-seat demo server, of course; but for any real use, the lack of pipelining is going to be a performance hit. I tried to fix the pipelining problem last night, and failed. Gotta wrap my head around asyncore again... I'll re-read Sam Rushing's notes on Medusa/asyncore, and figure out how to get it working. I think it's a matter of adjusting the 'terminator' event handling, but I haven't really studied it yet. But even if I do this, it's still technically an HTTP/1.0 server; at the very least we'll need to include a subclass of BaseHTTPServer that sends the right protocol version in the first line of the response. It may turn out that a better way to get ourselves an async HTTP server is to strip down the Medusa package to a bare-bones dispatacher/HTTP 1.1 request handler combo. I'm a little hesitant about this, though, having never really grasped all the intricacies of Medusa's design. However, if we can do it and stay small (1-2 source files), then Bob's your uncle. Hopefully my asyncore reading will bear fruit; or perhaps we have a resident asyncore expert who can come to my aid! -- Graham