On Mar 15, 2005, at 7:39 AM, Edi Weitz wrote:
On Tue, 15 Mar 2005 07:34:29 -0500, Bob Hutchison hutch@recursive.ca wrote:
I changed get-apache-command to (unroll the first iteration of the loop and so) read the first line and check to see if it contains a space. If the line came from mod_lisp it will not have a space in it. If it has a space, we know it wasn't mod_lisp so assume that we've got a direct HTTP request. When handling HTTP, call the read-request-from-stream/tbnl function (just above get-apache-command in modlisp.lisp). This sets up the new araneida::*standard-araneida* special variable (to nil) and calls araneida::read-request-from-stream/guts which is a new entry point in Araneida that I added by breaking up the previous function (read-request-from-stream). It then adds a couple of headers (url, content-stream, and server-ip-port) that TBNL seems to want. It then calls process-apache-command and returns.
So this should basically work without Araneida being there at all, right? Or is Araneida involved in sending the reply back to the browser?
Other than it uses the daemon.lisp code from Araneida to parse headers on the way in, it does not need Araneida. I had considered writing an HTTP header parser specifically for TBNL but I thought that modifying the daemon.lisp code would be quicker. It isn't hard writing HTTP header parsers, you only have to watch for multi-line headers.
I had to modify TBNL to write HTTP headers on the way out in order to make it work with Araneida as a front end. So, saying this explicitly, TBNL is writing the HTTP response directly to the socket. (Though I have not tested this with redirect or require-authorization -- I had modified send-output and write-header-line to accomplish this).
I didn't do anything about logging for either the stand-alone or with-araneida versions.
The next logical step is to write an HTTP header parser for TBNL (or negotiate with the Araneida folks to use their code).
---- Bob Hutchison -- blogs at http://www.recursive.ca/hutch/ Recursive Design Inc. -- http://www.recursive.ca/