You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Nick Kew <ni...@webthing.com> on 2007/10/02 02:12:08 UTC

Proxy: Handling Interim Responses

RFC2616 mandates that a proxy MUST return interim (1xx)
responses to an HTTP/1.1 client, except where the proxy
itself requested the interim response.  I'd interpret
that slightly liberally, to mean we MUST return an interim
response if the Client has asked for one.

Our proxy currently eats all 1xx responses.  That's broken.
It could possibly have some bearing on that elusive PR 37770.

As I see it:
  (1) 100-Continue should be forwarded to the client if there's
      an Expect header asking for it.  If there isn't, then
      it really doesn't matter.
  (2) 101 Switching Protocols needs a framework to plug in a
      provider for switched protocols.  In the absence of one,
      we should instead return 502.  However, since we strip
      out any Upgrade request header, the question is only
      one of error-correction, and current behaviour is
      probably no worse.
  (3) Any other 1xx is unrecognised, and it's not clear
      to me whether it's best to return 502 or to forward
      the interim response.

I'm not sure how I should forward an interim response to
the client: suggestions welcome.

-- 
Nick Kew

Application Development with Apache - the Apache Modules Book
http://www.apachetutor.org/

Re: Proxy: Handling Interim Responses

Posted by Joe Orton <jo...@redhat.com>.
On Tue, Oct 02, 2007 at 01:12:08AM +0100, Nick Kew wrote:
> RFC2616 mandates that a proxy MUST return interim (1xx)
> responses to an HTTP/1.1 client, except where the proxy
> itself requested the interim response.  I'd interpret
> that slightly liberally, to mean we MUST return an interim
> response if the Client has asked for one.

Why the "interpretation"?  It's a MUST not a SHOULD.

> Our proxy currently eats all 1xx responses.  That's broken.
> It could possibly have some bearing on that elusive PR 37770.
> 
> As I see it:
>   (1) 100-Continue should be forwarded to the client if there's
>       an Expect header asking for it.  If there isn't, then
>       it really doesn't matter.

Again, it's a MUST where the client supports HTTP/1.1.  The proxy cannot 
know whether or not it "matters"; e.g. the 100 can prevent client I/O 
timeouts if response generation may take a long time.

>   (2) 101 Switching Protocols needs a framework to plug in a
>       provider for switched protocols.  In the absence of one,
>       we should instead return 502.  However, since we strip
>       out any Upgrade request header, the question is only
>       one of error-correction, and current behaviour is
>       probably no worse.

A 502 seems reasonable here.

>   (3) Any other 1xx is unrecognised, and it's not clear
>       to me whether it's best to return 502 or to forward
>       the interim response.

Again, MUST forward.

joe