Re: Proxy: Handling Interim Responses

2007-10-02 Thread Joe Orton
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


Proxy: Handling Interim Responses

2007-10-01 Thread Nick Kew
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/