On Mon, Dec 7, 2015 at 6:05 PM, William A Rowe Jr <wr...@rowe-clan.net>
wrote:

> On Mon, Dec 7, 2015 at 2:54 PM, Stefan Eissing <
> stefan.eiss...@greenbytes.de> wrote:
>
>> ok, after some more thinking. if a tls+http/1.1 upgrade together with
>> Expect is indeed a use case, then, to make that work, sending the 101 needs
>> to become the task of the switch protocol handler itself. Then the order in
>> which intermediate responses are sent depends on the switched protocol.
>>
>> When writing the current code, I wanted the common tasks in core. But if
>> that needs to vary, we need to shift that.
>>
>
> 100-continue should be simple enough to implement; we can even defer
> the 101-switching protocols until we determine that the chunked request
> body "fits in memory".  Roughly...
>
> 1. in the core protocol implementation, we determine that the provider
>     is willing, so far, based on a request body of known C-L body size
>     or of indeterminate length (no bytes read, chunked encoding)
>
> 2. we invoking a speculative connection filter read at the http protocol
>     to network layer - that http input filter sends the 100-continue where
>     it aught to be. That speculative read sets aside bytes read for later
>     consumption based on the buffer it is willing to offer.  The body has
>     been read complete from the network or is still in an incomplete
>     chunk (or would block waiting for the next chunk).
>

By 'speculative read' here, I mean a look-ahead read.


> 3. back in the core protocol implementation, if the http input filter still
>     must read from the network beyond it's small buffer, no upgrade is
>     realistically possible, then we fall out before processing the
> protocol
>     switch and proceed as http/1.1.
>
> 4. alternately, if the input filter read completely, the core protocol
>     implementation now sends the 101-switching protocols and lets
>     the protocol implementation determine whether it injects the
>     appropriate filters and resumes (e.g. tls), assumes authority
>     over the core request handling and protocol (e.g. h2c), or jumps
>     the shark entirely (e.g. echo) and has nothing more to do with
>     the request.
>
>
>

Reply via email to