This is all technical. If you don't care about the internal workings of
WebKit, you won't miss anything if you stop reading now.
I have implemented the new AppServer <-> Adapter communications protocol
in each of the AppServer / Adapters. (with the exception of mod_snake).
The new protocol goes like this.
The request from the Adapter(Webserver) to the AppServer:
A marshalled integer representing the length of the marshalled
dictionary (next)
A marshalled dictionary containing the records: format, time and environ.
An unmarshalled string containing POST data.
The response to the Adapter from the AppServer is just the standard HTML
response, no marshalling.
This will allow for future enhancements like the ability to begin
sending a response before all data is generated, etc.
I also fixed a rather serious, but as yet un-noticed, bug in the
AsyncThreadedAppServer. The code was treating the sockets in that
AppServer like regular, blocking sockets, and assumed that if less than
the requested amount of data was returned from a call to socket.recv(),
that the sender had closed the sending end of it's socket. With async
communications, the sockets are NON BLOCKING, so getting less data than
you requested on a call to recv is perfectly normal. This bug raised
it's ugly head when I changed the protocol and the adapters began
sending the request in chunks instead of one large packet. This bug
would have come out earlier if any POST requests were made that required
greater than 8192 bytes.
Anyway, its fixed.
Jay
|