Patch: Refactor ngx_http_write_request_body into a filter
Maxim Dounin
mdounin at mdounin.ru
Fri Jun 27 13:54:20 UTC 2014
Hello!
On Thu, Jun 26, 2014 at 10:07:55PM +0300, grrm grrm wrote:
> Hi!
>
> I managed to fix the write to disk issue, but as you said the code now
> looks quite convoluted. Those ifs are horrible. Understandably I
> guess, when you try to move logic from different places into one place
> but it still depends on external context (rb->buf). My patch was
> mostly a try to pave the way to non-buffered request body processing
> in way similar to the response processing pipeline where all the work
> is done by the filters.
>
> I saw this feature in the tengine fork of nginx, however there the
> work is still done by a handler similar to write_to_file. Also, all
> the body data need to be copied inside the memory at least one time,
> which is not good.
>
> I also looked at the repose pipeline and there are two main methods of
> reading from the client - the nonbuffered and ngx_event_pipe_t. Do you
> think the pipe could be used in reverse (client->upstream)? Or would
> it even make sense to do it that way?
In theory it should be possible to use event pipe in any
direction. But I don't think that it would be easy to
integrate it with various request body requirements.
> Also, do you have any work done into this direction (if you can
> comment on that)? Granted, my attempt was maybe too big a step.
I've previously posted an experimental patch which introduces an
ability to insert filters into request body chain, which can be
considered as a "work in this direction".
I think it should be implemented as another filter in
the request body filter chain. It will likely require various
modification to the request body reading code though.
--
Maxim Dounin
http://nginx.org/
More information about the nginx-devel
mailing list