On 23 Sep 2014, at 9:45 PM, Jim Jagielski <j...@jagunet.com> wrote:

> APR:
> Considering that before we know it, http/2.0 will
> be here, and ignoring httpd for the time being,
> what features/additions do we see as being needed
> to support http/2.0 from an APR library level? How do
> we compare w/ libuv, for example? How "event-aware"
> should APR be, ala libevent?
> 
> HTTPD:
> From the httpd point of view, what does serf
> provide for us to help us get to http/2.0? Should
> we make it a requirement? Are there things we
> need that, instead of making them part of httpd,
> should really be in APR instead? What other external
> libs should we be leveraging?

What I’ve been doing is attempting to solve the various issues around the 
filter stack and async support, the idea being that if the filter stack (and 
common modules like mod_ssl) can do async, then http/2.0 can follow easily.

From analysing the code it seems the attempt to do async support started last 
time at the first handler, when really it needs to start at the last filter 
(the network filter) and work backwards.

I intend to commit the async connection filter stack patch posted earlier in 
the next few days based on the work so far.

Thinking ahead to the request filter stack (the next bit going backwards, as 
opposed to the connection filter stack), the problem we have is the connection 
filter stack gets called with empty brigades and has the opportunity to clear 
data, but the request filter stack does not. What I had in mind was a special 
connection filter at the bottom of the stack whose job it is to “wake up” 
request filters that it is aware of when the connection filters are woken up. 
The trick is to keep track of the requests in flight, and removing them when 
EOR comes past. I think it is quite possible to make out filter stack 100% 
async pretty easily once this is done.

My shopping list from the MPMS:

- I want to be able to block for read / block for write on connections created 
by the MPM (can do)
- I want to be able to control the direction of read/write so when SSL reverses 
the sense it can do so (can do)
- I want to be able to mask a connection - ie put events to sleep for a period 
of time (can’t do, want it for rate control).
- I want to be able to add connections of my own (ie for mod_proxy, maybe we 
can do this?)

Regards,
Graham
—

Reply via email to