KaalH! a écrit :
Le 10 oct. 08 à 19:03, Nicolas Cannasse a écrit :
I'm not a big fan of inscreasing the timeout, since it shouldn't depend
on that for handling large files. Is it not possible instead to stream
the data while parsing it like mod_tora for apache does ?
With other proxy backends (fastcgi,ajp13,http,scgi), raw data is sent as
is or splitted in fixed length data packets, final decoding is made by
the proxied server.
Adding smthg like CMultiBoundary & CMultiData to the tora protocol and
decode data in the server would be better for lighttpd.
I updated mod_tora sources and the protocol is now fully abstract. You
should then be able to easily write a mod_light_tora for lighttpd by
entirely reusing protocol.c and ../common/psock.c
Great :)
I've previously made some major bugfixes in the lighty patch, I will
send this new version next week.
I will use some of protocol.c in next releases.
I can't entirely reuse protocol.c, because lighty modules are not using
sockets.
Let's explain a bit,
in lighty you have to use "chunckqueues", which are chains of memory
buffers/temp files.
You have to entirely encode the "in" chunckqueue to an "out" one , and
then the proxy_core send it to the backend server ( tora in this case).
Then, you decode the backend response form one chunckqueue to another,
and lighty send it the the client.
All of this is compatible with the tora protocol, except multipart
handling. I've find a way to make it works, but it's not perfect,
socket timeout can occurs because lighty needs to entirely parse the
multipart data before sending it to tora.
Then I'm thinking... "humm, nicolas is usually a brillant software
architect, and I like to transfert multipart data only if/when it's
needed, maybe light is wrong... let's see how nignx is dealing with
fastcgi and compare both implementations"
I've re-read lighty proxy sources code and read the ngnix modules guide
(http://emiller.info/nginx-modules-guide.html).
Nginx is strictly using a chain of small (4k) buffers, which are piped
along modules, seems cool ... but you can't talk to sockets, nginx
architecture do not allow it.
So, lighty and nginix both use buffers, not sockets, and do not allow
bidirectional transactions with backends, so handling multipart as you
do with apache do not seems possible (hope i'm wrong here, but just now
I don't think so)
I'm not sure I'm following your here.
Why exactly mod_tora for lighty or nginx cannot connect directly to the
tora host and use the protocol as mod_tora for Apache is doing ?
Best,
Nicolas
--
Neko : One VM to run them all
(http://nekovm.org)