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)

Reply via email to